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 {...@@ -2142,7 +2142,7 @@ pub const Inst = struct {
2142 ref_start_index = static_len,2142 ref_start_index = static_len,
2143 _,2143 _,
21442144
2145 pub const static_len = 100;2145 pub const static_len = 101;
21462146
2147 pub fn toRef(i: Index) Inst.Ref {2147 pub fn toRef(i: Index) Inst.Ref {
2148 return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i));2148 return @enumFromInt(@intFromEnum(Index.ref_start_index) + @intFromEnum(i));
...@@ -2248,6 +2248,7 @@ pub const Inst = struct {...@@ -2248,6 +2248,7 @@ pub const Inst = struct {
2248 vector_4_i64_type,2248 vector_4_i64_type,
2249 vector_2_u64_type,2249 vector_2_u64_type,
2250 vector_4_u64_type,2250 vector_4_u64_type,
2251 vector_2_u128_type,
2251 vector_4_f16_type,2252 vector_4_f16_type,
2252 vector_8_f16_type,2253 vector_8_f16_type,
2253 vector_2_f32_type,2254 vector_2_f32_type,
src/Air.zig+1
...@@ -1020,6 +1020,7 @@ pub const Inst = struct {...@@ -1020,6 +1020,7 @@ pub const Inst = struct {
1020 vector_4_i64_type = @intFromEnum(InternPool.Index.vector_4_i64_type),1020 vector_4_i64_type = @intFromEnum(InternPool.Index.vector_4_i64_type),
1021 vector_2_u64_type = @intFromEnum(InternPool.Index.vector_2_u64_type),1021 vector_2_u64_type = @intFromEnum(InternPool.Index.vector_2_u64_type),
1022 vector_4_u64_type = @intFromEnum(InternPool.Index.vector_4_u64_type),1022 vector_4_u64_type = @intFromEnum(InternPool.Index.vector_4_u64_type),
1023 vector_2_u128_type = @intFromEnum(InternPool.Index.vector_2_u128_type),
1023 vector_4_f16_type = @intFromEnum(InternPool.Index.vector_4_f16_type),1024 vector_4_f16_type = @intFromEnum(InternPool.Index.vector_4_f16_type),
1024 vector_8_f16_type = @intFromEnum(InternPool.Index.vector_8_f16_type),1025 vector_8_f16_type = @intFromEnum(InternPool.Index.vector_8_f16_type),
1025 vector_2_f32_type = @intFromEnum(InternPool.Index.vector_2_f32_type),1026 vector_2_f32_type = @intFromEnum(InternPool.Index.vector_2_f32_type),
src/InternPool.zig+5
...@@ -4595,6 +4595,7 @@ pub const Index = enum(u32) {...@@ -4595,6 +4595,7 @@ pub const Index = enum(u32) {
4595 vector_4_i64_type,4595 vector_4_i64_type,
4596 vector_2_u64_type,4596 vector_2_u64_type,
4597 vector_4_u64_type,4597 vector_4_u64_type,
4598 vector_2_u128_type,
4598 vector_4_f16_type,4599 vector_4_f16_type,
4599 vector_8_f16_type,4600 vector_8_f16_type,
4600 vector_2_f32_type,4601 vector_2_f32_type,
...@@ -5139,6 +5140,8 @@ pub const static_keys = [_]Key{...@@ -5139,6 +5140,8 @@ pub const static_keys = [_]Key{
5139 .{ .vector_type = .{ .len = 2, .child = .u64_type } },5140 .{ .vector_type = .{ .len = 2, .child = .u64_type } },
5140 // @Vector(8, u64)5141 // @Vector(8, u64)
5141 .{ .vector_type = .{ .len = 4, .child = .u64_type } },5142 .{ .vector_type = .{ .len = 4, .child = .u64_type } },
5143 // @Vector(2, u128)
5144 .{ .vector_type = .{ .len = 2, .child = .u128_type } },
5142 // @Vector(4, f16)5145 // @Vector(4, f16)
5143 .{ .vector_type = .{ .len = 4, .child = .f16_type } },5146 .{ .vector_type = .{ .len = 4, .child = .f16_type } },
5144 // @Vector(8, f16)5147 // @Vector(8, f16)
...@@ -11809,6 +11812,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {...@@ -11809,6 +11812,7 @@ pub fn typeOf(ip: *const InternPool, index: Index) Index {
11809 .vector_4_i64_type,11812 .vector_4_i64_type,
11810 .vector_2_u64_type,11813 .vector_2_u64_type,
11811 .vector_4_u64_type,11814 .vector_4_u64_type,
11815 .vector_2_u128_type,
11812 .vector_4_f16_type,11816 .vector_4_f16_type,
11813 .vector_8_f16_type,11817 .vector_8_f16_type,
11814 .vector_2_f32_type,11818 .vector_2_f32_type,
...@@ -12156,6 +12160,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId {...@@ -12156,6 +12160,7 @@ pub fn zigTypeTag(ip: *const InternPool, index: Index) std.builtin.TypeId {
12156 .vector_4_i64_type,12160 .vector_4_i64_type,
12157 .vector_2_u64_type,12161 .vector_2_u64_type,
12158 .vector_4_u64_type,12162 .vector_4_u64_type,
12163 .vector_2_u128_type,
12159 .vector_4_f16_type,12164 .vector_4_f16_type,
12160 .vector_8_f16_type,12165 .vector_8_f16_type,
12161 .vector_2_f32_type,12166 .vector_2_f32_type,
src/Sema.zig+1
...@@ -36540,6 +36540,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {...@@ -36540,6 +36540,7 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value {
36540 .vector_4_i64_type,36540 .vector_4_i64_type,
36541 .vector_2_u64_type,36541 .vector_2_u64_type,
36542 .vector_4_u64_type,36542 .vector_4_u64_type,
36543 .vector_2_u128_type,
36543 .vector_4_f16_type,36544 .vector_4_f16_type,
36544 .vector_8_f16_type,36545 .vector_8_f16_type,
36545 .vector_2_f32_type,36546 .vector_2_f32_type,
src/Type.zig+1
...@@ -4119,6 +4119,7 @@ pub const vector_2_i64: Type = .{ .ip_index = .vector_2_i64_type };...@@ -4119,6 +4119,7 @@ pub const vector_2_i64: Type = .{ .ip_index = .vector_2_i64_type };
4119pub const vector_4_i64: Type = .{ .ip_index = .vector_4_i64_type };4119pub const vector_4_i64: Type = .{ .ip_index = .vector_4_i64_type };
4120pub const vector_2_u64: Type = .{ .ip_index = .vector_2_u64_type };4120pub const vector_2_u64: Type = .{ .ip_index = .vector_2_u64_type };
4121pub const vector_4_u64: Type = .{ .ip_index = .vector_4_u64_type };4121pub const vector_4_u64: Type = .{ .ip_index = .vector_4_u64_type };
4122pub const vector_2_u128: Type = .{ .ip_index = .vector_2_u128_type };
4122pub const vector_4_f16: Type = .{ .ip_index = .vector_4_f16_type };4123pub const vector_4_f16: Type = .{ .ip_index = .vector_4_f16_type };
4123pub const vector_8_f16: Type = .{ .ip_index = .vector_8_f16_type };4124pub const vector_8_f16: Type = .{ .ip_index = .vector_8_f16_type };
4124pub const vector_2_f32: Type = .{ .ip_index = .vector_2_f32_type };4125pub 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 {...@@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2408}2408}
24092409
2410fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2410fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2411 @setEvalBranchQuota(20_000);2411 @setEvalBranchQuota(20_200);
2412 const pt = cg.pt;2412 const pt = cg.pt;
2413 const zcu = pt.zcu;2413 const zcu = pt.zcu;
2414 const ip = &zcu.intern_pool;2414 const ip = &zcu.intern_pool;
...@@ -2444,9 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2444,9 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2444 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);2444 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
2445 switch (air_tags[@intFromEnum(inst)]) {2445 switch (air_tags[@intFromEnum(inst)]) {
2446 // zig fmt: off2446 // zig fmt: off
2447 .bitcast => try cg.airBitCast(inst),
2448
2449 .splat => try cg.airSplat(inst),
2450 .select => try cg.airSelect(inst),2447 .select => try cg.airSelect(inst),
2451 .shuffle => try cg.airShuffle(inst),2448 .shuffle => try cg.airShuffle(inst),
2452 .reduce => try cg.airReduce(inst),2449 .reduce => try cg.airReduce(inst),
...@@ -14818,6 +14815,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -14818,6 +14815,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
14818 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{14815 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
14819 .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any },14816 .src_constraints = .{ .{ .exact_int = 1 }, .{ .exact_int = 1 }, .any },
14820 .patterns = &.{14817 .patterns = &.{
14818 .{ .src = .{ .mut_mem, .{ .imm = 0 }, .none } },
14821 .{ .src = .{ .to_mut_gpr, .{ .imm = 0 }, .none } },14819 .{ .src = .{ .to_mut_gpr, .{ .imm = 0 }, .none } },
14822 },14820 },
14823 .dst_temps = .{ .{ .ref = .src0 }, .unused },14821 .dst_temps = .{ .{ .ref = .src0 }, .unused },
...@@ -58735,6 +58733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -58735,6 +58733,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58735 }, .{58733 }, .{
58736 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },58734 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
58737 .patterns = &.{58735 .patterns = &.{
58736 .{ .src = .{ .mut_mem, .none, .none } },
58738 .{ .src = .{ .to_mut_gpr, .none, .none } },58737 .{ .src = .{ .to_mut_gpr, .none, .none } },
58739 },58738 },
58740 .dst_temps = .{ .{ .ref = .src0 }, .unused },58739 .dst_temps = .{ .{ .ref = .src0 }, .unused },
...@@ -63194,7 +63193,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -63194,7 +63193,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
63194 } },63193 } },
63195 }, .{63194 }, .{
63196 .required_features = .{ .sse, null, null, null },63195 .required_features = .{ .sse, null, null, null },
63197 .src_constraints = .{ .{ .vec = .xword }, .any, .any },63196 .src_constraints = .{ .{ .unsigned_int_vec = .xword }, .any, .any },
63198 .patterns = &.{63197 .patterns = &.{
63199 .{ .src = .{ .to_mut_xmm, .none, .none } },63198 .{ .src = .{ .to_mut_xmm, .none, .none } },
63200 },63199 },
...@@ -63348,14 +63347,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -63348,14 +63347,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
63348 } }) catch |err| switch (err) {63347 } }) catch |err| switch (err) {
63349 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{63348 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
63350 @tagName(air_tag),63349 @tagName(air_tag),
63351 cg.typeOf(ty_op.operand).fmt(pt),63350 ty_op.ty.toType().fmt(pt),
63352 ops[0].tracking(cg),63351 ops[0].tracking(cg),
63353 }),63352 }),
63354 else => |e| return e,63353 else => |e| return e,
63355 };63354 };
63356 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);63355 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
63357 },63356 },
6335863357 .bitcast => try cg.airBitCast(inst),
63359 .block => {63358 .block => {
63360 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;63359 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;
63361 const extra = cg.air.extraData(Air.Block, ty_pl.payload);63360 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 {...@@ -71582,7077 +71581,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71582 };71581 };
71583 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);71582 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
71584 },71583 },
7158571584 .sqrt => |air_tag| if (use_old) try cg.airSqrt(inst) else {
71586 .cmp_vector, .cmp_vector_optimized => |air_tag| if (use_old) try cg.airCmpVector(inst) else fallback: {71585 const un_op = air_datas[@intFromEnum(inst)].un_op;
71587 const ty_pl = air_datas[@intFromEnum(inst)].ty_pl;71586 var ops = try cg.tempsFromOperands(inst, .{un_op});
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});
78656 var res: [1]Temp = undefined;71587 var res: [1]Temp = undefined;
78657 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{71588 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{
78658 .required_features = .{ .f16c, null, null, null },71589 .required_features = .{ .f16c, null, null, null },
...@@ -82366,15 +75297,465 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -82366,15 +75297,465 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
82366 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },75297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82367 } },75298 } },
82368 }, .{75299 }, .{
82369 .required_features = .{ .sse4_1, null, null, null },75300 .required_features = .{ .sse4_1, null, null, null },
82370 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },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 },
82371 .patterns = &.{75746 .patterns = &.{
82372 .{ .src = .{ .to_mem, .none, .none } },75747 .{ .src = .{ .to_mem, .none, .none } },
82373 },75748 },
75749 .call_frame = .{ .alignment = .@"16" },
82374 .extra_temps = .{75750 .extra_temps = .{
82375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },75751 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82376 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },75752 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
82377 .unused,75753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
75754 else => unreachable,
75755 .down => "floorq",
75756 .up => "ceilq",
75757 .zero => "truncq",
75758 } } } },
82378 .unused,75759 .unused,
82379 .unused,75760 .unused,
82380 .unused,75761 .unused,
...@@ -82385,1052 +75766,7256 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -82385,1052 +75766,7256 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
82385 .unused,75766 .unused,
82386 },75767 },
82387 .dst_temps = .{ .mem, .unused },75768 .dst_temps = .{ .mem, .unused },
82388 .clobbers = .{ .eflags = true },75769 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
82389 .each = .{ .once = &.{75770 .each = .{ .once = &.{
82390 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },75771 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
82391 .{ .@"0:", ._pd, .round, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), .rm(.{75772 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
82392 .direction = direction,75773 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
82393 .precision = .inexact,75774 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82394 }), ._ },
82395 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
82396 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },75775 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82397 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },75776 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82398 } },75777 } },
82399 }, .{75778 } },
82400 .required_features = .{ .avx, null, null, null },75779 }) catch |err| switch (err) {
82401 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },75780 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
82402 .patterns = &.{75781 @tagName(air_tag),
82403 .{ .src = .{ .to_mem, .none, .none } },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 }},
82404 },76828 },
82405 .call_frame = .{ .alignment = .@"16" },76829 ) catch |err| switch (err) {
82406 .extra_temps = .{76830 error.SelectFailed => unreachable,
82407 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },76831 else => |e| return e,
82408 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },76832 };
82409 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82410 else => unreachable,79873 else => unreachable,
82411 .down => "floor",79874 .e => &.{
82412 .up => "ceil",79875 .{ ._, ._, .xor, .dst0b, .src1b, ._, ._ },
82413 .zero => "trunc",79876 .{ ._, ._, .not, .dst0b, ._, ._, ._ },
82414 } } } },79877 },
82415 .unused,79878 .ne => &.{
82416 .unused,79879 .{ ._, ._, .xor, .dst0b, .src1b, ._, ._ },
82417 .unused,79880 },
82418 .unused,79881 } },
82419 .unused,79882 }, .{
82420 .unused,79883 .src_constraints = .{ .{ .bool_vec = .word }, .{ .bool_vec = .word }, .any },
82421 .unused,79884 .patterns = &.{
82422 .unused,79885 .{ .src = .{ .mut_mem, .imm16, .none } },
82423 },79886 .{ .src = .{ .imm16, .mut_mem, .none }, .commute = .{ 0, 1 } },
82424 .dst_temps = .{ .mem, .unused },79887 .{ .src = .{ .to_mut_gpr, .imm16, .none } },
82425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },79888 .{ .src = .{ .imm16, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
82426 .each = .{ .once = &.{79889 .{ .src = .{ .mut_mem, .to_gpr, .none } },
82427 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },79890 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
82428 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },79891 .{ .src = .{ .to_mut_gpr, .mem, .none } },
82429 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },79892 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
82430 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },79893 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
82431 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },79894 },
82432 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },79895 .dst_temps = .{ .{ .ref = .src0 }, .unused },
82433 } },79896 .clobbers = .{ .eflags = true },
82434 }, .{79897 .each = .{ .once = switch (cc) {
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) {
82445 else => unreachable,79898 else => unreachable,
82446 .down => "floor",79899 .e => &.{
82447 .up => "ceil",79900 .{ ._, ._, .xor, .dst0w, .src1w, ._, ._ },
82448 .zero => "trunc",79901 .{ ._, ._, .not, .dst0w, ._, ._, ._ },
82449 } } } },79902 },
82450 .unused,79903 .ne => &.{
82451 .unused,79904 .{ ._, ._, .xor, .dst0w, .src1w, ._, ._ },
82452 .unused,79905 },
82453 .unused,79906 } },
82454 .unused,79907 }, .{
82455 .unused,79908 .src_constraints = .{ .{ .bool_vec = .dword }, .{ .bool_vec = .dword }, .any },
82456 .unused,79909 .patterns = &.{
82457 .unused,79910 .{ .src = .{ .mut_mem, .imm32, .none } },
82458 },79911 .{ .src = .{ .imm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
82459 .dst_temps = .{ .mem, .unused },79912 .{ .src = .{ .to_mut_gpr, .imm32, .none } },
82460 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },79913 .{ .src = .{ .imm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
82461 .each = .{ .once = &.{79914 .{ .src = .{ .mut_mem, .to_gpr, .none } },
82462 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },79915 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
82463 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },79916 .{ .src = .{ .to_mut_gpr, .mem, .none } },
82464 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },79917 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
82465 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },79918 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
82466 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },79919 },
82467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },79920 .dst_temps = .{ .{ .ref = .src0 }, .unused },
82468 } },79921 .clobbers = .{ .eflags = true },
82469 }, .{79922 .each = .{ .once = switch (cc) {
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) {
82480 else => unreachable,79923 else => unreachable,
82481 .down => "floor",79924 .e => &.{
82482 .up => "ceil",79925 .{ ._, ._, .xor, .dst0d, .src1d, ._, ._ },
82483 .zero => "trunc",79926 .{ ._, ._, .not, .dst0d, ._, ._, ._ },
82484 } } } },79927 },
82485 .unused,79928 .ne => &.{
82486 .unused,79929 .{ ._, ._, .xor, .dst0d, .src1d, ._, ._ },
82487 .unused,79930 },
82488 .unused,79931 } },
82489 .unused,79932 }, .{
82490 .unused,79933 .required_features = .{ .@"64bit", null, null, null },
82491 .unused,79934 .src_constraints = .{ .{ .bool_vec = .qword }, .{ .bool_vec = .qword }, .any },
82492 .unused,79935 .patterns = &.{
82493 },79936 .{ .src = .{ .mut_mem, .simm32, .none } },
82494 .dst_temps = .{ .mem, .unused },79937 .{ .src = .{ .simm32, .mut_mem, .none }, .commute = .{ 0, 1 } },
82495 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },79938 .{ .src = .{ .to_mut_gpr, .simm32, .none } },
82496 .each = .{ .once = &.{79939 .{ .src = .{ .simm32, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
82497 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },79940 .{ .src = .{ .mut_mem, .to_gpr, .none } },
82498 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },79941 .{ .src = .{ .to_gpr, .mut_mem, .none }, .commute = .{ 0, 1 } },
82499 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },79942 .{ .src = .{ .to_mut_gpr, .mem, .none } },
82500 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },79943 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
82501 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },79944 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
82502 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },79945 },
82503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },79946 .dst_temps = .{ .{ .ref = .src0 }, .unused },
82504 } },79947 .clobbers = .{ .eflags = true },
82505 }, .{79948 .each = .{ .once = switch (cc) {
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) {
82516 else => unreachable,79949 else => unreachable,
82517 .down => "__floorx",79950 .e => &.{
82518 .up => "__ceilx",79951 .{ ._, ._, .xor, .dst0q, .src1q, ._, ._ },
82519 .zero => "__truncx",79952 .{ ._, ._, .not, .dst0q, ._, ._, ._ },
82520 } } } },79953 },
82521 .unused,79954 .ne => &.{
82522 .unused,79955 .{ ._, ._, .xor, .dst0q, .src1q, ._, ._ },
82523 .unused,79956 },
82524 .unused,79957 } },
82525 .unused,79958 }, .{
82526 .unused,79959 .src_constraints = .{ .any_bool_vec, .any_bool_vec, .any },
82527 .unused,79960 .patterns = &.{
82528 .unused,79961 .{ .src = .{ .to_mem, .to_mem, .none } },
82529 },79962 },
82530 .dst_temps = .{ .{ .reg = .st0 }, .unused },79963 .extra_temps = .{
82531 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },79964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82532 .each = .{ .once = &.{79965 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
82533 .{ ._, .v_dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },79966 .unused,
82534 .{ ._, .v_dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },79967 .unused,
82535 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },79968 .unused,
82536 } },79969 .unused,
82537 }, .{79970 .unused,
82538 .required_features = .{ .sse2, .x87, null, null },79971 .unused,
82539 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },79972 .unused,
82540 .patterns = &.{79973 .unused,
82541 .{ .src = .{ .to_mem, .none, .none } },79974 .unused,
82542 },79975 },
82543 .call_frame = .{ .size = 16, .alignment = .@"16" },79976 .dst_temps = .{ .mem, .unused },
82544 .extra_temps = .{79977 .clobbers = .{ .eflags = true },
82545 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },79978 .each = .{ .once = switch (cc) {
82546 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
82547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {
82548 else => unreachable,79979 else => unreachable,
82549 .down => "__floorx",79980 .e => &.{
82550 .up => "__ceilx",79981 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82551 .zero => "__truncx",79982 .{ .@"0:", ._, .mov, .tmp1p, .memia(.src0p, .tmp0, .add_size), ._, ._ },
82552 } } } },79983 .{ ._, ._, .xor, .tmp1p, .memia(.src1p, .tmp0, .add_size), ._, ._ },
82553 .unused,79984 .{ ._, ._, .not, .tmp1p, ._, ._, ._ },
82554 .unused,79985 .{ ._, ._, .mov, .memia(.dst0p, .tmp0, .add_size), .tmp1p, ._, ._ },
82555 .unused,79986 .{ ._, ._, .add, .tmp0p, .sa(.tmp1, .add_size), ._, ._ },
82556 .unused,79987 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82557 .unused,79988 },
82558 .unused,79989 .ne => &.{
82559 .unused,79990 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82560 .unused,79991 .{ .@"0:", ._, .mov, .tmp1p, .memia(.src0p, .tmp0, .add_size), ._, ._ },
82561 },79992 .{ ._, ._, .xor, .tmp1p, .memia(.src1p, .tmp0, .add_size), ._, ._ },
82562 .dst_temps = .{ .{ .reg = .st0 }, .unused },79993 .{ ._, ._, .mov, .memia(.dst0p, .tmp0, .add_size), .tmp1p, ._, ._ },
82563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },79994 .{ ._, ._, .add, .tmp0p, .sa(.tmp1, .add_size), ._, ._ },
82564 .each = .{ .once = &.{79995 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82565 .{ ._, ._dqa, .mov, .tmp0x, .mem(.src0x), ._, ._ },79996 },
82566 .{ ._, ._dqa, .mov, .mem(.tmp1x), .tmp0x, ._, ._ },79997 } },
82567 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },79998 }, .{
82568 } },79999 .required_features = .{ .avx, null, null, null },
82569 }, .{80000 .src_constraints = .{
82570 .required_features = .{ .sse, .x87, null, null },80001 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
82571 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },80002 .{ .scalar_int = .{ .of = .xword, .is = .byte } },
82572 .patterns = &.{80003 .any,
82573 .{ .src = .{ .to_mem, .none, .none } },80004 },
82574 },80005 .patterns = &.{
82575 .call_frame = .{ .size = 16, .alignment = .@"16" },80006 .{ .src = .{ .to_sse, .mem, .none } },
82576 .extra_temps = .{80007 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },
82577 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },80008 .{ .src = .{ .to_sse, .to_sse, .none } },
82578 .{ .type = .f80, .kind = .{ .frame = .call_frame } },80009 },
82579 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82580 else => unreachable,80380 else => unreachable,
82581 .down => "__floorx",80381 .e => &.{
82582 .up => "__ceilx",80382 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82583 .zero => "__truncx",80383 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82584 } } } },80384 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
82585 .unused,80385 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
82586 .unused,80386 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
82587 .unused,80387 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
82588 .unused,80388 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
82589 .unused,80389 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
82590 .unused,80390 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82591 .unused,80391 },
82592 .unused,80392 .ne => &.{
82593 },80393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82594 .dst_temps = .{ .{ .reg = .st0 }, .unused },80394 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82595 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80395 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
82596 .each = .{ .once = &.{80396 .{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
82597 .{ ._, ._ps, .mova, .tmp0x, .mem(.src0x), ._, ._ },80397 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
82598 .{ ._, ._ps, .mova, .mem(.tmp1x), .tmp0x, ._, ._ },80398 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
82599 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },80399 .{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
82600 } },80400 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
82601 }, .{80401 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
82602 .required_features = .{ .avx, .x87, null, null },80402 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82603 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },80403 },
82604 .patterns = &.{80404 } },
82605 .{ .src = .{ .to_mem, .none, .none } },80405 }, .{
82606 },80406 .required_features = .{ .avx2, null, null, null },
82607 .call_frame = .{ .size = 16, .alignment = .@"16" },80407 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
82608 .extra_temps = .{80408 .patterns = &.{
82609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },80409 .{ .src = .{ .to_mem, .to_mem, .none } },
82610 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },80410 },
82611 .{ .type = .f80, .kind = .{ .frame = .call_frame } },80411 .extra_temps = .{
82612 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82613 else => unreachable,80427 else => unreachable,
82614 .down => "__floorx",80428 .e => &.{
82615 .up => "__ceilx",80429 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82616 .zero => "__truncx",80430 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82617 } } } },80431 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
82618 .unused,80432 .{ ._, .vp_w, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
82619 .unused,80433 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
82620 .unused,80434 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
82621 .unused,80435 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
82622 .unused,80436 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82623 .unused,80437 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
82624 .unused,80438 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82625 },80439 },
82626 .dst_temps = .{ .mem, .unused },80440 .ne => &.{
82627 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80441 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82628 .each = .{ .once = &.{80442 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82629 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },80443 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
82630 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },80444 .{ ._, .vp_w, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
82631 .{ ._, .v_dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },80445 .{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
82632 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },80446 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
82633 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },80447 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
82634 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },80448 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
82635 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },80449 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82636 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },80450 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
82637 } },80451 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82638 }, .{80452 },
82639 .required_features = .{ .sse2, .x87, null, null },80453 } },
82640 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },80454 }, .{
82641 .patterns = &.{80455 .required_features = .{ .avx2, null, null, null },
82642 .{ .src = .{ .to_mem, .none, .none } },80456 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
82643 },80457 .patterns = &.{
82644 .call_frame = .{ .size = 16, .alignment = .@"16" },80458 .{ .src = .{ .to_mem, .to_mem, .none } },
82645 .extra_temps = .{80459 },
82646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },80460 .extra_temps = .{
82647 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },80461 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82648 .{ .type = .f80, .kind = .{ .frame = .call_frame } },80462 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82650 else => unreachable,80476 else => unreachable,
82651 .down => "__floorx",80477 .e => &.{
82652 .up => "__ceilx",80478 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82653 .zero => "__truncx",80479 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82654 } } } },80480 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
82655 .unused,80481 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
82656 .unused,80482 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
82657 .unused,80483 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82658 .unused,80484 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
82659 .unused,80485 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
82660 .unused,80486 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82661 .unused,80487 },
82662 },80488 .ne => &.{
82663 .dst_temps = .{ .mem, .unused },80489 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80490 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82665 .each = .{ .once = &.{80491 .{ .@"0:", .v_dqu, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
82666 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },80492 .{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
82667 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },80493 .{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
82668 .{ ._, ._dqa, .mov, .mem(.tmp2x), .tmp1x, ._, ._ },80494 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
82669 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },80495 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82670 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },80496 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
82671 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },80497 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
82672 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },80498 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },80499 },
82674 } },80500 } },
82675 }, .{80501 }, .{
82676 .required_features = .{ .sse, .x87, null, null },80502 .required_features = .{ .avx2, null, null, null },
82677 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },80503 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
82678 .patterns = &.{80504 .patterns = &.{
82679 .{ .src = .{ .to_mem, .none, .none } },80505 .{ .src = .{ .to_mem, .to_mem, .none } },
82680 },80506 },
82681 .call_frame = .{ .size = 16, .alignment = .@"16" },80507 .extra_temps = .{
82682 .extra_temps = .{80508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82683 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },80509 .{ .type = .u32, .kind = .{ .reg = .rcx } },
82684 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },80510 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82685 .{ .type = .f80, .kind = .{ .frame = .call_frame } },80511 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82687 else => unreachable,80641 else => unreachable,
82688 .down => "__floorx",80642 .e => &.{
82689 .up => "__ceilx",80643 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82690 .zero => "__truncx",80644 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82691 } } } },80645 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82692 .unused,80646 .{ ._, .vp_w, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
82693 .unused,80647 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
82694 .unused,80648 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
82695 .unused,80649 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82696 .unused,80650 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
82697 .unused,80651 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82698 .unused,80652 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82699 },80653 },
82700 .dst_temps = .{ .mem, .unused },80654 .ne => &.{
82701 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80655 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82702 .each = .{ .once = &.{80656 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82703 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },80657 .{ .@"0:", .v_dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82704 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },80658 .{ ._, .vp_w, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
82705 .{ ._, ._ps, .mova, .mem(.tmp2x), .tmp1x, ._, ._ },80659 .{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
82706 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },80660 .{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
82707 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },80661 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
82708 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },80662 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82709 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },80663 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
82710 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },80664 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82711 } },80665 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82712 }, .{80666 },
82713 .required_features = .{ .sse, null, null, null },80667 } },
82714 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },80668 }, .{
82715 .patterns = &.{80669 .required_features = .{ .avx, null, null, null },
82716 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },80670 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
82717 },80671 .patterns = &.{
82718 .call_frame = .{ .alignment = .@"16" },80672 .{ .src = .{ .to_mem, .to_mem, .none } },
82719 .extra_temps = .{80673 },
82720 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82721 else => unreachable,80690 else => unreachable,
82722 .down => "floorq",80691 .e => &.{
82723 .up => "ceilq",80692 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82724 .zero => "truncq",80693 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82725 } } } },80694 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82726 .unused,80695 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82727 .unused,80696 .{ ._, .vp_d, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
82728 .unused,80697 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82729 .unused,80698 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82730 .unused,80699 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82731 .unused,80700 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
82732 .unused,80701 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82733 .unused,80702 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82734 .unused,80703 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
82735 .unused,80704 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
82736 },80705 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
82737 .dst_temps = .{ .{ .ref = .src0 }, .unused },80706 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80707 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
82739 .each = .{ .once = &.{80708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82740 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },80709 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82741 } },80710 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82742 }, .{80711 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
82743 .required_features = .{ .avx, null, null, null },80712 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82744 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },80713 },
82745 .patterns = &.{80714 .ne => &.{
82746 .{ .src = .{ .to_mem, .none, .none } },80715 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82747 },80716 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82748 .call_frame = .{ .alignment = .@"16" },80717 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82749 .extra_temps = .{80718 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },80719 .{ ._, .vp_d, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
82751 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80720 .{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82752 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82753 else => unreachable,80761 else => unreachable,
82754 .down => "floorq",80762 .e => &.{
82755 .up => "ceilq",80763 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82756 .zero => "truncq",80764 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82757 } } } },80765 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82758 .unused,80766 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82759 .unused,80767 .{ ._, .vp_q, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
82760 .unused,80768 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82761 .unused,80769 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82762 .unused,80770 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82763 .unused,80771 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82764 .unused,80772 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82765 .unused,80773 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82766 },80774 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
82767 .dst_temps = .{ .mem, .unused },80775 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
82768 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80776 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
82769 .each = .{ .once = &.{80777 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82770 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },80778 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
82771 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },80779 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82772 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },80780 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82773 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },80781 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82774 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },80782 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
82775 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },80783 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82776 } },80784 },
82777 }, .{80785 .ne => &.{
82778 .required_features = .{ .sse2, null, null, null },80786 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82779 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },80787 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82780 .patterns = &.{80788 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82781 .{ .src = .{ .to_mem, .none, .none } },80789 .{ .@"0:", .v_dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82782 },80790 .{ ._, .vp_q, .cmpeq, .tmp4x, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._ },
82783 .call_frame = .{ .alignment = .@"16" },80791 .{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82784 .extra_temps = .{80792 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
82785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },80793 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82786 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80794 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82788 else => unreachable,80832 else => unreachable,
82789 .down => "floorq",80833 .e => &.{
82790 .up => "ceilq",80834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82791 .zero => "truncq",80835 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82792 } } } },80836 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82793 .unused,80837 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82794 .unused,80838 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
82795 .unused,80839 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
82796 .unused,80840 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82797 .unused,80841 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82798 .unused,80842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82799 .unused,80843 },
82800 .unused,80844 .ne => &.{
82801 },80845 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82802 .dst_temps = .{ .mem, .unused },80846 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82803 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80847 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82804 .each = .{ .once = &.{80848 .{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82805 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },80849 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
82806 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },80850 .{ ._, ._, .not, .tmp2d, ._, ._, ._ },
82807 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },80851 .{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
82808 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },80852 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82809 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },80853 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82810 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },80854 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82811 } },80855 },
82812 }, .{80856 } },
82813 .required_features = .{ .sse, null, null, null },80857 }, .{
82814 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },80858 .required_features = .{ .sse2, null, null, null },
82815 .patterns = &.{80859 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
82816 .{ .src = .{ .to_mem, .none, .none } },80860 .patterns = &.{
82817 },80861 .{ .src = .{ .to_mem, .to_mem, .none } },
82818 .call_frame = .{ .alignment = .@"16" },80862 },
82819 .extra_temps = .{80863 .extra_temps = .{
82820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },80864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82821 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },80865 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
82822 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = switch (direction) {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) {
82823 else => unreachable,80879 else => unreachable,
82824 .down => "floorq",80880 .e => &.{
82825 .up => "ceilq",80881 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82826 .zero => "truncq",80882 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82827 } } } },80883 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82828 .unused,80884 .{ ._, .p_w, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82829 .unused,80885 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
82830 .unused,80886 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
82831 .unused,80887 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82832 .unused,80888 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
82833 .unused,80889 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82834 .unused,80890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82835 .unused,80891 },
82836 },80892 .ne => &.{
82837 .dst_temps = .{ .mem, .unused },80893 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82838 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },80894 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82839 .each = .{ .once = &.{80895 .{ .@"0:", ._dqu, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82840 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },80896 .{ ._, .p_w, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82841 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },80897 .{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
82842 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },80898 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
82843 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },80899 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
82844 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },80900 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82845 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },80901 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
82846 } },80902 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
82847 } },80903 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82848 }) catch |err| switch (err) {80904 },
82849 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{80905 } },
82850 @tagName(air_tag),80906 }, .{
82851 cg.typeOf(un_op).fmt(pt),80907 .required_features = .{ .sse2, null, null, null },
82852 ops[0].tracking(cg),80908 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
82853 }),80909 .patterns = &.{
82854 else => |e| return e,80910 .{ .src = .{ .to_mem, .to_mem, .none } },
82855 };80911 },
82856 try res[0].finish(inst, &.{un_op}, &ops, cg);80912 .extra_temps = .{
82857 },80913 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82858 .neg, .neg_optimized => |air_tag| if (use_old) try cg.airFloatSign(inst, .neg) else {80914 .{ .type = .u32, .kind = .{ .reg = .rcx } },
82859 const un_op = air_datas[@intFromEnum(inst)].un_op;80915 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82860 var ops = try cg.tempsFromOperands(inst, .{un_op});80916 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82861 var res: [1]Temp = undefined;80917 .{ .kind = .{ .rc = .sse } },
82862 cg.select(&res, &.{cg.typeOf(un_op)}, &ops, comptime &.{ .{80918 .unused,
82863 .required_features = .{ .avx, null, null, null },80919 .unused,
82864 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },80920 .unused,
82865 .patterns = &.{80921 .unused,
82866 .{ .src = .{ .to_sse, .none, .none } },80922 .unused,
82867 },80923 .unused,
82868 .extra_temps = .{80924 },
82869 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },80925 .dst_temps = .{ .mem, .unused },
82870 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },80926 .clobbers = .{ .eflags = true },
82871 .unused,80927 .each = .{ .once = switch (cc) {
82872 .unused,80928 else => unreachable,
82873 .unused,80929 .e => &.{
82874 .unused,80930 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82875 .unused,80931 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82876 .unused,80932 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82877 .unused,80933 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82878 .unused,80934 .{ ._, .p_d, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82879 .unused,80935 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82880 },80936 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82881 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },80937 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82882 .each = .{ .once = &.{80938 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
82883 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },80939 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82884 .{ ._, .v_ps, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },80940 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82885 } },80941 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
82886 }, .{80942 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
82887 .required_features = .{ .sse, null, null, null },80943 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
82888 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },80944 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82889 .patterns = &.{80945 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
82890 .{ .src = .{ .to_mut_sse, .none, .none } },80946 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82891 },80947 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82892 .extra_temps = .{80948 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82893 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },80949 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
82894 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },80950 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82895 .unused,80951 },
82896 .unused,80952 .ne => &.{
82897 .unused,80953 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82898 .unused,80954 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82899 .unused,80955 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82900 .unused,80956 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82901 .unused,80957 .{ ._, .p_d, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82902 .unused,80958 .{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82903 .unused,80959 .{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
82904 },80960 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82905 .dst_temps = .{ .{ .ref = .src0 }, .unused },80961 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82906 .each = .{ .once = &.{80962 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
82907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },80963 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82908 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },80964 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82909 } },80965 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
82910 }, .{80966 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
82911 .required_features = .{ .avx, null, null, null },80967 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
82912 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },80968 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82913 .patterns = &.{80969 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
82914 .{ .src = .{ .to_sse, .none, .none } },80970 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82915 },80971 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82916 .extra_temps = .{80972 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82917 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },80973 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
82918 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },80974 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82919 .unused,80975 },
82920 .unused,80976 } },
82921 .unused,80977 }, .{
82922 .unused,80978 .required_features = .{ .sse4_1, null, null, null },
82923 .unused,80979 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
82924 .unused,80980 .patterns = &.{
82925 .unused,80981 .{ .src = .{ .to_mem, .to_mem, .none } },
82926 .unused,80982 },
82927 .unused,80983 .extra_temps = .{
82928 },80984 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
82929 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },80985 .{ .type = .u32, .kind = .{ .reg = .rcx } },
82930 .each = .{ .once = &.{80986 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82931 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },80987 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
82932 .{ ._, .v_ps, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },80988 .{ .kind = .{ .rc = .sse } },
82933 } },80989 .unused,
82934 }, .{80990 .unused,
82935 .required_features = .{ .avx, null, null, null },80991 .unused,
82936 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },80992 .unused,
82937 .patterns = &.{80993 .unused,
82938 .{ .src = .{ .to_sse, .none, .none } },80994 .unused,
82939 },80995 },
82940 .extra_temps = .{80996 .dst_temps = .{ .mem, .unused },
82941 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },80997 .clobbers = .{ .eflags = true },
82942 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },80998 .each = .{ .once = switch (cc) {
82943 .unused,80999 else => unreachable,
82944 .unused,81000 .e => &.{
82945 .unused,81001 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82946 .unused,81002 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82947 .unused,81003 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82948 .unused,81004 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82949 .unused,81005 .{ ._, .p_q, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82950 .unused,81006 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82951 .unused,81007 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82952 },81008 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82953 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },81009 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82954 .each = .{ .once = &.{81010 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82955 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81011 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82956 .{ ._, .v_pd, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },81012 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
82957 } },81013 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
82958 }, .{81014 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
82959 .required_features = .{ .sse2, null, null, null },81015 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82960 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },81016 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
82961 .patterns = &.{81017 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82962 .{ .src = .{ .to_mut_sse, .none, .none } },81018 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82963 },81019 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82964 .extra_temps = .{81020 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
82965 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81021 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82966 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81022 },
82967 .unused,81023 .ne => &.{
82968 .unused,81024 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
82969 .unused,81025 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
82970 .unused,81026 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82971 .unused,81027 .{ .@"0:", ._dqu, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
82972 .unused,81028 .{ ._, .p_q, .cmpeq, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
82973 .unused,81029 .{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
82974 .unused,81030 .{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
82975 .unused,81031 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
82976 },81032 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
82977 .dst_temps = .{ .{ .ref = .src0 }, .unused },81033 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
82978 .each = .{ .once = &.{81034 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82979 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81035 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
82980 .{ ._, ._pd, .xor, .dst0x, .lea(.tmp0x), ._, ._ },81036 .{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
82981 } },81037 .{ ._, ._r, .sh, .tmp3d, .ui(3), ._, ._ },
82982 }, .{81038 .{ ._, ._, .mov, .memid(.dst0b, .tmp3, -1), .tmp2b, ._, ._ },
82983 .required_features = .{ .avx, null, null, null },81039 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
82984 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },81040 .{ .@"1:", ._, .add, .tmp0p, .si(16), ._, ._ },
82985 .patterns = &.{81041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
82986 .{ .src = .{ .to_sse, .none, .none } },81042 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
82987 },81043 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
82988 .extra_temps = .{81044 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
82989 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81045 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
82990 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81046 },
82991 .unused,81047 } },
82992 .unused,81048 }, .{
82993 .unused,81049 .required_features = .{ .sse, .mmx, null, null },
82994 .unused,81050 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
82995 .unused,81051 .patterns = &.{
82996 .unused,81052 .{ .src = .{ .to_mem, .to_mem, .none } },
82997 .unused,81053 },
82998 .unused,81054 .extra_temps = .{
82999 .unused,81055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83000 },81056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83001 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },81057 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83002 .each = .{ .once = &.{81058 .{ .kind = .{ .rc = .mmx } },
83003 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81059 .unused,
83004 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },81060 .unused,
83005 } },81061 .unused,
83006 }, .{81062 .unused,
83007 .required_features = .{ .x87, null, null, null },81063 .unused,
83008 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },81064 .unused,
83009 .patterns = &.{81065 .unused,
83010 .{ .src = .{ .mem, .none, .none } },81066 },
83011 .{ .src = .{ .to_x87, .none, .none } },81067 .dst_temps = .{ .mem, .unused },
83012 },81068 .clobbers = .{ .eflags = true },
83013 .extra_temps = .{81069 .each = .{ .once = switch (cc) {
83014 .{ .type = .f80, .kind = .{ .reg = .st7 } },81070 else => unreachable,
83015 .unused,81071 .e => &.{
83016 .unused,81072 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83017 .unused,81073 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83018 .unused,81074 .{ .@"0:", ._q, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83019 .unused,81075 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83020 .unused,81076 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
83021 .unused,81077 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83022 .unused,81078 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
83023 .unused,81079 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
83024 .unused,81080 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83025 },81081 },
83026 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .x87 } }, .unused },81082 .ne => &.{
83027 .each = .{ .once = &.{81083 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83028 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },81084 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83029 .{ ._, .f_, .chs, ._, ._, ._, ._ },81085 .{ .@"0:", ._q, .mov, .tmp3q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83030 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },81086 .{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83031 } },81087 .{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
83032 }, .{81088 .{ ._, ._, .not, .tmp2b, ._, ._, ._ },
83033 .required_features = .{ .avx, null, null, null },81089 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83034 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },81090 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
83035 .patterns = &.{81091 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
83036 .{ .src = .{ .to_sse, .none, .none } },81092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83037 },81093 },
83038 .extra_temps = .{81094 } },
83039 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81095 }, .{
83040 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81096 .required_features = .{ .sse, .mmx, null, null },
83041 .unused,81097 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
83042 .unused,81098 .patterns = &.{
83043 .unused,81099 .{ .src = .{ .to_mem, .to_mem, .none } },
83044 .unused,81100 },
83045 .unused,81101 .extra_temps = .{
83046 .unused,81102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83047 .unused,81103 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83048 .unused,81104 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83049 .unused,81105 .{ .kind = .{ .rc = .mmx } },
83050 },81106 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83051 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },81107 .{ .kind = .{ .rc = .mmx } },
83052 .each = .{ .once = &.{81108 .unused,
83053 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81109 .unused,
83054 .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },81110 .unused,
83055 } },81111 .unused,
83056 }, .{81112 .unused,
83057 .required_features = .{ .sse2, null, null, null },81113 },
83058 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },81114 .dst_temps = .{ .mem, .unused },
83059 .patterns = &.{81115 .clobbers = .{ .eflags = true },
83060 .{ .src = .{ .to_mut_sse, .none, .none } },81116 .each = .{ .once = switch (cc) {
83061 },81117 else => unreachable,
83062 .extra_temps = .{81118 .e => &.{
83063 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81119 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83064 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81120 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83065 .unused,81121 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83066 .unused,81122 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
83067 .unused,81123 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83068 .unused,81124 .{ ._, .p_w, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83069 .unused,81125 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
83070 .unused,81126 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
83071 .unused,81127 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
83072 .unused,81128 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
83073 .unused,81129 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
83074 },81130 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83075 .dst_temps = .{ .{ .ref = .src0 }, .unused },81131 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83076 .each = .{ .once = &.{81132 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
83077 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81133 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
83078 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },81134 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
83079 } },81135 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83080 }, .{81136 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83081 .required_features = .{ .sse, null, null, null },81137 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83082 .src_constraints = .{ .{ .scalar_any_float = .xword }, .any, .any },81138 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83083 .patterns = &.{81139 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83084 .{ .src = .{ .to_mut_sse, .none, .none } },81140 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83085 },81141 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83086 .extra_temps = .{81142 },
83087 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81143 .ne => &.{
83088 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81144 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83089 .unused,81145 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83090 .unused,81146 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83091 .unused,81147 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
83092 .unused,81148 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83093 .unused,81149 .{ ._, .p_w, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83094 .unused,81150 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
83095 .unused,81151 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
83096 .unused,81152 .{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },
83097 .unused,81153 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
83098 },81154 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
83099 .dst_temps = .{ .{ .ref = .src0 }, .unused },81155 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
83100 .each = .{ .once = &.{81156 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83101 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81157 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83102 .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },81158 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
83103 } },81159 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
83104 }, .{81160 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
83105 .required_features = .{ .avx2, null, null, null },81161 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83106 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },81162 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83107 .patterns = &.{81163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83108 .{ .src = .{ .to_sse, .none, .none } },81164 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83109 },81165 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83110 .extra_temps = .{81166 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83111 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81167 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83112 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81168 },
83113 .unused,81169 } },
83114 .unused,81170 }, .{
83115 .unused,81171 .required_features = .{ .sse, .mmx, null, null },
83116 .unused,81172 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
83117 .unused,81173 .patterns = &.{
83118 .unused,81174 .{ .src = .{ .to_mem, .to_mem, .none } },
83119 .unused,81175 },
83120 .unused,81176 .extra_temps = .{
83121 .unused,81177 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83122 },81178 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83123 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },81179 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83124 .each = .{ .once = &.{81180 .{ .kind = .{ .rc = .mmx } },
83125 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81181 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83126 .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },81182 .{ .kind = .{ .rc = .mmx } },
83127 } },81183 .unused,
83128 }, .{81184 .unused,
83129 .required_features = .{ .avx, null, null, null },81185 .unused,
83130 .src_constraints = .{ .{ .scalar_any_float = .yword }, .any, .any },81186 .unused,
83131 .patterns = &.{81187 .unused,
83132 .{ .src = .{ .to_sse, .none, .none } },81188 },
83133 },81189 .dst_temps = .{ .mem, .unused },
83134 .extra_temps = .{81190 .clobbers = .{ .eflags = true },
83135 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },81191 .each = .{ .once = switch (cc) {
83136 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81192 else => unreachable,
83137 .unused,81193 .e => &.{
83138 .unused,81194 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83139 .unused,81195 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83140 .unused,81196 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83141 .unused,81197 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
83142 .unused,81198 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83143 .unused,81199 .{ ._, .p_d, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83144 .unused,81200 .{ ._, .p_w, .ackssd, .tmp5q, .tmp3q, ._, ._ },
83145 .unused,81201 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
83146 },81202 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
83147 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },81203 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
83148 .each = .{ .once = &.{81204 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
83149 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81205 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
83150 .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },81206 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83151 } },81207 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83152 }, .{81208 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
83153 .required_features = .{ .avx, null, null, null },81209 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
83154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },81210 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
83155 .patterns = &.{81211 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83156 .{ .src = .{ .to_mem, .none, .none } },81212 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83157 },81213 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83158 .extra_temps = .{81214 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83159 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81215 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83160 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81216 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83161 .{ .kind = .{ .rc = .sse } },81217 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83162 .{ .kind = .{ .rc = .sse } },81218 },
83163 .unused,81219 .ne => &.{
83164 .unused,81220 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83165 .unused,81221 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83166 .unused,81222 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83167 .unused,81223 .{ ._, .p_, .xor, .tmp3q, .tmp3q, ._, ._ },
83168 .unused,81224 .{ .@"0:", ._q, .mov, .tmp5q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83169 .unused,81225 .{ ._, .p_d, .cmpeq, .tmp5q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83170 },81226 .{ ._, .p_w, .ackssd, .tmp5q, .tmp3q, ._, ._ },
83171 .dst_temps = .{ .mem, .unused },81227 .{ ._, .p_b, .ackssw, .tmp5q, .tmp3q, ._, ._ },
83172 .each = .{ .once = &.{81228 .{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
83173 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81229 .{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },
83174 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },81230 .{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
83175 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81231 .{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
83176 .{ .@"0:", .v_ps, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },81232 .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
83177 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },81233 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83178 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },81234 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
83179 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81235 .{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
83180 } },81236 .{ ._, ._r, .sh, .tmp4d, .ui(3), ._, ._ },
83181 }, .{81237 .{ ._, ._, .mov, .memid(.dst0b, .tmp4, -1), .tmp2b, ._, ._ },
83182 .required_features = .{ .sse, null, null, null },81238 .{ ._, ._, .xor, .tmp2b, .tmp2b, ._, ._ },
83183 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },81239 .{ .@"1:", ._, .add, .tmp0p, .si(8), ._, ._ },
83184 .patterns = &.{81240 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83185 .{ .src = .{ .to_mem, .none, .none } },81241 .{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
83186 },81242 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
83187 .extra_temps = .{81243 .{ ._, ._r, .sh, .tmp1d, .ui(3), ._, ._ },
83188 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81244 .{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
83189 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81245 },
83190 .{ .kind = .{ .rc = .sse } },81246 } },
83191 .{ .kind = .{ .rc = .sse } },81247 }, .{
83192 .unused,81248 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
83193 .unused,81249 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
83194 .unused,81250 .patterns = &.{
83195 .unused,81251 .{ .src = .{ .to_mem, .to_mem, .none } },
83196 .unused,81252 },
83197 .unused,81253 .extra_temps = .{
83198 .unused,81254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83199 },81255 .{ .type = .u8, .kind = .{ .reg = .cl } },
83200 .dst_temps = .{ .mem, .unused },81256 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83201 .each = .{ .once = &.{81257 .unused,
83202 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81258 .unused,
83203 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },81259 .unused,
83204 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81260 .unused,
83205 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },81261 .unused,
83206 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },81262 .unused,
83207 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },81263 .unused,
83208 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },81264 .unused,
83209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81265 },
83210 } },81266 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83211 }, .{81267 .clobbers = .{ .eflags = true },
83212 .required_features = .{ .avx, null, null, null },81268 .each = .{ .once = &.{
83213 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },81269 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
83214 .patterns = &.{81270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83215 .{ .src = .{ .to_mem, .none, .none } },81271 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
83216 },81272 .{ .@"0:", ._, .mov, .tmp2b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
83217 .extra_temps = .{81273 .{ ._, ._, .cmp, .tmp2b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
83218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81274 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
83219 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81275 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
83220 .{ .kind = .{ .rc = .sse } },81276 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
83221 .{ .kind = .{ .rc = .sse } },81277 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
83222 .unused,81278 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
83223 .unused,81279 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83224 .unused,81280 } },
83225 .unused,81281 }, .{
83226 .unused,81282 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
83227 .unused,81283 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
83228 .unused,81284 .patterns = &.{
83229 },81285 .{ .src = .{ .to_mem, .to_mem, .none } },
83230 .dst_temps = .{ .mem, .unused },81286 },
83231 .each = .{ .once = &.{81287 .extra_temps = .{
83232 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81288 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83233 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },81289 .{ .type = .u8, .kind = .{ .reg = .cl } },
83234 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81290 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
83235 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },81291 .unused,
83236 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },81292 .unused,
83237 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },81293 .unused,
83238 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81294 .unused,
83239 } },81295 .unused,
83240 }, .{81296 .unused,
83241 .required_features = .{ .sse2, null, null, null },81297 .unused,
83242 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },81298 .unused,
83243 .patterns = &.{81299 },
83244 .{ .src = .{ .to_mem, .none, .none } },81300 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83245 },81301 .clobbers = .{ .eflags = true },
83246 .extra_temps = .{81302 .each = .{ .once = &.{
83247 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81303 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
83248 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81304 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83249 .{ .kind = .{ .rc = .sse } },81305 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
83250 .{ .kind = .{ .rc = .sse } },81306 .{ .@"0:", ._, .mov, .tmp2w, .memia(.src0w, .tmp0, .add_size), ._, ._ },
83251 .unused,81307 .{ ._, ._, .cmp, .tmp2w, .memia(.src1w, .tmp0, .add_size), ._, ._ },
83252 .unused,81308 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
83253 .unused,81309 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
83254 .unused,81310 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
83255 .unused,81311 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
83256 .unused,81312 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
83257 .unused,81313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83258 },81314 } },
83259 .dst_temps = .{ .mem, .unused },81315 }, .{
83260 .each = .{ .once = &.{81316 .src_constraints = .{ .{ .scalar_int_is = .dword }, .{ .scalar_int_is = .dword }, .any },
83261 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81317 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
83262 .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },81318 .patterns = &.{
83263 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81319 .{ .src = .{ .to_mem, .to_mem, .none } },
83264 .{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },81320 },
83265 .{ ._, ._pd, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },81321 .extra_temps = .{
83266 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },81322 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83267 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },81323 .{ .type = .u8, .kind = .{ .reg = .cl } },
83268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81324 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83269 } },81325 .unused,
83270 }, .{81326 .unused,
83271 .required_features = .{ .avx2, null, null, null },81327 .unused,
83272 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },81328 .unused,
83273 .patterns = &.{81329 .unused,
83274 .{ .src = .{ .to_mem, .none, .none } },81330 .unused,
83275 },81331 .unused,
83276 .extra_temps = .{81332 .unused,
83277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81333 },
83278 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81334 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83279 .{ .kind = .{ .rc = .sse } },81335 .clobbers = .{ .eflags = true },
83280 .{ .kind = .{ .rc = .sse } },81336 .each = .{ .once = &.{
83281 .unused,81337 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
83282 .unused,81338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83283 .unused,81339 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
83284 .unused,81340 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_size), ._, ._ },
83285 .unused,81341 .{ ._, ._, .cmp, .tmp2d, .memia(.src1d, .tmp0, .add_size), ._, ._ },
83286 .unused,81342 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
83287 .unused,81343 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
83288 },81344 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
83289 .dst_temps = .{ .mem, .unused },81345 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
83290 .each = .{ .once = &.{81346 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
83291 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81347 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83292 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },81348 } },
83293 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81349 }, .{
83294 .{ .@"0:", .vp_, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },81350 .required_features = .{ .@"64bit", null, null, null },
83295 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },81351 .src_constraints = .{ .{ .scalar_int_is = .qword }, .{ .scalar_int_is = .qword }, .any },
83296 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },81352 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
83297 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81353 .patterns = &.{
83298 } },81354 .{ .src = .{ .to_mem, .to_mem, .none } },
83299 }, .{81355 },
83300 .required_features = .{ .avx, null, null, null },81356 .extra_temps = .{
83301 .src_constraints = .{ .{ .multiple_scalar_any_float = .yword }, .any, .any },81357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83302 .patterns = &.{81358 .{ .type = .u8, .kind = .{ .reg = .cl } },
83303 .{ .src = .{ .to_mem, .none, .none } },81359 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83304 },81360 .unused,
83305 .extra_temps = .{81361 .unused,
83306 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81362 .unused,
83307 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .yword } } },81363 .unused,
83308 .{ .kind = .{ .rc = .sse } },81364 .unused,
83309 .{ .kind = .{ .rc = .sse } },81365 .unused,
83310 .unused,81366 .unused,
83311 .unused,81367 .unused,
83312 .unused,81368 },
83313 .unused,81369 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83314 .unused,81370 .clobbers = .{ .eflags = true },
83315 .unused,81371 .each = .{ .once = &.{
83316 .unused,81372 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
83317 },81373 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83318 .dst_temps = .{ .mem, .unused },81374 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
83319 .each = .{ .once = &.{81375 .{ .@"0:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
83320 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81376 .{ ._, ._, .cmp, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
83321 .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },81377 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
83322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81378 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
83323 .{ .@"0:", .v_pd, .xor, .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },81379 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
83324 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },81380 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
83325 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },81381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
83326 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83327 } },81383 } },
83328 }, .{81384 }, .{
83329 .required_features = .{ .sse2, null, null, null },81385 .src_constraints = .{ .any_scalar_int, .any_scalar_int, .any },
83330 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },81386 .dst_constraints = .{ .{ .bool_vec = .byte }, .any },
83331 .patterns = &.{81387 .patterns = &.{
83332 .{ .src = .{ .to_mem, .none, .none } },81388 .{ .src = .{ .to_mem, .to_mem, .none } },
83333 },81389 },
83334 .extra_temps = .{81390 .extra_temps = .{
83335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81391 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83336 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81392 .{ .type = .u8, .kind = .{ .reg = .cl } },
83337 .{ .kind = .{ .rc = .sse } },81393 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83338 .{ .kind = .{ .rc = .sse } },81394 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83339 .unused,81395 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83340 .unused,81396 .unused,
83341 .unused,81397 .unused,
83342 .unused,81398 .unused,
83343 .unused,81399 .unused,
83344 .unused,81400 .unused,
83345 .unused,81401 .unused,
83346 },81402 },
83347 .dst_temps = .{ .mem, .unused },81403 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83348 .each = .{ .once = &.{81404 .clobbers = .{ .eflags = true },
83349 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81405 .each = .{ .once = &.{
83350 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },81406 .{ ._, ._, .xor, .dst0b, .dst0b, ._, ._ },
83351 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81407 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
83352 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },81408 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
83353 .{ ._, .p_, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },81409 .{ .@"0:", ._, .mov, .tmp2d, .sa(.src0p, .add_elem_limbs), ._, ._ },
83354 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },81410 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
83355 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },81411 .{ .@"1:", ._, .mov, .tmp4p, .memi(.src0p, .tmp0), ._, ._ },
83356 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81412 .{ ._, ._, .xor, .tmp4p, .memi(.src1p, .tmp0), ._, ._ },
83357 } },81413 .{ ._, ._, .@"or", .tmp3p, .tmp4p, ._, ._ },
83358 }, .{81414 .{ ._, ._, .add, .tmp0p, .sa(.tmp4, .add_size), ._, ._ },
83359 .required_features = .{ .sse, null, null, null },81415 .{ ._, ._, .sub, .tmp2d, .si(1), ._, ._ },
83360 .src_constraints = .{ .{ .multiple_scalar_any_float = .xword }, .any, .any },81416 .{ ._, ._a, .j, .@"1b", ._, ._, ._ },
83361 .patterns = &.{81417 .{ ._, ._, .@"test", .tmp3p, .tmp3p, ._, ._ },
83362 .{ .src = .{ .to_mem, .none, .none } },81418 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
83363 },81419 .{ ._, ._l, .sh, .tmp2b, .tmp1b, ._, ._ },
83364 .extra_temps = .{81420 .{ ._, ._, .@"or", .dst0b, .tmp2b, ._, ._ },
83365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },81421 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
83366 .{ .kind = .{ .smin_mem = .{ .ref = .src0, .vectorize_to = .xword } } },81422 .{ ._, ._, .cmp, .tmp1b, .sa(.dst0, .add_len), ._, ._ },
83367 .{ .kind = .{ .rc = .sse } },81423 .{ ._, ._b, .j, .@"0b", ._, ._, ._ },
83368 .{ .kind = .{ .rc = .sse } },81424 } },
83369 .unused,81425 }, .{
83370 .unused,81426 .src_constraints = .{ .{ .scalar_int_is = .byte }, .{ .scalar_int_is = .byte }, .any },
83371 .unused,81427 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83372 .unused,81428 .patterns = &.{
83373 .unused,81429 .{ .src = .{ .to_mem, .to_mem, .none } },
83374 .unused,81430 },
83375 .unused,81431 .extra_temps = .{
83376 },81432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83377 .dst_temps = .{ .mem, .unused },81433 .{ .type = .u8, .kind = .{ .reg = .cl } },
83378 .each = .{ .once = &.{81434 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83379 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },81435 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
83380 .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },81436 .unused,
83381 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },81437 .unused,
83382 .{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },81438 .unused,
83383 .{ ._, ._ps, .xor, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },81439 .unused,
83384 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_size), .tmp3x, ._, ._ },81440 .unused,
83385 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },81441 .unused,
83386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },81442 .unused,
83387 } },81443 },
83388 } }) catch |err| switch (err) {81444 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83389 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{81445 .clobbers = .{ .eflags = true },
83390 @tagName(air_tag),81446 .each = .{ .once = &.{
83391 cg.typeOf(un_op).fmt(pt),81447 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83392 ops[0].tracking(cg),81448 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83393 }),81449 .{ ._, ._, .xor, .tmp1b, .tmp1b, ._, ._ },
83394 else => |e| return e,81450 .{ .@"0:", ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83395 };81451 .{ ._, ._, .mov, .tmp3b, .memia(.src0b, .tmp0, .add_size), ._, ._ },
83396 try res[0].finish(inst, &.{un_op}, &ops, cg);81452 .{ ._, ._, .cmp, .tmp3b, .memia(.src1b, .tmp0, .add_size), ._, ._ },
83397 },81453 .{ ._, .fromCond(cc), .set, .tmp2b, ._, ._, ._ },
8339881454 .{ ._, ._l, .sh, .tmp2d, .tmp1b, ._, ._ },
83399 .cmp_lt,81455 .{ ._, ._, .@"or", .dst0d, .tmp2d, ._, ._ },
83400 .cmp_lt_optimized,81456 .{ ._, ._, .add, .tmp1b, .si(1), ._, ._ },
83401 .cmp_lte,81457 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
83402 .cmp_lte_optimized,81458 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
83403 .cmp_gte,81459 } },
83404 .cmp_gte_optimized,81460 }, .{
83405 .cmp_gt,81461 .src_constraints = .{ .{ .scalar_int_is = .word }, .{ .scalar_int_is = .word }, .any },
83406 .cmp_gt_optimized,81462 .dst_constraints = .{ .{ .bool_vec = .dword }, .any },
83407 => |air_tag| if (use_old) try cg.airCmp(inst, air_tag.toCmpOp().?) else {81463 .patterns = &.{
83408 const bin_op = air_datas[@intFromEnum(inst)].bin_op;81464 .{ .src = .{ .to_mem, .to_mem, .none } },
83409 const cmp_op = air_tag.toCmpOp().?;81465 },
83410 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });81466 .extra_temps = .{
83411 var res: [1]Temp = undefined;81467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83412 (if (cg.floatBits(cg.typeOf(bin_op.lhs))) |_| err: {81468 .{ .type = .u8, .kind = .{ .reg = .cl } },
83413 switch (cmp_op) {81469 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83414 else => unreachable,81470 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
83415 .lt, .lte => {},81471 .unused,
83416 .gt, .gte => std.mem.swap(Temp, &ops[0], &ops[1]),81472 .unused,
83417 }81473 .unused,
83418 break :err cg.select(&res, &.{.bool}, &ops, switch (switch (cmp_op) {81474 .unused,
83419 else => unreachable,81475 .unused,
83420 .lt, .gt => true,81476 .unused,
83421 .lte, .gte => false,81477 .unused,
83422 }) {81478 },
83423 inline false, true => |strict| comptime &.{ .{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 }, .{
83424 .required_features = .{ .f16c, null, null, null },81972 .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 },
83426 .patterns = &.{82955 .patterns = &.{
83427 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },82956 .{ .src = .{ .to_mem, .to_mem, .none } },
83428 },82957 },
82958 .call_frame = .{ .alignment = .@"16" },
83429 .extra_temps = .{82959 .extra_temps = .{
83430 .{ .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },82960 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83431 .{ .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },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 },
83432 .unused,82969 .unused,
83433 .unused,82970 .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 } },
83434 .unused,83019 .unused,
83435 .unused,83020 .unused,
83436 .unused,83021 .unused,
...@@ -83439,142 +83024,552 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83439,142 +83024,552 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83439 .unused,83024 .unused,
83440 .unused,83025 .unused,
83441 },83026 },
83442 .dst_temps = .{ .{ .cc = switch (strict) {83027 .dst_temps = .{ .mem, .unused },
83443 true => .a,
83444 false => .ae,
83445 } }, .unused },
83446 .clobbers = .{ .eflags = true },83028 .clobbers = .{ .eflags = true },
83447 .each = .{ .once = &.{83029 .each = .{ .once = &.{
83448 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },83030 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83449 .{ ._, .v_ps, .cvtph2, .tmp1x, .src1q, ._, ._ },83031 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
83450 .{ ._, .v_ss, .ucomi, .tmp0x, .tmp1d, ._, ._ },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", ._, ._, ._ },
83451 } },83043 } },
83452 }, .{83044 }, .{
83453 .required_features = .{ .sse, null, null, null },83045 .required_features = .{ .avx, null, null, null },
83454 .src_constraints = .{ .{ .float = .word }, .{ .float = .word }, .any },83046 .src_constraints = .{
83047 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83048 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83049 .any,
83050 },
83455 .patterns = &.{83051 .patterns = &.{
83456 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },83052 .{ .src = .{ .to_mem, .to_mem, .none } },
83457 },83053 },
83458 .call_frame = .{ .alignment = .@"16" },
83459 .extra_temps = .{83054 .extra_temps = .{
83460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmphf2" } } },83055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83461 .{ .type = .i32, .kind = .{ .reg = .eax } },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,
83462 .unused,83061 .unused,
83463 .unused,83062 .unused,
83464 .unused,83063 .unused,
83465 .unused,83064 .unused,
83466 .unused,83065 .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,
83467 .unused,83102 .unused,
83468 .unused,83103 .unused,
83469 .unused,83104 .unused,
83470 .unused,83105 .unused,
83471 },83106 },
83472 .dst_temps = .{ .{ .cc = switch (strict) {83107 .dst_temps = .{ .mem, .unused },
83473 true => .l,83108 .clobbers = .{ .eflags = true },
83474 false => .le,
83475 } }, .unused },
83476 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83477 .each = .{ .once = &.{83109 .each = .{ .once = &.{
83478 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },83110 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83479 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },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", ._, ._, ._ },
83480 } },83131 } },
83481 }, .{83132 }, .{
83482 .required_features = .{ .avx, null, null, null },83133 .required_features = .{ .sse, null, null, null },
83483 .src_constraints = .{ .{ .float = .dword }, .{ .float = .dword }, .any },83134 .src_constraints = .{
83135 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83136 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
83137 .any,
83138 },
83484 .patterns = &.{83139 .patterns = &.{
83485 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },83140 .{ .src = .{ .to_mem, .to_mem, .none } },
83486 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83487 },83141 },
83488 .dst_temps = .{ .{ .cc = switch (strict) {83142 .extra_temps = .{
83489 true => .a,83143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83490 false => .ae,83144 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83491 } }, .unused },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 },
83492 .clobbers = .{ .eflags = true },83156 .clobbers = .{ .eflags = true },
83493 .each = .{ .once = &.{83157 .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", ._, ._, ._ },
83495 } },83180 } },
83496 }, .{83181 }, .{
83497 .required_features = .{ .sse, null, null, null },83182 .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 },
83499 .patterns = &.{83188 .patterns = &.{
83500 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },83189 .{ .src = .{ .to_mem, .to_mem, .none } },
83501 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83502 },83190 },
83503 .dst_temps = .{ .{ .cc = switch (strict) {83191 .extra_temps = .{
83504 true => .a,83192 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83505 false => .ae,83193 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83506 } }, .unused },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 },
83507 .clobbers = .{ .eflags = true },83205 .clobbers = .{ .eflags = true },
83508 .each = .{ .once = &.{83206 .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", ._, ._, ._ },
83510 } },83280 } },
83511 }, .{83281 }, .{
83512 .required_features = .{ .avx, null, null, null },83282 .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 },
83514 .patterns = &.{83288 .patterns = &.{
83515 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },83289 .{ .src = .{ .to_mem, .to_mem, .none } },
83516 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83517 },83290 },
83518 .dst_temps = .{ .{ .cc = switch (strict) {83291 .extra_temps = .{
83519 true => .a,83292 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83520 false => .ae,83293 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
83521 } }, .unused },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 },
83522 .clobbers = .{ .eflags = true },83305 .clobbers = .{ .eflags = true },
83523 .each = .{ .once = &.{83306 .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, ._, ._ },
83525 } },83381 } },
83526 }, .{83382 }, .{
83527 .required_features = .{ .sse2, null, null, null },83383 .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 },
83529 .patterns = &.{83389 .patterns = &.{
83530 .{ .src = .{ .mem, .to_sse, .none }, .commute = .{ 0, 1 } },83390 .{ .src = .{ .to_mem, .to_mem, .none } },
83531 .{ .src = .{ .to_sse, .to_sse, .none }, .commute = .{ 0, 1 } },
83532 },83391 },
83533 .dst_temps = .{ .{ .cc = switch (strict) {83392 .extra_temps = .{
83534 true => .a,83393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83535 false => .ae,83394 .{ .type = .u32, .kind = .{ .reg = .rcx } },
83536 } }, .unused },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 },
83537 .clobbers = .{ .eflags = true },83406 .clobbers = .{ .eflags = true },
83538 .each = .{ .once = &.{83407 .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, ._, ._ },
83540 } },83433 } },
83541 }, .{83434 }, .{
83542 .required_features = .{ .x87, .cmov, null, null },83435 .required_features = .{ .x87, .cmov, .slow_incdec, null },
83543 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },83436 .src_constraints = .{
83437 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83438 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83439 .any,
83440 },
83544 .patterns = &.{83441 .patterns = &.{
83545 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },83442 .{ .src = .{ .to_mem, .to_mem, .none } },
83546 },83443 },
83547 .extra_temps = .{83444 .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 } },
83548 .{ .type = .f64, .kind = .{ .reg = .st6 } },83450 .{ .type = .f64, .kind = .{ .reg = .st6 } },
83549 .{ .type = .f64, .kind = .{ .reg = .st7 } },83451 .{ .type = .f64, .kind = .{ .reg = .st7 } },
83550 .unused,83452 .unused,
83551 .unused,83453 .unused,
83552 .unused,83454 .unused,
83553 .unused,83455 .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 } },
83555 .unused,83514 .unused,
83556 .unused,83515 .unused,
83557 .unused,83516 .unused,
83558 .unused,83517 .unused,
83559 },83518 },
83560 .dst_temps = .{ .{ .cc = switch (strict) {83519 .dst_temps = .{ .mem, .unused },
83561 true => .a,
83562 false => .ae,
83563 } }, .unused },
83564 .clobbers = .{ .eflags = true },83520 .clobbers = .{ .eflags = true },
83565 .each = .{ .once = &.{83521 .each = .{ .once = &.{
83566 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },83522 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83567 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },83523 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83568 .{ ._, .f_p, .ucomi, .tmp0t, .tmp1t, ._, ._ },83524 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83569 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },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, ._, ._ },
83570 } },83557 } },
83571 }, .{83558 }, .{
83572 .required_features = .{ .sahf, .x87, null, null },83559 .required_features = .{ .x87, null, null, null },
83573 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },83560 .src_constraints = .{
83561 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83562 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
83563 .any,
83564 },
83574 .patterns = &.{83565 .patterns = &.{
83575 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },83566 .{ .src = .{ .to_mem, .to_mem, .none } },
83576 },83567 },
83577 .extra_temps = .{83568 .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 } },
83578 .{ .type = .f64, .kind = .{ .reg = .st6 } },83573 .{ .type = .f64, .kind = .{ .reg = .st6 } },
83579 .{ .type = .f64, .kind = .{ .reg = .st7 } },83574 .{ .type = .f64, .kind = .{ .reg = .st7 } },
83580 .{ .type = .u16, .kind = .{ .reg = .ax } },83575 .{ .type = .u16, .kind = .{ .reg = .ax } },
...@@ -83582,810 +83577,810 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -83582,810 +83577,810 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
83582 .unused,83577 .unused,
83583 .unused,83578 .unused,
83584 .unused,83579 .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 } },
83585 .unused,83691 .unused,
83586 .unused,83692 .unused,
83587 .unused,83693 .unused,
83588 .unused,83694 .unused,
83589 },83695 },
83590 .dst_temps = .{ .{ .cc = switch (strict) {83696 .dst_temps = .{ .mem, .unused },
83591 true => .a,
83592 false => .ae,
83593 } }, .unused },
83594 .clobbers = .{ .eflags = true },83697 .clobbers = .{ .eflags = true },
83595 .each = .{ .once = &.{83698 .each = .{ .once = &.{
83596 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },83699 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83597 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },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), ._, ._, ._ },
83598 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },83767 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
83599 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },83768 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
83600 .{ ._, ._, .sahf, ._, ._, ._, ._ },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", ._, ._, ._ },
83601 } },84007 } },
83602 }, .{84008 }, .{
83603 .required_features = .{ .x87, null, null, null },84009 .required_features = .{ .sse2, .slow_incdec, null, null },
83604 .src_constraints = .{ .{ .float = .qword }, .{ .float = .qword }, .any },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 },
83605 .patterns = &.{84016 .patterns = &.{
83606 .{ .src = .{ .to_mem, .to_mem, .none }, .commute = .{ 0, 1 } },84017 .{ .src = .{ .to_mem, .to_mem, .none } },
83607 },84018 },
84019 .call_frame = .{ .alignment = .@"16" },
83608 .extra_temps = .{84020 .extra_temps = .{
83609 .{ .type = .f64, .kind = .{ .reg = .st6 } },84021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83610 .{ .type = .f64, .kind = .{ .reg = .st7 } },84022 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83611 .{ .type = .u16, .kind = .{ .reg = .ax } },84023 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83612 .unused,84024 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83613 .unused,84025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83614 .unused,84026 .{ .type = .i32, .kind = .{ .reg = .eax } },
83615 .unused,84027 .{ .type = .u8, .kind = .{ .reg = .cl } },
83616 .unused,84028 .{ .type = .u32, .kind = .{ .reg = .edx } },
83617 .unused,84029 .unused,
83618 .unused,84030 .unused,
83619 .unused,84031 .unused,
83620 },84032 },
83621 .dst_temps = .{ .{ .cc = switch (strict) {84033 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
83622 true => .z,84034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83623 false => .nc,
83624 } }, .unused },
83625 .clobbers = .{ .eflags = true },
83626 .each = .{ .once = &.{84035 .each = .{ .once = &.{
83627 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },84036 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
83628 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },84037 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83629 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },84038 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83630 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },84039 .{ .@"0:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83631 switch (strict) {84040 .{ ._, ._ps, .mova, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83632 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },84041 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
83633 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },84042 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
83634 },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", ._, ._, ._ },
83635 } },84051 } },
83636 }, .{84052 }, .{
83637 .required_features = .{ .x87, .cmov, null, null },84053 .required_features = .{ .@"64bit", .avx, .slow_incdec, null },
83638 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },84054 .src_constraints = .{
84055 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84056 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84057 .any,
84058 },
83639 .patterns = &.{84059 .patterns = &.{
83640 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },84060 .{ .src = .{ .to_mem, .to_mem, .none } },
83641 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
83642 },84061 },
84062 .call_frame = .{ .alignment = .@"16" },
83643 .extra_temps = .{84063 .extra_temps = .{
83644 .{ .type = .f80, .kind = .{ .reg = .st7 } },84064 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83645 .unused,84065 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83646 .unused,84066 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83647 .unused,84067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83648 .unused,84068 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83649 .unused,84069 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83650 .unused,84070 .{ .type = .i32, .kind = .{ .reg = .eax } },
83651 .unused,84071 .{ .type = .u8, .kind = .{ .reg = .cl } },
83652 .unused,84072 .{ .type = .u64, .kind = .{ .reg = .rdx } },
83653 .unused,84073 .unused,
83654 .unused,84074 .unused,
83655 },84075 },
83656 .dst_temps = .{ .{ .cc = switch (strict) {84076 .dst_temps = .{ .mem, .unused },
83657 true => .a,84077 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83658 false => .ae,
83659 } }, .unused },
83660 .clobbers = .{ .eflags = true },
83661 .each = .{ .once = &.{84078 .each = .{ .once = &.{
83662 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },84079 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83663 .{ ._, .f_p, .ucomi, .tmp0t, .src1t, ._, ._ },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, ._, ._ },
83664 } },84104 } },
83665 }, .{84105 }, .{
83666 .required_features = .{ .sahf, .x87, null, null },84106 .required_features = .{ .@"64bit", .avx, null, null },
83667 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },84107 .src_constraints = .{
84108 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84109 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84110 .any,
84111 },
83668 .patterns = &.{84112 .patterns = &.{
83669 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },84113 .{ .src = .{ .to_mem, .to_mem, .none } },
83670 },84114 },
84115 .call_frame = .{ .alignment = .@"16" },
83671 .extra_temps = .{84116 .extra_temps = .{
83672 .{ .type = .f80, .kind = .{ .reg = .st6 } },84117 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83673 .{ .type = .f80, .kind = .{ .reg = .st7 } },84118 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83674 .{ .type = .u16, .kind = .{ .reg = .ax } },84119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83675 .unused,84120 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83676 .unused,84121 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83677 .unused,84122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83678 .unused,84123 .{ .type = .i32, .kind = .{ .reg = .eax } },
83679 .unused,84124 .{ .type = .u8, .kind = .{ .reg = .cl } },
83680 .unused,84125 .{ .type = .u64, .kind = .{ .reg = .rdx } },
83681 .unused,84126 .unused,
83682 .unused,84127 .unused,
83683 },84128 },
83684 .dst_temps = .{ .{ .cc = switch (strict) {84129 .dst_temps = .{ .mem, .unused },
83685 true => .a,84130 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83686 false => .ae,
83687 } }, .unused },
83688 .clobbers = .{ .eflags = true },
83689 .each = .{ .once = &.{84131 .each = .{ .once = &.{
83690 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },84132 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83691 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },84133 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83692 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },84134 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83693 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },84135 .{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83694 .{ ._, ._, .sahf, ._, ._, ._, ._ },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, ._, ._ },
83695 } },84157 } },
83696 }, .{84158 }, .{
83697 .required_features = .{ .sahf, .x87, null, null },84159 .required_features = .{ .@"64bit", .sse2, .slow_incdec, null },
83698 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },84160 .src_constraints = .{
84161 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84162 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84163 .any,
84164 },
83699 .patterns = &.{84165 .patterns = &.{
83700 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },84166 .{ .src = .{ .to_mem, .to_mem, .none } },
83701 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
83702 },84167 },
84168 .call_frame = .{ .alignment = .@"16" },
83703 .extra_temps = .{84169 .extra_temps = .{
83704 .{ .type = .f80, .kind = .{ .reg = .st6 } },84170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83705 .{ .type = .f80, .kind = .{ .reg = .st7 } },84171 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83706 .{ .type = .u16, .kind = .{ .reg = .ax } },84172 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83707 .unused,84173 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83708 .unused,84174 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83709 .unused,84175 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83710 .unused,84176 .{ .type = .i32, .kind = .{ .reg = .eax } },
83711 .unused,84177 .{ .type = .u8, .kind = .{ .reg = .cl } },
83712 .unused,84178 .{ .type = .u64, .kind = .{ .reg = .rdx } },
83713 .unused,84179 .unused,
83714 .unused,84180 .unused,
83715 },84181 },
83716 .dst_temps = .{ .{ .cc = switch (strict) {84182 .dst_temps = .{ .mem, .unused },
83717 true => .a,84183 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83718 false => .ae,
83719 } }, .unused },
83720 .clobbers = .{ .eflags = true },
83721 .each = .{ .once = &.{84184 .each = .{ .once = &.{
83722 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },84185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83723 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },84186 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83724 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },84187 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83725 .{ ._, ._, .sahf, ._, ._, ._, ._ },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, ._, ._ },
83726 } },84210 } },
83727 }, .{84211 }, .{
83728 .required_features = .{ .x87, null, null, null },84212 .required_features = .{ .@"64bit", .sse2, null, null },
83729 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },84213 .src_constraints = .{
84214 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84215 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84216 .any,
84217 },
83730 .patterns = &.{84218 .patterns = &.{
83731 .{ .src = .{ .mem, .mem, .none }, .commute = .{ 0, 1 } },84219 .{ .src = .{ .to_mem, .to_mem, .none } },
83732 },84220 },
84221 .call_frame = .{ .alignment = .@"16" },
83733 .extra_temps = .{84222 .extra_temps = .{
83734 .{ .type = .f80, .kind = .{ .reg = .st6 } },84223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83735 .{ .type = .f80, .kind = .{ .reg = .st7 } },84224 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83736 .{ .type = .u16, .kind = .{ .reg = .ax } },84225 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83737 .unused,84226 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83738 .unused,84227 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83739 .unused,84228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83740 .unused,84229 .{ .type = .i32, .kind = .{ .reg = .eax } },
83741 .unused,84230 .{ .type = .u8, .kind = .{ .reg = .cl } },
83742 .unused,84231 .{ .type = .u64, .kind = .{ .reg = .rdx } },
83743 .unused,84232 .unused,
83744 .unused,84233 .unused,
83745 },84234 },
83746 .dst_temps = .{ .{ .cc = switch (strict) {84235 .dst_temps = .{ .mem, .unused },
83747 true => .z,84236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83748 false => .nc,
83749 } }, .unused },
83750 .clobbers = .{ .eflags = true },
83751 .each = .{ .once = &.{84237 .each = .{ .once = &.{
83752 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },84238 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83753 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },84239 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83754 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },84240 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83755 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },84241 .{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83756 switch (strict) {84242 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83757 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },84243 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
83758 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },84244 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
83759 },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, ._, ._ },
83760 } },84263 } },
83761 }, .{84264 }, .{
83762 .required_features = .{ .x87, null, null, null },84265 .required_features = .{ .@"64bit", .sse, .slow_incdec, null },
83763 .src_constraints = .{ .{ .float = .tbyte }, .{ .float = .tbyte }, .any },84266 .src_constraints = .{
84267 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84268 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84269 .any,
84270 },
83764 .patterns = &.{84271 .patterns = &.{
83765 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },84272 .{ .src = .{ .to_mem, .to_mem, .none } },
83766 .{ .src = .{ .to_x87, .to_x87, .none }, .commute = .{ 0, 1 } },
83767 },84273 },
84274 .call_frame = .{ .alignment = .@"16" },
83768 .extra_temps = .{84275 .extra_temps = .{
83769 .{ .type = .f80, .kind = .{ .reg = .st6 } },84276 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
83770 .{ .type = .f80, .kind = .{ .reg = .st7 } },84277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
83771 .{ .type = .u16, .kind = .{ .reg = .ax } },84278 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
83772 .unused,84279 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
83773 .unused,84280 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
83774 .unused,84281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83775 .unused,84282 .{ .type = .i32, .kind = .{ .reg = .eax } },
83776 .unused,84283 .{ .type = .u8, .kind = .{ .reg = .cl } },
83777 .unused,84284 .{ .type = .u64, .kind = .{ .reg = .rdx } },
83778 .unused,84285 .unused,
83779 .unused,84286 .unused,
83780 },84287 },
83781 .dst_temps = .{ .{ .cc = switch (strict) {84288 .dst_temps = .{ .mem, .unused },
83782 true => .z,84289 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83783 false => .nc,
83784 } }, .unused },
83785 .clobbers = .{ .eflags = true },
83786 .each = .{ .once = &.{84290 .each = .{ .once = &.{
83787 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },84291 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83788 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },84292 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
83789 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },84293 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
83790 switch (strict) {84294 .{ .@"0:", ._ps, .mova, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
83791 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },84295 .{ ._, ._ps, .mova, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
83792 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },84296 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
83793 },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, ._, ._ },
83794 } },84316 } },
83795 }, .{84317 }, .{
83796 .required_features = .{ .sse, null, null, null },84318 .required_features = .{ .@"64bit", .sse, null, null },
83797 .src_constraints = .{ .{ .float = .xword }, .{ .float = .xword }, .any },84319 .src_constraints = .{
84320 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84321 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
84322 .any,
84323 },
83798 .patterns = &.{84324 .patterns = &.{
83799 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },84325 .{ .src = .{ .to_mem, .to_mem, .none } },
83800 },84326 },
83801 .call_frame = .{ .alignment = .@"16" },84327 .call_frame = .{ .alignment = .@"16" },
83802 .extra_temps = .{84328 .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 } },
83803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },84334 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__cmptf2" } } },
83804 .{ .type = .i32, .kind = .{ .reg = .eax } },84335 .{ .type = .i32, .kind = .{ .reg = .eax } },
83805 .unused,84336 .{ .type = .u8, .kind = .{ .reg = .cl } },
83806 .unused,84337 .{ .type = .u64, .kind = .{ .reg = .rdx } },
83807 .unused,
83808 .unused,
83809 .unused,
83810 .unused,
83811 .unused,
83812 .unused,84338 .unused,
83813 .unused,84339 .unused,
83814 },84340 },
83815 .dst_temps = .{ .{ .cc = switch (strict) {84341 .dst_temps = .{ .mem, .unused },
83816 true => .l,
83817 false => .le,
83818 } }, .unused },
83819 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },84342 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
83820 .each = .{ .once = &.{84343 .each = .{ .once = &.{
83821 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },84344 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
83822 .{ ._, ._, .@"test", .tmp1d, .tmp1d, ._, ._ },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, ._, ._ },
83823 } },84369 } },
83824 } },84370 } },
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),
83834 }),84371 }),
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,
84361 }) catch |err| switch (err) {84372 }) 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} {} {} {}", .{
84363 @tagName(air_tag),84374 @tagName(air_tag),
84364 cg.typeOf(bin_op.lhs).fmt(pt),84375 @tagName(extra.compareOperator()),
84376 cg.typeOf(extra.lhs).fmt(pt),
84365 ops[0].tracking(cg),84377 ops[0].tracking(cg),
84366 ops[1].tracking(cg),84378 ops[1].tracking(cg),
84367 }),84379 }),
84368 else => |e| return e,84380 else => |e| return e,
84369 };84381 };
84370 if (opt_info) |*oi| {84382 try res[0].finish(inst, &.{ extra.lhs, extra.rhs }, &ops, cg);
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);
84387 },84383 },
84388
84389 .cond_br => try cg.airCondBr(inst),84384 .cond_br => try cg.airCondBr(inst),
84390 .switch_br => try cg.airSwitchBr(inst),84385 .switch_br => try cg.airSwitchBr(inst),
84391 .loop_switch_br => try cg.airLoopSwitchBr(inst),84386 .loop_switch_br => try cg.airLoopSwitchBr(inst),
...@@ -89934,14 +89929,1029 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -89934,14 +89929,1029 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89934 .clobbers = .{ .eflags = true },89929 .clobbers = .{ .eflags = true },
89935 .each = .{ .once = &.{89930 .each = .{ .once = &.{
89936 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },89931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
89937 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },89932 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
89938 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },89933 .{ ._, ._, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
89939 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },89934 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
89940 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
89941 } },90951 } },
89942 }, .{90952 }, .{
89943 .required_features = .{ .avx, null, null, null },90953 .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 },
89945 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },90955 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89946 .patterns = &.{90956 .patterns = &.{
89947 .{ .src = .{ .mem, .none, .none } },90957 .{ .src = .{ .mem, .none, .none } },
...@@ -89949,11 +90959,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -89949,11 +90959,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89949 },90959 },
89950 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },90960 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89951 .each = .{ .once = &.{90961 .each = .{ .once = &.{
89952 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },90962 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
89953 } },90963 } },
89954 }, .{90964 }, .{
89955 .required_features = .{ .avx, null, null, null },90965 .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 },
89957 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },90967 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
89958 .patterns = &.{90968 .patterns = &.{
89959 .{ .src = .{ .mem, .none, .none } },90969 .{ .src = .{ .mem, .none, .none } },
...@@ -89961,11 +90971,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -89961,11 +90971,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89961 },90971 },
89962 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },90972 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89963 .each = .{ .once = &.{90973 .each = .{ .once = &.{
89964 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },90974 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
89965 } },90975 } },
89966 }, .{90976 }, .{
89967 .required_features = .{ .sse4_1, null, null, null },90977 .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 },
89969 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },90979 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89970 .patterns = &.{90980 .patterns = &.{
89971 .{ .src = .{ .mem, .none, .none } },90981 .{ .src = .{ .mem, .none, .none } },
...@@ -89973,11 +90983,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -89973,11 +90983,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89973 },90983 },
89974 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },90984 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89975 .each = .{ .once = &.{90985 .each = .{ .once = &.{
89976 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },90986 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
89977 } },90987 } },
89978 }, .{90988 }, .{
89979 .required_features = .{ .sse4_1, null, null, null },90989 .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 },
89981 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },90991 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
89982 .patterns = &.{90992 .patterns = &.{
89983 .{ .src = .{ .mem, .none, .none } },90993 .{ .src = .{ .mem, .none, .none } },
...@@ -89985,17 +90995,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -89985,17 +90995,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
89985 },90995 },
89986 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },90996 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
89987 .each = .{ .once = &.{90997 .each = .{ .once = &.{
89988 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },90998 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
89989 } },90999 } },
89990 }, .{91000 }, .{
89991 .required_features = .{ .sse2, null, null, null },91001 .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 },
89993 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },91003 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89994 .patterns = &.{91004 .patterns = &.{
89995 .{ .src = .{ .to_mut_sse, .none, .none } },91005 .{ .src = .{ .to_mut_sse, .none, .none } },
89996 },91006 },
89997 .extra_temps = .{91007 .extra_temps = .{
89998 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },91008 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
89999 .unused,91009 .unused,
90000 .unused,91010 .unused,
90001 .unused,91011 .unused,
...@@ -90010,22 +91020,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90010,22 +91020,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90010 .dst_temps = .{ .{ .ref = .src0 }, .unused },91020 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90011 .each = .{ .once = &.{91021 .each = .{ .once = &.{
90012 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91022 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90013 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },91023 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
90014 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90015 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
90016 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },91024 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90017 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },91025 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
90018 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },91026 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90019 } },91027 } },
90020 }, .{91028 }, .{
90021 .required_features = .{ .sse2, null, null, null },91029 .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 },
90023 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },91031 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90024 .patterns = &.{91032 .patterns = &.{
90025 .{ .src = .{ .to_mut_sse, .none, .none } },91033 .{ .src = .{ .to_mut_sse, .none, .none } },
90026 },91034 },
90027 .extra_temps = .{91035 .extra_temps = .{
90028 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },91036 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
90029 .unused,91037 .unused,
90030 .unused,91038 .unused,
90031 .unused,91039 .unused,
...@@ -90040,13 +91048,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90040,13 +91048,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90040 .dst_temps = .{ .{ .ref = .src0 }, .unused },91048 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90041 .each = .{ .once = &.{91049 .each = .{ .once = &.{
90042 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91050 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90043 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90044 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },91051 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90045 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },91052 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90046 } },91053 } },
90047 }, .{91054 }, .{
90048 .required_features = .{ .avx2, null, null, null },91055 .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 },
90050 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },91057 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
90051 .patterns = &.{91058 .patterns = &.{
90052 .{ .src = .{ .mem, .none, .none } },91059 .{ .src = .{ .mem, .none, .none } },
...@@ -90054,11 +91061,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90054,11 +91061,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90054 },91061 },
90055 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91062 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90056 .each = .{ .once = &.{91063 .each = .{ .once = &.{
90057 .{ ._, .vp_q, .movsxb, .dst0y, .src0d, ._, ._ },91064 .{ ._, .vp_q, .movsxw, .dst0y, .src0q, ._, ._ },
90058 } },91065 } },
90059 }, .{91066 }, .{
90060 .required_features = .{ .avx2, null, null, null },91067 .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 },
90062 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },91069 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
90063 .patterns = &.{91070 .patterns = &.{
90064 .{ .src = .{ .mem, .none, .none } },91071 .{ .src = .{ .mem, .none, .none } },
...@@ -90066,11 +91073,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90066,11 +91073,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90066 },91073 },
90067 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91074 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90068 .each = .{ .once = &.{91075 .each = .{ .once = &.{
90069 .{ ._, .vp_q, .movzxb, .dst0y, .src0d, ._, ._ },91076 .{ ._, .vp_q, .movzxw, .dst0y, .src0q, ._, ._ },
90070 } },91077 } },
90071 }, .{91078 }, .{
90072 .required_features = .{ .avx2, null, null, null },91079 .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 },
90074 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },91081 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
90075 .patterns = &.{91082 .patterns = &.{
90076 .{ .src = .{ .to_mem, .none, .none } },91083 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90092,14 +91099,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90092,14 +91099,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90092 .clobbers = .{ .eflags = true },91099 .clobbers = .{ .eflags = true },
90093 .each = .{ .once = &.{91100 .each = .{ .once = &.{
90094 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91101 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90095 .{ .@"0:", .vp_q, .movsxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },91102 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
90096 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },91103 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90097 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },91104 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91105 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90099 } },91106 } },
90100 }, .{91107 }, .{
90101 .required_features = .{ .avx2, null, null, null },91108 .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 },
90103 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },91110 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
90104 .patterns = &.{91111 .patterns = &.{
90105 .{ .src = .{ .to_mem, .none, .none } },91112 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90121,14 +91128,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90121,14 +91128,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90121 .clobbers = .{ .eflags = true },91128 .clobbers = .{ .eflags = true },
90122 .each = .{ .once = &.{91129 .each = .{ .once = &.{
90123 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91130 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90124 .{ .@"0:", .vp_q, .movzxb, .tmp1y, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },91131 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
90125 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },91132 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90126 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },91133 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90127 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90128 } },91135 } },
90129 }, .{91136 }, .{
90130 .required_features = .{ .avx, null, null, null },91137 .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 },
90132 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },91139 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90133 .patterns = &.{91140 .patterns = &.{
90134 .{ .src = .{ .to_mem, .none, .none } },91141 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90150,14 +91157,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90150,14 +91157,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90150 .clobbers = .{ .eflags = true },91157 .clobbers = .{ .eflags = true },
90151 .each = .{ .once = &.{91158 .each = .{ .once = &.{
90152 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91159 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90153 .{ .@"0:", .vp_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },91160 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90154 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91161 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90155 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },91162 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90156 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90157 } },91164 } },
90158 }, .{91165 }, .{
90159 .required_features = .{ .avx, null, null, null },91166 .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 },
90161 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },91168 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90162 .patterns = &.{91169 .patterns = &.{
90163 .{ .src = .{ .to_mem, .none, .none } },91170 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90179,14 +91186,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90179,14 +91186,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90179 .clobbers = .{ .eflags = true },91186 .clobbers = .{ .eflags = true },
90180 .each = .{ .once = &.{91187 .each = .{ .once = &.{
90181 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91188 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90182 .{ .@"0:", .vp_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },91189 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90183 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91190 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90184 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },91191 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90186 } },91193 } },
90187 }, .{91194 }, .{
90188 .required_features = .{ .sse4_1, null, null, null },91195 .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 },
90190 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },91197 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90191 .patterns = &.{91198 .patterns = &.{
90192 .{ .src = .{ .to_mem, .none, .none } },91199 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90208,14 +91215,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90208,14 +91215,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90208 .clobbers = .{ .eflags = true },91215 .clobbers = .{ .eflags = true },
90209 .each = .{ .once = &.{91216 .each = .{ .once = &.{
90210 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91217 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90211 .{ .@"0:", .p_q, .movsxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },91218 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90212 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91219 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90213 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },91220 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91221 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90215 } },91222 } },
90216 }, .{91223 }, .{
90217 .required_features = .{ .sse4_1, null, null, null },91224 .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 },
90219 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },91226 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90220 .patterns = &.{91227 .patterns = &.{
90221 .{ .src = .{ .to_mem, .none, .none } },91228 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90237,14 +91244,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90237,14 +91244,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90237 .clobbers = .{ .eflags = true },91244 .clobbers = .{ .eflags = true },
90238 .each = .{ .once = &.{91245 .each = .{ .once = &.{
90239 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91246 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90240 .{ .@"0:", .p_q, .movzxb, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },91247 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90241 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91248 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90242 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },91249 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90243 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91250 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90244 } },91251 } },
90245 }, .{91252 }, .{
90246 .required_features = .{ .@"64bit", .slow_incdec, null, null },91253 .required_features = .{ .@"64bit", null, null, null },
90247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },91254 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
90248 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },91255 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
90249 .patterns = &.{91256 .patterns = &.{
90250 .{ .src = .{ .to_mem, .none, .none } },91257 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90266,50 +91273,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90266,50 +91273,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90266 .clobbers = .{ .eflags = true },91273 .clobbers = .{ .eflags = true },
90267 .each = .{ .once = &.{91274 .each = .{ .once = &.{
90268 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91275 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90269 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },91276 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90270 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },91277 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90271 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },91278 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91279 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90273 } },91280 } },
90274 }, .{91281 }, .{
90275 .required_features = .{ .@"64bit", null, null, null },91282 .required_features = .{ .@"64bit", null, null, null },
90276 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },91283 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .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 },
90306 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },91284 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
90307 .patterns = &.{91285 .patterns = &.{
90308 .{ .src = .{ .to_mem, .none, .none } },91286 .{ .src = .{ .to_mem, .none, .none } },
90309 },91287 },
90310 .extra_temps = .{91288 .extra_temps = .{
90311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91289 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90312 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },91290 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
90313 .unused,91291 .unused,
90314 .unused,91292 .unused,
90315 .unused,91293 .unused,
...@@ -90324,42 +91302,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90324,42 +91302,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90324 .clobbers = .{ .eflags = true },91302 .clobbers = .{ .eflags = true },
90325 .each = .{ .once = &.{91303 .each = .{ .once = &.{
90326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91304 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90327 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },91305 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90328 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },91306 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90329 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },91307 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90330 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90331 } },91309 } },
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 } },
90360 }, .{91310 }, .{
90361 .required_features = .{ .avx, null, null, null },91311 .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 },
90363 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },91313 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90364 .patterns = &.{91314 .patterns = &.{
90365 .{ .src = .{ .mem, .none, .none } },91315 .{ .src = .{ .mem, .none, .none } },
...@@ -90367,12 +91317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90367,12 +91317,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90367 },91317 },
90368 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91318 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90369 .each = .{ .once = &.{91319 .each = .{ .once = &.{
90370 .{ ._, .vp_q, .movsxb, .dst0x, .src0w, ._, ._ },91320 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },
90371 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },91321 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
90372 } },91322 } },
90373 }, .{91323 }, .{
90374 .required_features = .{ .avx, null, null, null },91324 .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 },
90376 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },91326 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90377 .patterns = &.{91327 .patterns = &.{
90378 .{ .src = .{ .mem, .none, .none } },91328 .{ .src = .{ .mem, .none, .none } },
...@@ -90380,12 +91330,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90380,12 +91330,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90380 },91330 },
90381 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91331 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90382 .each = .{ .once = &.{91332 .each = .{ .once = &.{
90383 .{ ._, .vp_q, .movzxb, .dst0x, .src0w, ._, ._ },91333 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },
90384 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },91334 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
90385 } },91335 } },
90386 }, .{91336 }, .{
90387 .required_features = .{ .sse4_1, null, null, null },91337 .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 },
90389 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },91339 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90390 .patterns = &.{91340 .patterns = &.{
90391 .{ .src = .{ .mem, .none, .none } },91341 .{ .src = .{ .mem, .none, .none } },
...@@ -90393,12 +91343,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90393,12 +91343,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90393 },91343 },
90394 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91344 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90395 .each = .{ .once = &.{91345 .each = .{ .once = &.{
90396 .{ ._, .p_q, .movsxb, .dst0x, .src0w, ._, ._ },91346 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },
90397 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },91347 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
90398 } },91348 } },
90399 }, .{91349 }, .{
90400 .required_features = .{ .sse4_1, null, null, null },91350 .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 },
90402 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },91352 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90403 .patterns = &.{91353 .patterns = &.{
90404 .{ .src = .{ .mem, .none, .none } },91354 .{ .src = .{ .mem, .none, .none } },
...@@ -90406,18 +91356,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90406,18 +91356,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90406 },91356 },
90407 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91357 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90408 .each = .{ .once = &.{91358 .each = .{ .once = &.{
90409 .{ ._, .p_q, .movzxb, .dst0x, .src0w, ._, ._ },91359 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },
90410 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },91360 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
90411 } },91361 } },
90412 }, .{91362 }, .{
90413 .required_features = .{ .sse2, null, null, null },91363 .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 },
90415 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },91365 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90416 .patterns = &.{91366 .patterns = &.{
90417 .{ .src = .{ .to_mut_sse, .none, .none } },91367 .{ .src = .{ .to_mut_sse, .none, .none } },
90418 },91368 },
90419 .extra_temps = .{91369 .extra_temps = .{
90420 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },91370 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
90421 .unused,91371 .unused,
90422 .unused,91372 .unused,
90423 .unused,91373 .unused,
...@@ -90432,9 +91382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90432,9 +91382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90432 .dst_temps = .{ .{ .ref = .src0 }, .unused },91382 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90433 .each = .{ .once = &.{91383 .each = .{ .once = &.{
90434 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91384 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90435 .{ ._, .p_b, .cmpgt, .tmp0x, .src0x, ._, ._ },91385 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },
90436 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90437 .{ ._, .p_, .unpcklbw, .tmp0x, .tmp0x, ._, ._ },
90438 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },91386 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90439 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },91387 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
90440 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },91388 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
...@@ -90443,13 +91391,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90443,13 +91391,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90443 } },91391 } },
90444 }, .{91392 }, .{
90445 .required_features = .{ .sse2, null, null, null },91393 .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 },
90447 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },91395 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90448 .patterns = &.{91396 .patterns = &.{
90449 .{ .src = .{ .to_mut_sse, .none, .none } },91397 .{ .src = .{ .to_mut_sse, .none, .none } },
90450 },91398 },
90451 .extra_temps = .{91399 .extra_temps = .{
90452 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },91400 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
90453 .unused,91401 .unused,
90454 .unused,91402 .unused,
90455 .unused,91403 .unused,
...@@ -90464,47 +91412,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90464,47 +91412,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90464 .dst_temps = .{ .{ .ref = .src0 }, .unused },91412 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90465 .each = .{ .once = &.{91413 .each = .{ .once = &.{
90466 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91414 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90467 .{ ._, .p_, .unpcklbw, .dst0x, .tmp0x, ._, ._ },
90468 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },91415 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
90469 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },91416 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90470 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },91417 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
90471 } },91418 } },
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 } },
90505 }, .{91419 }, .{
90506 .required_features = .{ .@"64bit", null, null, null },91420 .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 },
90508 .dst_constraints = .{ .any_scalar_signed_int, .any },91422 .dst_constraints = .{ .any_scalar_signed_int, .any },
90509 .patterns = &.{91423 .patterns = &.{
90510 .{ .src = .{ .to_mem, .none, .none } },91424 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90527,50 +91441,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90527,50 +91441,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90527 .each = .{ .once = &.{91441 .each = .{ .once = &.{
90528 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91442 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90529 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },91443 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90530 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },91444 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90531 .{ ._, ._sq, .sto, ._, ._, ._, ._ },91445 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90532 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },91446 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },
90533 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },91447 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90534 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },91448 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90535 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },91449 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
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), ._, ._ },
90569 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91450 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90570 } },91451 } },
90571 }, .{91452 }, .{
90572 .required_features = .{ .@"64bit", null, null, null },91453 .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 },
90574 .dst_constraints = .{ .any_scalar_int, .any },91455 .dst_constraints = .{ .any_scalar_int, .any },
90575 .patterns = &.{91456 .patterns = &.{
90576 .{ .src = .{ .to_mem, .none, .none } },91457 .{ .src = .{ .to_mem, .none, .none } },
...@@ -90593,71 +91474,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90593,71 +91474,71 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90593 .each = .{ .once = &.{91474 .each = .{ .once = &.{
90594 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91475 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90595 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },91476 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
90596 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },91477 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
90597 .{ ._, ._sq, .sto, ._, ._, ._, ._ },91478 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
90598 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },91479 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
90599 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },91480 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
90600 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },91481 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
90601 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },91482 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
90602 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },91483 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90603 } },91484 } },
90604 }, .{91485 }, .{
90605 .required_features = .{ .avx, null, null, null },91486 .required_features = .{ .avx, null, null, null },
90606 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },91487 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90607 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },91488 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90608 .patterns = &.{91489 .patterns = &.{
90609 .{ .src = .{ .mem, .none, .none } },91490 .{ .src = .{ .mem, .none, .none } },
90610 .{ .src = .{ .to_sse, .none, .none } },91491 .{ .src = .{ .to_sse, .none, .none } },
90611 },91492 },
90612 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91493 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90613 .each = .{ .once = &.{91494 .each = .{ .once = &.{
90614 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },91495 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
90615 } },91496 } },
90616 }, .{91497 }, .{
90617 .required_features = .{ .avx, null, null, null },91498 .required_features = .{ .avx, null, null, null },
90618 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },91499 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90619 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },91500 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90620 .patterns = &.{91501 .patterns = &.{
90621 .{ .src = .{ .mem, .none, .none } },91502 .{ .src = .{ .mem, .none, .none } },
90622 .{ .src = .{ .to_sse, .none, .none } },91503 .{ .src = .{ .to_sse, .none, .none } },
90623 },91504 },
90624 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91505 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90625 .each = .{ .once = &.{91506 .each = .{ .once = &.{
90626 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },91507 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
90627 } },91508 } },
90628 }, .{91509 }, .{
90629 .required_features = .{ .sse4_1, null, null, null },91510 .required_features = .{ .sse4_1, null, null, null },
90630 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },91511 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90631 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },91512 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90632 .patterns = &.{91513 .patterns = &.{
90633 .{ .src = .{ .mem, .none, .none } },91514 .{ .src = .{ .mem, .none, .none } },
90634 .{ .src = .{ .to_sse, .none, .none } },91515 .{ .src = .{ .to_sse, .none, .none } },
90635 },91516 },
90636 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91517 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90637 .each = .{ .once = &.{91518 .each = .{ .once = &.{
90638 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },91519 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
90639 } },91520 } },
90640 }, .{91521 }, .{
90641 .required_features = .{ .sse4_1, null, null, null },91522 .required_features = .{ .sse4_1, null, null, null },
90642 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },91523 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90643 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },91524 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90644 .patterns = &.{91525 .patterns = &.{
90645 .{ .src = .{ .mem, .none, .none } },91526 .{ .src = .{ .mem, .none, .none } },
90646 .{ .src = .{ .to_sse, .none, .none } },91527 .{ .src = .{ .to_sse, .none, .none } },
90647 },91528 },
90648 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91529 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90649 .each = .{ .once = &.{91530 .each = .{ .once = &.{
90650 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },91531 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
90651 } },91532 } },
90652 }, .{91533 }, .{
90653 .required_features = .{ .sse2, null, null, null },91534 .required_features = .{ .sse2, null, null, null },
90654 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },91535 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90655 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },91536 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90656 .patterns = &.{91537 .patterns = &.{
90657 .{ .src = .{ .to_mut_sse, .none, .none } },91538 .{ .src = .{ .to_mut_sse, .none, .none } },
90658 },91539 },
90659 .extra_temps = .{91540 .extra_temps = .{
90660 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },91541 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
90661 .unused,91542 .unused,
90662 .unused,91543 .unused,
90663 .unused,91544 .unused,
...@@ -90672,18 +91553,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90672,18 +91553,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90672 .dst_temps = .{ .{ .ref = .src0 }, .unused },91553 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90673 .each = .{ .once = &.{91554 .each = .{ .once = &.{
90674 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91555 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90675 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },91556 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
90676 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },91557 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90677 } },91558 } },
90678 }, .{91559 }, .{
90679 .required_features = .{ .sse2, null, null, null },91560 .required_features = .{ .sse2, null, null, null },
90680 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },91561 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90681 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },91562 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90682 .patterns = &.{91563 .patterns = &.{
90683 .{ .src = .{ .to_mut_sse, .none, .none } },91564 .{ .src = .{ .to_mut_sse, .none, .none } },
90684 },91565 },
90685 .extra_temps = .{91566 .extra_temps = .{
90686 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },91567 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
90687 .unused,91568 .unused,
90688 .unused,91569 .unused,
90689 .unused,91570 .unused,
...@@ -90698,42 +91579,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90698,42 +91579,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90698 .dst_temps = .{ .{ .ref = .src0 }, .unused },91579 .dst_temps = .{ .{ .ref = .src0 }, .unused },
90699 .each = .{ .once = &.{91580 .each = .{ .once = &.{
90700 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91581 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
90701 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },91582 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
90702 } },91583 } },
90703 }, .{91584 }, .{
90704 .required_features = .{ .avx2, null, null, null },91585 .required_features = .{ .avx2, null, null, null },
90705 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },91586 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
90706 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },91587 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
90707 .patterns = &.{91588 .patterns = &.{
90708 .{ .src = .{ .mem, .none, .none } },91589 .{ .src = .{ .mem, .none, .none } },
90709 .{ .src = .{ .to_sse, .none, .none } },91590 .{ .src = .{ .to_sse, .none, .none } },
90710 },91591 },
90711 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91592 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90712 .each = .{ .once = &.{91593 .each = .{ .once = &.{
90713 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },91594 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },
90714 } },91595 } },
90715 }, .{91596 }, .{
90716 .required_features = .{ .avx2, null, null, null },91597 .required_features = .{ .avx2, null, null, null },
90717 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },91598 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
90718 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any },91599 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },
90719 .patterns = &.{91600 .patterns = &.{
90720 .{ .src = .{ .mem, .none, .none } },91601 .{ .src = .{ .mem, .none, .none } },
90721 .{ .src = .{ .to_sse, .none, .none } },91602 .{ .src = .{ .to_sse, .none, .none } },
90722 },91603 },
90723 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91604 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90724 .each = .{ .once = &.{91605 .each = .{ .once = &.{
90725 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },91606 .{ ._, .vp_q, .movzxd, .dst0y, .src0x, ._, ._ },
90726 } },91607 } },
90727 }, .{91608 }, .{
90728 .required_features = .{ .avx2, null, null, null },91609 .required_features = .{ .avx2, null, null, null },
90729 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },91610 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
90730 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },91611 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
90731 .patterns = &.{91612 .patterns = &.{
90732 .{ .src = .{ .to_mem, .none, .none } },91613 .{ .src = .{ .to_mem, .none, .none } },
90733 },91614 },
90734 .extra_temps = .{91615 .extra_temps = .{
90735 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91616 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90736 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },91617 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },
90737 .unused,91618 .unused,
90738 .unused,91619 .unused,
90739 .unused,91620 .unused,
...@@ -90748,21 +91629,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90748,21 +91629,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90748 .clobbers = .{ .eflags = true },91629 .clobbers = .{ .eflags = true },
90749 .each = .{ .once = &.{91630 .each = .{ .once = &.{
90750 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91631 .{ ._, ._, .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), ._, ._ },
90752 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },91633 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90753 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },91634 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
90754 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91635 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90755 } },91636 } },
90756 }, .{91637 }, .{
90757 .required_features = .{ .avx2, null, null, null },91638 .required_features = .{ .avx2, null, null, null },
90758 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },91639 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
90759 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any },91640 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },
90760 .patterns = &.{91641 .patterns = &.{
90761 .{ .src = .{ .to_mem, .none, .none } },91642 .{ .src = .{ .to_mem, .none, .none } },
90762 },91643 },
90763 .extra_temps = .{91644 .extra_temps = .{
90764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90765 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },91646 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },
90766 .unused,91647 .unused,
90767 .unused,91648 .unused,
90768 .unused,91649 .unused,
...@@ -90777,21 +91658,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90777,21 +91658,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90777 .clobbers = .{ .eflags = true },91658 .clobbers = .{ .eflags = true },
90778 .each = .{ .once = &.{91659 .each = .{ .once = &.{
90779 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91660 .{ ._, ._, .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), ._, ._ },
90781 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },91662 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
90782 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },91663 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
90783 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90784 } },91665 } },
90785 }, .{91666 }, .{
90786 .required_features = .{ .avx, null, null, null },91667 .required_features = .{ .avx, null, null, null },
90787 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },91668 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90788 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },91669 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90789 .patterns = &.{91670 .patterns = &.{
90790 .{ .src = .{ .to_mem, .none, .none } },91671 .{ .src = .{ .to_mem, .none, .none } },
90791 },91672 },
90792 .extra_temps = .{91673 .extra_temps = .{
90793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91674 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90794 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },91675 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
90795 .unused,91676 .unused,
90796 .unused,91677 .unused,
90797 .unused,91678 .unused,
...@@ -90806,21 +91687,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90806,21 +91687,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90806 .clobbers = .{ .eflags = true },91687 .clobbers = .{ .eflags = true },
90807 .each = .{ .once = &.{91688 .each = .{ .once = &.{
90808 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91689 .{ ._, ._, .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), ._, ._ },
90810 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91691 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90811 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },91692 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90813 } },91694 } },
90814 }, .{91695 }, .{
90815 .required_features = .{ .avx, null, null, null },91696 .required_features = .{ .avx, null, null, null },
90816 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },91697 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
90817 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },91698 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90818 .patterns = &.{91699 .patterns = &.{
90819 .{ .src = .{ .to_mem, .none, .none } },91700 .{ .src = .{ .to_mem, .none, .none } },
90820 },91701 },
90821 .extra_temps = .{91702 .extra_temps = .{
90822 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91703 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90823 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },91704 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
90824 .unused,91705 .unused,
90825 .unused,91706 .unused,
90826 .unused,91707 .unused,
...@@ -90835,21 +91716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90835,21 +91716,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90835 .clobbers = .{ .eflags = true },91716 .clobbers = .{ .eflags = true },
90836 .each = .{ .once = &.{91717 .each = .{ .once = &.{
90837 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91718 .{ ._, ._, .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), ._, ._ },
90839 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91720 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90840 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },91721 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90841 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91722 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90842 } },91723 } },
90843 }, .{91724 }, .{
90844 .required_features = .{ .sse4_1, null, null, null },91725 .required_features = .{ .sse4_1, null, null, null },
90845 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },91726 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90846 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },91727 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
90847 .patterns = &.{91728 .patterns = &.{
90848 .{ .src = .{ .to_mem, .none, .none } },91729 .{ .src = .{ .to_mem, .none, .none } },
90849 },91730 },
90850 .extra_temps = .{91731 .extra_temps = .{
90851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90852 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },91733 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
90853 .unused,91734 .unused,
90854 .unused,91735 .unused,
90855 .unused,91736 .unused,
...@@ -90864,21 +91745,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90864,21 +91745,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90864 .clobbers = .{ .eflags = true },91745 .clobbers = .{ .eflags = true },
90865 .each = .{ .once = &.{91746 .each = .{ .once = &.{
90866 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91747 .{ ._, ._, .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), ._, ._ },
90868 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91749 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90869 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },91750 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90870 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91751 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90871 } },91752 } },
90872 }, .{91753 }, .{
90873 .required_features = .{ .sse4_1, null, null, null },91754 .required_features = .{ .sse4_1, null, null, null },
90874 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },91755 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
90875 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },91756 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
90876 .patterns = &.{91757 .patterns = &.{
90877 .{ .src = .{ .to_mem, .none, .none } },91758 .{ .src = .{ .to_mem, .none, .none } },
90878 },91759 },
90879 .extra_temps = .{91760 .extra_temps = .{
90880 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90881 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },91762 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
90882 .unused,91763 .unused,
90883 .unused,91764 .unused,
90884 .unused,91765 .unused,
...@@ -90893,20 +91774,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90893,20 +91774,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90893 .clobbers = .{ .eflags = true },91774 .clobbers = .{ .eflags = true },
90894 .each = .{ .once = &.{91775 .each = .{ .once = &.{
90895 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91776 .{ ._, ._, .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), ._, ._ },
90897 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },91778 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
90898 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },91779 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
90899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90900 } },91781 } },
90901 }, .{91782 }, .{
90902 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },91783 .required_features = .{ .@"64bit", null, null, null },
90903 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },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 },
90904 .patterns = &.{91786 .patterns = &.{
90905 .{ .src = .{ .to_mem, .none, .none } },91787 .{ .src = .{ .to_mem, .none, .none } },
90906 },91788 },
90907 .extra_temps = .{91789 .extra_temps = .{
90908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90909 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },91791 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
90910 .unused,91792 .unused,
90911 .unused,91793 .unused,
90912 .unused,91794 .unused,
...@@ -90921,20 +91803,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90921,20 +91803,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90921 .clobbers = .{ .eflags = true },91803 .clobbers = .{ .eflags = true },
90922 .each = .{ .once = &.{91804 .each = .{ .once = &.{
90923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91805 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90924 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },91806 .{ .@"0:", ._d, .movsx, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90925 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },91807 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90926 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },91808 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90927 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91809 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90928 } },91810 } },
90929 }, .{91811 }, .{
90930 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },91812 .required_features = .{ .@"64bit", null, null, null },
90931 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any },91813 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91814 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
90932 .patterns = &.{91815 .patterns = &.{
90933 .{ .src = .{ .to_mem, .none, .none } },91816 .{ .src = .{ .to_mem, .none, .none } },
90934 },91817 },
90935 .extra_temps = .{91818 .extra_temps = .{
90936 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91819 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
90937 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },91820 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
90938 .unused,91821 .unused,
90939 .unused,91822 .unused,
90940 .unused,91823 .unused,
...@@ -90949,68 +91832,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -90949,68 +91832,72 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
90949 .clobbers = .{ .eflags = true },91832 .clobbers = .{ .eflags = true },
90950 .each = .{ .once = &.{91833 .each = .{ .once = &.{
90951 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
90952 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },91835 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
90953 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },91836 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
90954 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },91837 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
90955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
90956 } },91839 } },
90957 }, .{91840 }, .{
90958 .required_features = .{ .avx, null, null, null },91841 .required_features = .{ .avx, null, null, null },
90959 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },91842 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
90960 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },91843 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90961 .patterns = &.{91844 .patterns = &.{
90962 .{ .src = .{ .mem, .none, .none } },91845 .{ .src = .{ .mem, .none, .none } },
90963 .{ .src = .{ .to_sse, .none, .none } },91846 .{ .src = .{ .to_sse, .none, .none } },
90964 },91847 },
90965 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91848 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90966 .each = .{ .once = &.{91849 .each = .{ .once = &.{
90967 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },91850 .{ ._, .vp_q, .movsxd, .dst0x, .src0q, ._, ._ },
91851 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },
90968 } },91852 } },
90969 }, .{91853 }, .{
90970 .required_features = .{ .avx, null, null, null },91854 .required_features = .{ .avx, null, null, null },
90971 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },91855 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
90972 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },91856 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90973 .patterns = &.{91857 .patterns = &.{
90974 .{ .src = .{ .mem, .none, .none } },91858 .{ .src = .{ .mem, .none, .none } },
90975 .{ .src = .{ .to_sse, .none, .none } },91859 .{ .src = .{ .to_sse, .none, .none } },
90976 },91860 },
90977 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91861 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90978 .each = .{ .once = &.{91862 .each = .{ .once = &.{
90979 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },91863 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },
91864 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },
90980 } },91865 } },
90981 }, .{91866 }, .{
90982 .required_features = .{ .sse4_1, null, null, null },91867 .required_features = .{ .sse4_1, null, null, null },
90983 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },91868 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
90984 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },91869 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
90985 .patterns = &.{91870 .patterns = &.{
90986 .{ .src = .{ .mem, .none, .none } },91871 .{ .src = .{ .mem, .none, .none } },
90987 .{ .src = .{ .to_sse, .none, .none } },91872 .{ .src = .{ .to_sse, .none, .none } },
90988 },91873 },
90989 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91874 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
90990 .each = .{ .once = &.{91875 .each = .{ .once = &.{
90991 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },91876 .{ ._, .p_q, .movsxd, .dst0x, .src0q, ._, ._ },
91877 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },
90992 } },91878 } },
90993 }, .{91879 }, .{
90994 .required_features = .{ .sse4_1, null, null, null },91880 .required_features = .{ .sse4_1, null, null, null },
90995 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },91881 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
90996 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },91882 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
90997 .patterns = &.{91883 .patterns = &.{
90998 .{ .src = .{ .mem, .none, .none } },91884 .{ .src = .{ .mem, .none, .none } },
90999 .{ .src = .{ .to_sse, .none, .none } },91885 .{ .src = .{ .to_sse, .none, .none } },
91000 },91886 },
91001 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },91887 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91002 .each = .{ .once = &.{91888 .each = .{ .once = &.{
91003 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },91889 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },
91890 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },
91004 } },91891 } },
91005 }, .{91892 }, .{
91006 .required_features = .{ .sse2, null, null, null },91893 .required_features = .{ .sse2, null, null, null },
91007 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },91894 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91008 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },91895 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
91009 .patterns = &.{91896 .patterns = &.{
91010 .{ .src = .{ .to_mut_sse, .none, .none } },91897 .{ .src = .{ .to_mut_sse, .none, .none } },
91011 },91898 },
91012 .extra_temps = .{91899 .extra_temps = .{
91013 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },91900 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
91014 .unused,91901 .unused,
91015 .unused,91902 .unused,
91016 .unused,91903 .unused,
...@@ -91025,20 +91912,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91025,20 +91912,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91025 .dst_temps = .{ .{ .ref = .src0 }, .unused },91912 .dst_temps = .{ .{ .ref = .src0 }, .unused },
91026 .each = .{ .once = &.{91913 .each = .{ .once = &.{
91027 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91914 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91028 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },91915 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },
91029 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91030 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },
91031 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },91916 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91917 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },
91918 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
91032 } },91919 } },
91033 }, .{91920 }, .{
91034 .required_features = .{ .sse2, null, null, null },91921 .required_features = .{ .sse2, null, null, null },
91035 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },91922 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91036 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },91923 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
91037 .patterns = &.{91924 .patterns = &.{
91038 .{ .src = .{ .to_mut_sse, .none, .none } },91925 .{ .src = .{ .to_mut_sse, .none, .none } },
91039 },91926 },
91040 .extra_temps = .{91927 .extra_temps = .{
91041 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },91928 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
91042 .unused,91929 .unused,
91043 .unused,91930 .unused,
91044 .unused,91931 .unused,
...@@ -91053,45 +91940,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91053,45 +91940,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91053 .dst_temps = .{ .{ .ref = .src0 }, .unused },91940 .dst_temps = .{ .{ .ref = .src0 }, .unused },
91054 .each = .{ .once = &.{91941 .each = .{ .once = &.{
91055 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },91942 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
91056 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },
91057 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },91943 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91944 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },
91058 } },91945 } },
91059 }, .{91946 }, .{
91060 .required_features = .{ .avx2, null, null, null },91947 .required_features = .{ .@"64bit", null, null, null },
91061 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },91948 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91062 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },91949 .dst_constraints = .{ .any_scalar_signed_int, .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 },
91087 .patterns = &.{91950 .patterns = &.{
91088 .{ .src = .{ .to_mem, .none, .none } },91951 .{ .src = .{ .to_mem, .none, .none } },
91089 },91952 },
91090 .extra_temps = .{91953 .extra_temps = .{
91091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91954 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91092 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },91955 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91093 .unused,91956 .{ .type = .i64, .kind = .{ .reg = .rax } },
91094 .unused,91957 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91095 .unused,91958 .unused,
91096 .unused,91959 .unused,
91097 .unused,91960 .unused,
...@@ -91104,23 +91967,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91104,23 +91967,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91104 .clobbers = .{ .eflags = true },91967 .clobbers = .{ .eflags = true },
91105 .each = .{ .once = &.{91968 .each = .{ .once = &.{
91106 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },91969 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91107 .{ .@"0:", .vp_q, .movsxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },91970 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
91108 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },91971 .{ .@"0:", ._d, .movsx, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91109 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
91110 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },91977 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91111 } },91978 } },
91112 }, .{91979 }, .{
91113 .required_features = .{ .avx2, null, null, null },91980 .required_features = .{ .@"64bit", null, null, null },
91114 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },91981 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
91115 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },91982 .dst_constraints = .{ .any_scalar_int, .any },
91116 .patterns = &.{91983 .patterns = &.{
91117 .{ .src = .{ .to_mem, .none, .none } },91984 .{ .src = .{ .to_mem, .none, .none } },
91118 },91985 },
91119 .extra_temps = .{91986 .extra_temps = .{
91120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },91987 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91121 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },91988 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91122 .unused,91989 .{ .type = .u64, .kind = .{ .reg = .rax } },
91123 .unused,91990 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91124 .unused,91991 .unused,
91125 .unused,91992 .unused,
91126 .unused,91993 .unused,
...@@ -91133,24 +92000,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91133,24 +92000,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91133 .clobbers = .{ .eflags = true },92000 .clobbers = .{ .eflags = true },
91134 .each = .{ .once = &.{92001 .each = .{ .once = &.{
91135 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92002 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
91136 .{ .@"0:", .vp_q, .movzxw, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },92003 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
91137 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },92004 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
91138 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
91139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },92010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91140 } },92011 } },
91141 }, .{92012 }, .{
91142 .required_features = .{ .avx, null, null, null },92013 .required_features = .{ .@"64bit", .slow_incdec, null, null },
91143 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },92014 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
91144 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },92015 .dst_constraints = .{ .any_scalar_signed_int, .any },
91145 .patterns = &.{92016 .patterns = &.{
91146 .{ .src = .{ .to_mem, .none, .none } },92017 .{ .src = .{ .to_mem, .none, .none } },
91147 },92018 },
91148 .extra_temps = .{92019 .extra_temps = .{
91149 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92020 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
91150 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },92021 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91151 .unused,92022 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91152 .unused,92023 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91153 .unused,92024 .{ .type = .i64, .kind = .{ .reg = .rax } },
91154 .unused,92025 .unused,
91155 .unused,92026 .unused,
91156 .unused,92027 .unused,
...@@ -91161,25 +92032,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91161,25 +92032,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91161 .dst_temps = .{ .mem, .unused },92032 .dst_temps = .{ .mem, .unused },
91162 .clobbers = .{ .eflags = true },92033 .clobbers = .{ .eflags = true },
91163 .each = .{ .once = &.{92034 .each = .{ .once = &.{
91164 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92035 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
91165 .{ .@"0:", .vp_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },92036 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
91166 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },92037 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
91167 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },92038 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
91168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
91169 } },92047 } },
91170 }, .{92048 }, .{
91171 .required_features = .{ .avx, null, null, null },92049 .required_features = .{ .@"64bit", null, null, null },
91172 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },92050 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
91173 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },92051 .dst_constraints = .{ .any_scalar_signed_int, .any },
91174 .patterns = &.{92052 .patterns = &.{
91175 .{ .src = .{ .to_mem, .none, .none } },92053 .{ .src = .{ .to_mem, .none, .none } },
91176 },92054 },
91177 .extra_temps = .{92055 .extra_temps = .{
91178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
91179 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },92057 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91180 .unused,92058 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91181 .unused,92059 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91182 .unused,92060 .{ .type = .i64, .kind = .{ .reg = .rax } },
91183 .unused,92061 .unused,
91184 .unused,92062 .unused,
91185 .unused,92063 .unused,
...@@ -91190,25 +92068,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91190,25 +92068,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91190 .dst_temps = .{ .mem, .unused },92068 .dst_temps = .{ .mem, .unused },
91191 .clobbers = .{ .eflags = true },92069 .clobbers = .{ .eflags = true },
91192 .each = .{ .once = &.{92070 .each = .{ .once = &.{
91193 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92071 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
91194 .{ .@"0:", .vp_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },92072 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
91195 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },92073 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
91196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },92074 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },
91197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
91198 } },92083 } },
91199 }, .{92084 }, .{
91200 .required_features = .{ .sse4_1, null, null, null },92085 .required_features = .{ .@"64bit", .slow_incdec, null, null },
91201 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },92086 .src_constraints = .{ .any_scalar_int, .any, .any },
91202 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },92087 .dst_constraints = .{ .any_scalar_int, .any },
91203 .patterns = &.{92088 .patterns = &.{
91204 .{ .src = .{ .to_mem, .none, .none } },92089 .{ .src = .{ .to_mem, .none, .none } },
91205 },92090 },
91206 .extra_temps = .{92091 .extra_temps = .{
91207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92092 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
91208 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },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,
91209 .unused,92100 .unused,
91210 .unused,92101 .unused,
91211 .unused,92102 .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 } },
91212 .unused,92131 .unused,
91213 .unused,92132 .unused,
91214 .unused,92133 .unused,
...@@ -91219,23 +92138,346 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91219,23 +92138,346 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91219 .dst_temps = .{ .mem, .unused },92138 .dst_temps = .{ .mem, .unused },
91220 .clobbers = .{ .eflags = true },92139 .clobbers = .{ .eflags = true },
91221 .each = .{ .once = &.{92140 .each = .{ .once = &.{
91222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92141 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
91223 .{ .@"0:", .p_q, .movsxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },92142 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
91224 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },92143 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
91225 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },92144 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },
91226 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._, ._ },
91227 } },92179 } },
91228 }, .{92180 }, .{
91229 .required_features = .{ .sse4_1, null, null, null },92181 .src_constraints = .{ .any_signed_int, .any, .any },
91230 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },92182 .dst_constraints = .{ .{ .exact_signed_int = 1 }, .any },
91231 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .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 },
91232 .patterns = &.{92474 .patterns = &.{
91233 .{ .src = .{ .to_mem, .none, .none } },92475 .{ .src = .{ .to_mem, .none, .none } },
91234 },92476 },
91235 .extra_temps = .{92477 .extra_temps = .{
91236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92478 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91237 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },92479 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91238 .unused,92480 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91239 .unused,92481 .unused,
91240 .unused,92482 .unused,
91241 .unused,92483 .unused,
...@@ -91246,25 +92488,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91246,25 +92488,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91246 .unused,92488 .unused,
91247 },92489 },
91248 .dst_temps = .{ .mem, .unused },92490 .dst_temps = .{ .mem, .unused },
91249 .clobbers = .{ .eflags = true },
91250 .each = .{ .once = &.{92491 .each = .{ .once = &.{
91251 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92492 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91252 .{ .@"0:", .p_q, .movzxw, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },92493 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91253 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },92494 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
91254 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },92495 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
91255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91256 } },92496 } },
91257 }, .{92497 }, .{
91258 .required_features = .{ .@"64bit", null, null, null },92498 .required_features = .{ .@"64bit", null, null, null },
91259 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },92499 .src_constraints = .{ .any_signed_int, .any, .any },
91260 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },92500 .dst_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any },
91261 .patterns = &.{92501 .patterns = &.{
91262 .{ .src = .{ .to_mem, .none, .none } },92502 .{ .src = .{ .to_mem, .none, .none } },
91263 },92503 },
91264 .extra_temps = .{92504 .extra_temps = .{
91265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92505 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91266 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },92506 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91267 .unused,92507 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91268 .unused,92508 .unused,
91269 .unused,92509 .unused,
91270 .unused,92510 .unused,
...@@ -91277,23 +92517,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91277,23 +92517,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91277 .dst_temps = .{ .mem, .unused },92517 .dst_temps = .{ .mem, .unused },
91278 .clobbers = .{ .eflags = true },92518 .clobbers = .{ .eflags = true },
91279 .each = .{ .once = &.{92519 .each = .{ .once = &.{
91280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92520 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91281 .{ .@"0:", ._, .movsx, .tmp1q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },92521 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91282 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },92522 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
91283 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },92523 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
91284 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
91285 } },92528 } },
91286 }, .{92529 }, .{
91287 .required_features = .{ .@"64bit", null, null, null },92530 .required_features = .{ .@"64bit", null, null, null },
91288 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },92531 .src_constraints = .{ .any_signed_int, .any, .any },
91289 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },92532 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
91290 .patterns = &.{92533 .patterns = &.{
91291 .{ .src = .{ .to_mem, .none, .none } },92534 .{ .src = .{ .to_mem, .none, .none } },
91292 },92535 },
91293 .extra_temps = .{92536 .extra_temps = .{
91294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92537 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91295 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },92538 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91296 .unused,92539 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91297 .unused,92540 .unused,
91298 .unused,92541 .unused,
91299 .unused,92542 .unused,
...@@ -91306,75 +92549,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91306,75 +92549,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91306 .dst_temps = .{ .mem, .unused },92549 .dst_temps = .{ .mem, .unused },
91307 .clobbers = .{ .eflags = true },92550 .clobbers = .{ .eflags = true },
91308 .each = .{ .once = &.{92551 .each = .{ .once = &.{
91309 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92552 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91310 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },92553 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91311 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },92554 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
91312 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },92555 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
91313 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
91314 } },92562 } },
91315 }, .{92563 }, .{
91316 .required_features = .{ .avx, null, null, null },92564 .required_features = .{ .@"64bit", null, null, null },
91317 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },92565 .src_constraints = .{ .any_signed_int, .any, .any },
91318 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },92566 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
91319 .patterns = &.{92567 .patterns = &.{
91320 .{ .src = .{ .mem, .none, .none } },92568 .{ .src = .{ .to_mem, .none, .none } },
91321 .{ .src = .{ .to_sse, .none, .none } },
91322 },92569 },
91323 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92570 .extra_temps = .{
91324 .each = .{ .once = &.{92571 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91325 .{ ._, .vp_q, .movsxw, .dst0x, .src0d, ._, ._ },92572 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91326 .{ ._, .vp_q, .movsxd, .dst0x, .dst0q, ._, ._ },92573 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91327 } },92574 .unused,
91328 }, .{92575 .unused,
91329 .required_features = .{ .avx, null, null, null },92576 .unused,
91330 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },92577 .unused,
91331 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },92578 .unused,
91332 .patterns = &.{92579 .unused,
91333 .{ .src = .{ .mem, .none, .none } },92580 .unused,
91334 .{ .src = .{ .to_sse, .none, .none } },92581 .unused,
91335 },92582 },
91336 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92583 .dst_temps = .{ .mem, .unused },
92584 .clobbers = .{ .eflags = true },
91337 .each = .{ .once = &.{92585 .each = .{ .once = &.{
91338 .{ ._, .vp_q, .movzxw, .dst0x, .src0d, ._, ._ },92586 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91339 .{ ._, .vp_q, .movzxd, .dst0x, .dst0q, ._, ._ },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, ._, ._ },
91340 } },92594 } },
91341 }, .{92595 }, .{
91342 .required_features = .{ .sse4_1, null, null, null },92596 .required_features = .{ .@"64bit", null, null, null },
91343 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },92597 .src_constraints = .{ .any_unsigned_int, .any, .any },
91344 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },92598 .dst_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any },
91345 .patterns = &.{92599 .patterns = &.{
91346 .{ .src = .{ .mem, .none, .none } },92600 .{ .src = .{ .to_mem, .none, .none } },
91347 .{ .src = .{ .to_sse, .none, .none } },
91348 },92601 },
91349 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92602 .extra_temps = .{
91350 .each = .{ .once = &.{92603 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91351 .{ ._, .p_q, .movsxw, .dst0x, .src0d, ._, ._ },92604 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91352 .{ ._, .p_q, .movsxd, .dst0x, .dst0q, ._, ._ },92605 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91353 } },92606 .unused,
91354 }, .{92607 .unused,
91355 .required_features = .{ .sse4_1, null, null, null },92608 .unused,
91356 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },92609 .unused,
91357 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },92610 .unused,
91358 .patterns = &.{92611 .unused,
91359 .{ .src = .{ .mem, .none, .none } },92612 .unused,
91360 .{ .src = .{ .to_sse, .none, .none } },92613 .unused,
91361 },92614 },
91362 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92615 .dst_temps = .{ .mem, .unused },
91363 .each = .{ .once = &.{92616 .each = .{ .once = &.{
91364 .{ ._, .p_q, .movzxw, .dst0x, .src0d, ._, ._ },92617 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91365 .{ ._, .p_q, .movzxd, .dst0x, .dst0q, ._, ._ },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), ._, ._ },
91366 } },92622 } },
91367 }, .{92623 }, .{
91368 .required_features = .{ .sse2, null, null, null },92624 .required_features = .{ .@"64bit", .bmi2, null, null },
91369 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },92625 .src_constraints = .{ .any_unsigned_int, .any, .any },
91370 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },92626 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
91371 .patterns = &.{92627 .patterns = &.{
91372 .{ .src = .{ .to_mut_sse, .none, .none } },92628 .{ .src = .{ .to_mem, .none, .none } },
91373 },92629 },
91374 .extra_temps = .{92630 .extra_temps = .{
91375 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },92631 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91376 .unused,92632 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91377 .unused,92633 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91378 .unused,92634 .unused,
91379 .unused,92635 .unused,
91380 .unused,92636 .unused,
...@@ -91384,27 +92640,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91384,27 +92640,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91384 .unused,92640 .unused,
91385 .unused,92641 .unused,
91386 },92642 },
91387 .dst_temps = .{ .{ .ref = .src0 }, .unused },92643 .dst_temps = .{ .mem, .unused },
92644 .clobbers = .{ .eflags = true },
91388 .each = .{ .once = &.{92645 .each = .{ .once = &.{
91389 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },92646 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91390 .{ ._, .p_w, .cmpgt, .tmp0x, .src0x, ._, ._ },92647 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91391 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },92648 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
91392 .{ ._, .p_, .unpcklwd, .tmp0x, .tmp0x, ._, ._ },92649 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
91393 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },92650 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
91394 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },92651 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },
91395 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },92652 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
92653 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
91396 } },92654 } },
91397 }, .{92655 }, .{
91398 .required_features = .{ .sse2, null, null, null },92656 .required_features = .{ .@"64bit", .bmi2, null, null },
91399 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .word } }, .any, .any },92657 .src_constraints = .{ .any_unsigned_int, .any, .any },
91400 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },92658 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
91401 .patterns = &.{92659 .patterns = &.{
91402 .{ .src = .{ .to_mut_sse, .none, .none } },92660 .{ .src = .{ .to_mem, .none, .none } },
91403 },92661 },
91404 .extra_temps = .{92662 .extra_temps = .{
91405 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },92663 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91406 .unused,92664 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91407 .unused,92665 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91408 .unused,92666 .unused,
91409 .unused,92667 .unused,
91410 .unused,92668 .unused,
...@@ -91414,24 +92672,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91414,24 +92672,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91414 .unused,92672 .unused,
91415 .unused,92673 .unused,
91416 },92674 },
91417 .dst_temps = .{ .{ .ref = .src0 }, .unused },92675 .dst_temps = .{ .mem, .unused },
92676 .clobbers = .{ .eflags = true },
91418 .each = .{ .once = &.{92677 .each = .{ .once = &.{
91419 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },92678 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91420 .{ ._, .p_, .unpcklwd, .dst0x, .tmp0x, ._, ._ },92679 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91421 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },92680 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
91422 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },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, ._, ._ },
91423 } },92685 } },
91424 }, .{92686 }, .{
91425 .required_features = .{ .@"64bit", null, null, null },92687 .required_features = .{ .@"64bit", null, null, null },
91426 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },92688 .src_constraints = .{ .any_unsigned_int, .any, .any },
91427 .dst_constraints = .{ .any_scalar_signed_int, .any },92689 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
91428 .patterns = &.{92690 .patterns = &.{
91429 .{ .src = .{ .to_mem, .none, .none } },92691 .{ .src = .{ .to_mem, .none, .none } },
91430 },92692 },
91431 .extra_temps = .{92693 .extra_temps = .{
91432 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92694 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91433 .{ .type = .usize, .kind = .{ .reg = .rdi } },92695 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91434 .{ .type = .i64, .kind = .{ .reg = .rax } },
91435 .{ .type = .u32, .kind = .{ .reg = .ecx } },92696 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91436 .unused,92697 .unused,
91437 .unused,92698 .unused,
...@@ -91440,31 +92701,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91440,31 +92701,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91440 .unused,92701 .unused,
91441 .unused,92702 .unused,
91442 .unused,92703 .unused,
92704 .unused,
91443 },92705 },
91444 .dst_temps = .{ .mem, .unused },92706 .dst_temps = .{ .mem, .unused },
91445 .clobbers = .{ .eflags = true },92707 .clobbers = .{ .eflags = true },
91446 .each = .{ .once = &.{92708 .each = .{ .once = &.{
91447 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92709 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91448 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },92710 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91449 .{ .@"0:", ._, .movsx, .tmp2q, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },92711 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
91450 .{ ._, ._sq, .sto, ._, ._, ._, ._ },92712 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
91451 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },92713 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
91452 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },92714 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },
91453 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },92715 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
91454 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },92716 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
91455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91456 } },92717 } },
91457 }, .{92718 }, .{
91458 .required_features = .{ .@"64bit", null, null, null },92719 .required_features = .{ .@"64bit", null, null, null },
91459 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },92720 .src_constraints = .{ .any_unsigned_int, .any, .any },
91460 .dst_constraints = .{ .any_scalar_int, .any },92721 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
91461 .patterns = &.{92722 .patterns = &.{
91462 .{ .src = .{ .to_mem, .none, .none } },92723 .{ .src = .{ .to_mem, .none, .none } },
91463 },92724 },
91464 .extra_temps = .{92725 .extra_temps = .{
91465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92726 .{ .type = .usize, .kind = .{ .reg = .rsi } },
91466 .{ .type = .usize, .kind = .{ .reg = .rdi } },92727 .{ .type = .usize, .kind = .{ .reg = .rdi } },
91467 .{ .type = .u64, .kind = .{ .reg = .rax } },
91468 .{ .type = .u32, .kind = .{ .reg = .ecx } },92728 .{ .type = .u32, .kind = .{ .reg = .ecx } },
91469 .unused,92729 .unused,
91470 .unused,92730 .unused,
...@@ -91473,78 +92733,135 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91473,78 +92733,135 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91473 .unused,92733 .unused,
91474 .unused,92734 .unused,
91475 .unused,92735 .unused,
92736 .unused,
91476 },92737 },
91477 .dst_temps = .{ .mem, .unused },92738 .dst_temps = .{ .mem, .unused },
91478 .clobbers = .{ .eflags = true },92739 .clobbers = .{ .eflags = true },
91479 .each = .{ .once = &.{92740 .each = .{ .once = &.{
91480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92741 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
91481 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },92742 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
91482 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },92743 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
91483 .{ ._, ._sq, .sto, ._, ._, ._, ._ },92744 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
91484 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },92745 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },
91485 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },92746 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
91486 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },92747 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
91487 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
91488 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91489 } },92748 } },
91490 }, .{92749 }, .{
91491 .required_features = .{ .avx, null, null, null },92750 .required_features = .{ .avx, null, null, null },
91492 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },92751 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91493 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },92752 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
91494 .patterns = &.{92753 .patterns = &.{
91495 .{ .src = .{ .mem, .none, .none } },
91496 .{ .src = .{ .to_sse, .none, .none } },92754 .{ .src = .{ .to_sse, .none, .none } },
91497 },92755 },
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 },
91498 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92769 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91499 .each = .{ .once = &.{92770 .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), ._ },
91501 } },92776 } },
91502 }, .{92777 }, .{
91503 .required_features = .{ .avx, null, null, null },92778 .required_features = .{ .avx, null, null, null },
91504 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },92779 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91505 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },92780 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
91506 .patterns = &.{92781 .patterns = &.{
91507 .{ .src = .{ .mem, .none, .none } },
91508 .{ .src = .{ .to_sse, .none, .none } },92782 .{ .src = .{ .to_sse, .none, .none } },
91509 },92783 },
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 },
91510 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92797 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91511 .each = .{ .once = &.{92798 .each = .{ .once = &.{
91512 .{ ._, .vp_q, .movzxd, .dst0x, .src0q, ._, ._ },92799 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92800 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
91513 } },92801 } },
91514 }, .{92802 }, .{
91515 .required_features = .{ .sse4_1, null, null, null },92803 .required_features = .{ .sse2, null, null, null },
91516 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },92804 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91517 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },92805 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
91518 .patterns = &.{92806 .patterns = &.{
91519 .{ .src = .{ .mem, .none, .none } },92807 .{ .src = .{ .to_mut_sse, .none, .none } },
91520 .{ .src = .{ .to_sse, .none, .none } },
91521 },92808 },
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 },
91523 .each = .{ .once = &.{92823 .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), ._, ._ },
91525 } },92829 } },
91526 }, .{92830 }, .{
91527 .required_features = .{ .sse4_1, null, null, null },92831 .required_features = .{ .sse2, null, null, null },
91528 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },92832 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91529 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },92833 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
91530 .patterns = &.{92834 .patterns = &.{
91531 .{ .src = .{ .mem, .none, .none } },92835 .{ .src = .{ .to_mut_sse, .none, .none } },
91532 .{ .src = .{ .to_sse, .none, .none } },
91533 },92836 },
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 },
91535 .each = .{ .once = &.{92851 .each = .{ .once = &.{
91536 .{ ._, .p_q, .movzxd, .dst0x, .src0q, ._, ._ },92852 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92853 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
91537 } },92854 } },
91538 }, .{92855 }, .{
91539 .required_features = .{ .sse2, null, null, null },92856 .required_features = .{ .sse, null, null, null },
91540 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },92857 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91541 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },92858 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
91542 .patterns = &.{92859 .patterns = &.{
91543 .{ .src = .{ .to_mut_sse, .none, .none } },92860 .{ .src = .{ .to_mut_sse, .none, .none } },
91544 },92861 },
91545 .extra_temps = .{92862 .extra_temps = .{
91546 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },92863 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
91547 .unused,92864 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
91548 .unused,92865 .unused,
91549 .unused,92866 .unused,
91550 .unused,92867 .unused,
...@@ -91557,21 +92874,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91557,21 +92874,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91557 },92874 },
91558 .dst_temps = .{ .{ .ref = .src0 }, .unused },92875 .dst_temps = .{ .{ .ref = .src0 }, .unused },
91559 .each = .{ .once = &.{92876 .each = .{ .once = &.{
91560 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },92877 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
91561 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },92878 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
91562 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },
91563 } },92879 } },
91564 }, .{92880 }, .{
91565 .required_features = .{ .sse2, null, null, null },92881 .required_features = .{ .avx2, null, null, null },
91566 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },92882 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
91567 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .qword } }, .any },92883 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
91568 .patterns = &.{92884 .patterns = &.{
91569 .{ .src = .{ .to_mut_sse, .none, .none } },92885 .{ .src = .{ .to_sse, .none, .none } },
91570 },92886 },
91571 .extra_temps = .{92887 .extra_temps = .{
91572 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },92888 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
91573 .unused,92889 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91574 .unused,92890 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
91575 .unused,92891 .unused,
91576 .unused,92892 .unused,
91577 .unused,92893 .unused,
...@@ -91581,47 +92897,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91581,47 +92897,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91581 .unused,92897 .unused,
91582 .unused,92898 .unused,
91583 },92899 },
91584 .dst_temps = .{ .{ .ref = .src0 }, .unused },92900 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91585 .each = .{ .once = &.{92901 .each = .{ .once = &.{
91586 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },92902 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
91587 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },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), ._ },
91588 } },92907 } },
91589 }, .{92908 }, .{
91590 .required_features = .{ .avx2, null, null, null },92909 .required_features = .{ .avx2, null, null, null },
91591 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },92910 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
91592 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },92911 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
91593 .patterns = &.{92912 .patterns = &.{
91594 .{ .src = .{ .mem, .none, .none } },
91595 .{ .src = .{ .to_sse, .none, .none } },92913 .{ .src = .{ .to_sse, .none, .none } },
91596 },92914 },
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 },
91597 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },92928 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
91598 .each = .{ .once = &.{92929 .each = .{ .once = &.{
91599 .{ ._, .vp_q, .movsxd, .dst0y, .src0x, ._, ._ },92930 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
92931 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
91600 } },92932 } },
91601 }, .{92933 }, .{
91602 .required_features = .{ .avx2, null, null, null },92934 .required_features = .{ .avx2, null, null, null },
91603 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },92935 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },
91604 .dst_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .qword } }, .any },92936 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },
91605 .patterns = &.{92937 .patterns = &.{
91606 .{ .src = .{ .mem, .none, .none } },92938 .{ .src = .{ .to_mem, .none, .none } },
91607 .{ .src = .{ .to_sse, .none, .none } },
91608 },92939 },
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 },
91610 .each = .{ .once = &.{92955 .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", ._, ._, ._ },
91612 } },92967 } },
91613 }, .{92968 }, .{
91614 .required_features = .{ .avx2, null, null, null },92969 .required_features = .{ .avx2, null, null, null },
91615 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },92970 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },
91616 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },92971 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
91617 .patterns = &.{92972 .patterns = &.{
91618 .{ .src = .{ .to_mem, .none, .none } },92973 .{ .src = .{ .to_mem, .none, .none } },
91619 },92974 },
91620 .extra_temps = .{92975 .extra_temps = .{
91621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },92976 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91622 .{ .type = .vector_4_i64, .kind = .{ .rc = .sse } },92977 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
91623 .unused,92978 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
91624 .unused,92979 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91625 .unused,92980 .unused,
91626 .unused,92981 .unused,
91627 .unused,92982 .unused,
...@@ -91633,26 +92988,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91633,26 +92988,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91633 .dst_temps = .{ .mem, .unused },92988 .dst_temps = .{ .mem, .unused },
91634 .clobbers = .{ .eflags = true },92989 .clobbers = .{ .eflags = true },
91635 .each = .{ .once = &.{92990 .each = .{ .once = &.{
91636 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },92991 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
91637 .{ .@"0:", .vp_q, .movsxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },92992 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
91638 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },92993 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91639 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },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), ._, ._ },
91640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },92997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91641 } },92998 } },
91642 }, .{92999 }, .{
91643 .required_features = .{ .avx2, null, null, null },93000 .required_features = .{ .avx, null, null, null },
91644 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },93001 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91645 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .qword } }, .any },93002 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
91646 .patterns = &.{93003 .patterns = &.{
91647 .{ .src = .{ .to_mem, .none, .none } },93004 .{ .src = .{ .to_mem, .none, .none } },
91648 },93005 },
91649 .extra_temps = .{93006 .extra_temps = .{
91650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91651 .{ .type = .vector_4_u64, .kind = .{ .rc = .sse } },93008 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91652 .unused,93009 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91653 .unused,93010 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91654 .unused,93011 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91655 .unused,93012 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
91656 .unused,93013 .unused,
91657 .unused,93014 .unused,
91658 .unused,93015 .unused,
...@@ -91662,24 +93019,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91662,24 +93019,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91662 .dst_temps = .{ .mem, .unused },93019 .dst_temps = .{ .mem, .unused },
91663 .clobbers = .{ .eflags = true },93020 .clobbers = .{ .eflags = true },
91664 .each = .{ .once = &.{93021 .each = .{ .once = &.{
91665 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93022 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
91666 .{ .@"0:", .vp_q, .movzxd, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },93023 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
91667 .{ ._, .v_dqa, .mov, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },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, ._, ._ },
91668 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },93031 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
91669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93032 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91670 } },93033 } },
91671 }, .{93034 }, .{
91672 .required_features = .{ .avx, null, null, null },93035 .required_features = .{ .avx, null, null, null },
91673 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },93036 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91674 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },93037 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
91675 .patterns = &.{93038 .patterns = &.{
91676 .{ .src = .{ .to_mem, .none, .none } },93039 .{ .src = .{ .to_mem, .none, .none } },
91677 },93040 },
91678 .extra_temps = .{93041 .extra_temps = .{
91679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91680 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },93043 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91681 .unused,93044 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91682 .unused,93045 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91683 .unused,93046 .unused,
91684 .unused,93047 .unused,
91685 .unused,93048 .unused,
...@@ -91691,26 +93054,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91691,26 +93054,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91691 .dst_temps = .{ .mem, .unused },93054 .dst_temps = .{ .mem, .unused },
91692 .clobbers = .{ .eflags = true },93055 .clobbers = .{ .eflags = true },
91693 .each = .{ .once = &.{93056 .each = .{ .once = &.{
91694 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93057 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
91695 .{ .@"0:", .vp_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },93058 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
91696 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },93059 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91697 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
91698 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91699 } },93064 } },
91700 }, .{93065 }, .{
91701 .required_features = .{ .avx, null, null, null },93066 .required_features = .{ .sse2, null, null, null },
91702 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },93067 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91703 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },93068 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
91704 .patterns = &.{93069 .patterns = &.{
91705 .{ .src = .{ .to_mem, .none, .none } },93070 .{ .src = .{ .to_mem, .none, .none } },
91706 },93071 },
91707 .extra_temps = .{93072 .extra_temps = .{
91708 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93073 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91709 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },93074 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91710 .unused,93075 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91711 .unused,93076 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },
91712 .unused,93077 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91713 .unused,93078 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },
91714 .unused,93079 .unused,
91715 .unused,93080 .unused,
91716 .unused,93081 .unused,
...@@ -91720,24 +93085,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91720,24 +93085,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91720 .dst_temps = .{ .mem, .unused },93085 .dst_temps = .{ .mem, .unused },
91721 .clobbers = .{ .eflags = true },93086 .clobbers = .{ .eflags = true },
91722 .each = .{ .once = &.{93087 .each = .{ .once = &.{
91723 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
91724 .{ .@"0:", .vp_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },93089 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
91725 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },93090 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
91726 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
91727 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91728 } },93100 } },
91729 }, .{93101 }, .{
91730 .required_features = .{ .sse4_1, null, null, null },93102 .required_features = .{ .sse2, null, null, null },
91731 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },93103 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91732 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },93104 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
91733 .patterns = &.{93105 .patterns = &.{
91734 .{ .src = .{ .to_mem, .none, .none } },93106 .{ .src = .{ .to_mem, .none, .none } },
91735 },93107 },
91736 .extra_temps = .{93108 .extra_temps = .{
91737 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93109 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91738 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },93110 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91739 .unused,93111 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91740 .unused,93112 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91741 .unused,93113 .unused,
91742 .unused,93114 .unused,
91743 .unused,93115 .unused,
...@@ -91749,24 +93121,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91749,24 +93121,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91749 .dst_temps = .{ .mem, .unused },93121 .dst_temps = .{ .mem, .unused },
91750 .clobbers = .{ .eflags = true },93122 .clobbers = .{ .eflags = true },
91751 .each = .{ .once = &.{93123 .each = .{ .once = &.{
91752 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93124 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
91753 .{ .@"0:", .p_q, .movsxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },93125 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
91754 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },93126 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91755 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
91756 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93131 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91757 } },93132 } },
91758 }, .{93133 }, .{
91759 .required_features = .{ .sse4_1, null, null, null },93134 .required_features = .{ .sse, null, null, null },
91760 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },93135 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },
91761 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },93136 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
91762 .patterns = &.{93137 .patterns = &.{
91763 .{ .src = .{ .to_mem, .none, .none } },93138 .{ .src = .{ .to_mem, .none, .none } },
91764 },93139 },
91765 .extra_temps = .{93140 .extra_temps = .{
91766 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93141 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91767 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },93142 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91768 .unused,93143 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
91769 .unused,93144 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
91770 .unused,93145 .unused,
91771 .unused,93146 .unused,
91772 .unused,93147 .unused,
...@@ -91778,22 +93153,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91778,22 +93153,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91778 .dst_temps = .{ .mem, .unused },93153 .dst_temps = .{ .mem, .unused },
91779 .clobbers = .{ .eflags = true },93154 .clobbers = .{ .eflags = true },
91780 .each = .{ .once = &.{93155 .each = .{ .once = &.{
91781 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93156 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
91782 .{ .@"0:", .p_q, .movzxd, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },93157 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
91783 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },93158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91784 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
91785 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91786 } },93164 } },
91787 }, .{93165 }, .{
91788 .required_features = .{ .@"64bit", null, null, null },93166 .required_features = .{ .slow_incdec, null, null, null },
91789 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },93167 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91790 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },93168 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
91791 .patterns = &.{93169 .patterns = &.{
91792 .{ .src = .{ .to_mem, .none, .none } },93170 .{ .src = .{ .to_mem, .none, .none } },
91793 },93171 },
91794 .extra_temps = .{93172 .extra_temps = .{
91795 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93173 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91796 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },93174 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
91797 .unused,93175 .unused,
91798 .unused,93176 .unused,
91799 .unused,93177 .unused,
...@@ -91807,22 +93185,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91807,22 +93185,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91807 .dst_temps = .{ .mem, .unused },93185 .dst_temps = .{ .mem, .unused },
91808 .clobbers = .{ .eflags = true },93186 .clobbers = .{ .eflags = true },
91809 .each = .{ .once = &.{93187 .each = .{ .once = &.{
91810 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93188 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91811 .{ .@"0:", ._d, .movsx, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },93189 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91812 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },93190 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
91813 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },93191 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
93192 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93193 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
91814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93194 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91815 } },93195 } },
91816 }, .{93196 }, .{
91817 .required_features = .{ .@"64bit", null, null, null },93197 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91818 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },93198 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
91819 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any },
91820 .patterns = &.{93199 .patterns = &.{
91821 .{ .src = .{ .to_mem, .none, .none } },93200 .{ .src = .{ .to_mem, .none, .none } },
91822 },93201 },
91823 .extra_temps = .{93202 .extra_temps = .{
91824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91825 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },93204 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
91826 .unused,93205 .unused,
91827 .unused,93206 .unused,
91828 .unused,93207 .unused,
...@@ -91836,74 +93215,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91836,74 +93215,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91836 .dst_temps = .{ .mem, .unused },93215 .dst_temps = .{ .mem, .unused },
91837 .clobbers = .{ .eflags = true },93216 .clobbers = .{ .eflags = true },
91838 .each = .{ .once = &.{93217 .each = .{ .once = &.{
91839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93218 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91840 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },93219 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91841 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },93220 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },
91842 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },93221 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },
91843 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93222 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
91844 } },93223 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
91845 }, .{93224 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
91896 } },93225 } },
91897 }, .{93226 }, .{
91898 .required_features = .{ .sse2, null, null, null },93227 .required_features = .{ .slow_incdec, null, null, null },
91899 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },93228 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91900 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },93229 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
91901 .patterns = &.{93230 .patterns = &.{
91902 .{ .src = .{ .to_mut_sse, .none, .none } },93231 .{ .src = .{ .to_mem, .none, .none } },
91903 },93232 },
91904 .extra_temps = .{93233 .extra_temps = .{
91905 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },93234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91906 .unused,93235 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
91907 .unused,93236 .unused,
91908 .unused,93237 .unused,
91909 .unused,93238 .unused,
...@@ -91914,24 +93243,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91914,24 +93243,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91914 .unused,93243 .unused,
91915 .unused,93244 .unused,
91916 },93245 },
91917 .dst_temps = .{ .{ .ref = .src0 }, .unused },93246 .dst_temps = .{ .mem, .unused },
93247 .clobbers = .{ .eflags = true },
91918 .each = .{ .once = &.{93248 .each = .{ .once = &.{
91919 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },93249 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91920 .{ ._, .p_d, .cmpgt, .tmp0x, .src0x, ._, ._ },93250 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91921 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },93251 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
91922 .{ ._, .p_, .unpckldq, .tmp0x, .tmp0x, ._, ._ },93252 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
91923 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },93253 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93254 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91924 } },93256 } },
91925 }, .{93257 }, .{
91926 .required_features = .{ .sse2, null, null, null },93258 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91927 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },93259 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
91928 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .xword } }, .any },
91929 .patterns = &.{93260 .patterns = &.{
91930 .{ .src = .{ .to_mut_sse, .none, .none } },93261 .{ .src = .{ .to_mem, .none, .none } },
91931 },93262 },
91932 .extra_temps = .{93263 .extra_temps = .{
91933 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },93264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91934 .unused,93265 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
91935 .unused,93266 .unused,
91936 .unused,93267 .unused,
91937 .unused,93268 .unused,
...@@ -91942,24 +93273,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91942,24 +93273,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91942 .unused,93273 .unused,
91943 .unused,93274 .unused,
91944 },93275 },
91945 .dst_temps = .{ .{ .ref = .src0 }, .unused },93276 .dst_temps = .{ .mem, .unused },
93277 .clobbers = .{ .eflags = true },
91946 .each = .{ .once = &.{93278 .each = .{ .once = &.{
91947 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },93279 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91948 .{ ._, .p_, .unpckldq, .dst0x, .tmp0x, ._, ._ },93280 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91949 .{ ._, .p_, .unpcklqdq, .dst0x, .tmp0x, ._, ._ },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", ._, ._, ._ },
91950 } },93286 } },
91951 }, .{93287 }, .{
91952 .required_features = .{ .@"64bit", null, null, null },93288 .required_features = .{ .slow_incdec, null, null, null },
91953 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },93289 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91954 .dst_constraints = .{ .any_scalar_signed_int, .any },93290 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
91955 .patterns = &.{93291 .patterns = &.{
91956 .{ .src = .{ .to_mem, .none, .none } },93292 .{ .src = .{ .to_mem, .none, .none } },
91957 },93293 },
91958 .extra_temps = .{93294 .extra_temps = .{
91959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93295 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91960 .{ .type = .usize, .kind = .{ .reg = .rdi } },93296 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
91961 .{ .type = .i64, .kind = .{ .reg = .rax } },93297 .unused,
91962 .{ .type = .u32, .kind = .{ .reg = .ecx } },93298 .unused,
91963 .unused,93299 .unused,
91964 .unused,93300 .unused,
91965 .unused,93301 .unused,
...@@ -91971,28 +93307,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -91971,28 +93307,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
91971 .dst_temps = .{ .mem, .unused },93307 .dst_temps = .{ .mem, .unused },
91972 .clobbers = .{ .eflags = true },93308 .clobbers = .{ .eflags = true },
91973 .each = .{ .once = &.{93309 .each = .{ .once = &.{
91974 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93310 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
91975 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },93311 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
91976 .{ .@"0:", ._d, .movsx, .tmp2q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },93312 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
91977 .{ ._, ._sq, .sto, ._, ._, ._, ._ },93313 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
91978 .{ ._, ._r, .sa, .tmp2q, .si(63), ._, ._ },93314 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
91979 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
91980 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
91981 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
91982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },93315 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
91983 } },93316 } },
91984 }, .{93317 }, .{
91985 .required_features = .{ .@"64bit", null, null, null },93318 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
91986 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },93319 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
91987 .dst_constraints = .{ .any_scalar_int, .any },
91988 .patterns = &.{93320 .patterns = &.{
91989 .{ .src = .{ .to_mem, .none, .none } },93321 .{ .src = .{ .to_mem, .none, .none } },
91990 },93322 },
91991 .extra_temps = .{93323 .extra_temps = .{
91992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },93324 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
91993 .{ .type = .usize, .kind = .{ .reg = .rdi } },93325 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
91994 .{ .type = .u64, .kind = .{ .reg = .rax } },93326 .unused,
91995 .{ .type = .u32, .kind = .{ .reg = .ecx } },93327 .unused,
91996 .unused,93328 .unused,
91997 .unused,93329 .unused,
91998 .unused,93330 .unused,
...@@ -92004,29 +93336,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92004,29 +93336,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92004 .dst_temps = .{ .mem, .unused },93336 .dst_temps = .{ .mem, .unused },
92005 .clobbers = .{ .eflags = true },93337 .clobbers = .{ .eflags = true },
92006 .each = .{ .once = &.{93338 .each = .{ .once = &.{
92007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },93339 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92008 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },93340 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
92009 .{ .@"0:", ._, .mov, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },93341 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
92010 .{ ._, ._sq, .sto, ._, ._, ._, ._ },93342 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92011 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },93343 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92012 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },93344 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92013 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92014 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
92015 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92016 } },93345 } },
92017 }, .{93346 }, .{
92018 .required_features = .{ .@"64bit", .slow_incdec, null, null },93347 .required_features = .{ .slow_incdec, null, null, null },
92019 .src_constraints = .{ .any_scalar_signed_int, .any, .any },93348 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
92020 .dst_constraints = .{ .any_scalar_signed_int, .any },93349 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92021 .patterns = &.{93350 .patterns = &.{
92022 .{ .src = .{ .to_mem, .none, .none } },93351 .{ .src = .{ .to_mem, .none, .none } },
92023 },93352 },
92024 .extra_temps = .{93353 .extra_temps = .{
92025 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },93354 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92026 .{ .type = .usize, .kind = .{ .reg = .rsi } },93355 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92027 .{ .type = .usize, .kind = .{ .reg = .rdi } },93356 .unused,
92028 .{ .type = .u32, .kind = .{ .reg = .ecx } },93357 .unused,
92029 .{ .type = .i64, .kind = .{ .reg = .rax } },93358 .unused,
92030 .unused,93359 .unused,
92031 .unused,93360 .unused,
92032 .unused,93361 .unused,
...@@ -92037,32 +93366,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92037,32 +93366,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92037 .dst_temps = .{ .mem, .unused },93366 .dst_temps = .{ .mem, .unused },
92038 .clobbers = .{ .eflags = true },93367 .clobbers = .{ .eflags = true },
92039 .each = .{ .once = &.{93368 .each = .{ .once = &.{
92040 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },93369 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92041 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },93370 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
92042 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },93371 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92043 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },93372 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
92044 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
92052 } },93374 } },
92053 }, .{93375 }, .{
92054 .required_features = .{ .@"64bit", null, null, null },93376 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
92055 .src_constraints = .{ .any_scalar_signed_int, .any, .any },93377 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92056 .dst_constraints = .{ .any_scalar_signed_int, .any },
92057 .patterns = &.{93378 .patterns = &.{
92058 .{ .src = .{ .to_mem, .none, .none } },93379 .{ .src = .{ .to_mem, .none, .none } },
92059 },93380 },
92060 .extra_temps = .{93381 .extra_temps = .{
92061 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },93382 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92062 .{ .type = .usize, .kind = .{ .reg = .rsi } },93383 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92063 .{ .type = .usize, .kind = .{ .reg = .rdi } },93384 .unused,
92064 .{ .type = .u32, .kind = .{ .reg = .ecx } },93385 .unused,
92065 .{ .type = .i64, .kind = .{ .reg = .rax } },93386 .unused,
92066 .unused,93387 .unused,
92067 .unused,93388 .unused,
92068 .unused,93389 .unused,
...@@ -92073,32 +93394,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92073,32 +93394,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92073 .dst_temps = .{ .mem, .unused },93394 .dst_temps = .{ .mem, .unused },
92074 .clobbers = .{ .eflags = true },93395 .clobbers = .{ .eflags = true },
92075 .each = .{ .once = &.{93396 .each = .{ .once = &.{
92076 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },93397 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92077 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },93398 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
92078 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },93399 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92079 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .src0, .add_elem_size_div_8), ._, ._ },93400 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
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, ._, ._, ._ },
92087 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },93401 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92088 } },93402 } },
92089 }, .{93403 }, .{
92090 .required_features = .{ .@"64bit", .slow_incdec, null, null },93404 .required_features = .{ .slow_incdec, null, null, null },
92091 .src_constraints = .{ .any_scalar_int, .any, .any },93405 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
92092 .dst_constraints = .{ .any_scalar_int, .any },93406 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
92093 .patterns = &.{93407 .patterns = &.{
92094 .{ .src = .{ .to_mem, .none, .none } },93408 .{ .src = .{ .to_mem, .none, .none } },
92095 },93409 },
92096 .extra_temps = .{93410 .extra_temps = .{
92097 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },93411 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92098 .{ .type = .usize, .kind = .{ .reg = .rsi } },93412 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
92099 .{ .type = .usize, .kind = .{ .reg = .rdi } },93413 .unused,
92100 .{ .type = .u32, .kind = .{ .reg = .ecx } },93414 .unused,
92101 .{ .type = .u64, .kind = .{ .reg = .rax } },93415 .unused,
92102 .unused,93416 .unused,
92103 .unused,93417 .unused,
92104 .unused,93418 .unused,
...@@ -92109,30 +93423,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92109,30 +93423,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92109 .dst_temps = .{ .mem, .unused },93423 .dst_temps = .{ .mem, .unused },
92110 .clobbers = .{ .eflags = true },93424 .clobbers = .{ .eflags = true },
92111 .each = .{ .once = &.{93425 .each = .{ .once = &.{
92112 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },93426 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92113 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },93427 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
92114 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },93428 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92115 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },93429 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92116 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93430 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92117 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },93431 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
92118 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },93432 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92119 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92120 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
92121 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
92122 } },93433 } },
92123 }, .{93434 }, .{
92124 .required_features = .{ .@"64bit", null, null, null },93435 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
92125 .src_constraints = .{ .any_scalar_int, .any, .any },93436 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
92126 .dst_constraints = .{ .any_scalar_int, .any },
92127 .patterns = &.{93437 .patterns = &.{
92128 .{ .src = .{ .to_mem, .none, .none } },93438 .{ .src = .{ .to_mem, .none, .none } },
92129 },93439 },
92130 .extra_temps = .{93440 .extra_temps = .{
92131 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },93441 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92132 .{ .type = .usize, .kind = .{ .reg = .rsi } },93442 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
92133 .{ .type = .usize, .kind = .{ .reg = .rdi } },93443 .unused,
92134 .{ .type = .u32, .kind = .{ .reg = .ecx } },93444 .unused,
92135 .{ .type = .u64, .kind = .{ .reg = .rax } },93445 .unused,
92136 .unused,93446 .unused,
92137 .unused,93447 .unused,
92138 .unused,93448 .unused,
...@@ -92143,343 +93453,84 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92143,343 +93453,84 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92143 .dst_temps = .{ .mem, .unused },93453 .dst_temps = .{ .mem, .unused },
92144 .clobbers = .{ .eflags = true },93454 .clobbers = .{ .eflags = true },
92145 .each = .{ .once = &.{93455 .each = .{ .once = &.{
92146 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },93456 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92147 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },93457 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
92148 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },93458 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92149 .{ .@"0:", ._, .mov, .tmp3d, .sa(.src0, .add_elem_size_div_8), ._, ._ },93459 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92150 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93460 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92151 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },93461 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92152 .{ ._, ._, .mov, .tmp3d, .sa2(.dst0, .src0, .add_delta_elem_size_div_8), ._, ._ },
92153 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
92154 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
92155 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },93462 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92156 } },93463 } },
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 } },
92404 }, .{93464 }, .{
92405 .required_features = .{ .@"64bit", null, null, null },93465 .required_features = .{ .slow_incdec, null, null, null },
92406 .src_constraints = .{ .any_signed_int, .any, .any },93466 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
92407 .dst_constraints = .{ .{ .signed_int = .qword }, .any },93467 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92408 .patterns = &.{93468 .patterns = &.{
92409 .{ .src = .{ .to_mem, .none, .none } },93469 .{ .src = .{ .to_mem, .none, .none } },
92410 },93470 },
92411 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },93471 .extra_temps = .{
92412 .clobbers = .{ .eflags = true },93472 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92413 .each = .{ .once = &.{93473 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92414 .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },93474 .unused,
92415 .{ ._, ._l, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },93475 .unused,
92416 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },93476 .unused,
92417 } },93477 .unused,
92418 }, .{93478 .unused,
92419 .required_features = .{ .@"64bit", .bmi2, null, null },93479 .unused,
92420 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },93480 .unused,
92421 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },93481 .unused,
92422 .patterns = &.{93482 .unused,
92423 .{ .src = .{ .mem, .none, .none } },
92424 .{ .src = .{ .to_gpr, .none, .none } },
92425 },93483 },
92426 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },93484 .dst_temps = .{ .mem, .unused },
92427 .clobbers = .{ .eflags = true },93485 .clobbers = .{ .eflags = true },
92428 .each = .{ .once = &.{93486 .each = .{ .once = &.{
92429 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },93487 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92430 .{ ._, ._, .bzhi, .dst0q, .src0q, .dst0q, ._ },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", ._, ._, ._ },
92431 } },93493 } },
92432 }, .{93494 }, .{
92433 .required_features = .{ .@"64bit", .bmi2, null, null },93495 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
92434 .src_constraints = .{ .any_unsigned_int, .any, .any },93496 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92435 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
92436 .patterns = &.{93497 .patterns = &.{
92437 .{ .src = .{ .to_mem, .none, .none } },93498 .{ .src = .{ .to_mem, .none, .none } },
92438 },93499 },
92439 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },93500 .extra_temps = .{
92440 .clobbers = .{ .eflags = true },93501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92441 .each = .{ .once = &.{93502 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92442 .{ ._, ._, .mov, .dst0d, .sa(.dst0, .add_bit_size), ._, ._ },93503 .unused,
92443 .{ ._, ._, .bzhi, .dst0q, .mem(.src0q), .dst0q, ._ },93504 .unused,
92444 } },93505 .unused,
92445 }, .{93506 .unused,
92446 .required_features = .{ .@"64bit", null, null, null },93507 .unused,
92447 .src_constraints = .{ .{ .unsigned_int = .gpr }, .any, .any },93508 .unused,
92448 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },93509 .unused,
92449 .patterns = &.{93510 .unused,
92450 .{ .src = .{ .mem, .none, .none } },93511 .unused,
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 } },
92465 },93512 },
92466 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },93513 .dst_temps = .{ .mem, .unused },
92467 .clobbers = .{ .eflags = true },93514 .clobbers = .{ .eflags = true },
92468 .each = .{ .once = &.{93515 .each = .{ .once = &.{
92469 .{ ._, ._, .mov, .dst0q, .ua(.dst0, .add_umax), ._, ._ },93516 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92470 .{ ._, ._, .@"and", .dst0q, .mem(.src0q), ._, ._ },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", ._, ._, ._ },
92471 } },93522 } },
92472 }, .{93523 }, .{
92473 .required_features = .{ .@"64bit", null, null, null },93524 .required_features = .{ .slow_incdec, null, null, null },
92474 .src_constraints = .{ .any_int, .any, .any },93525 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92475 .dst_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any },93526 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92476 .patterns = &.{93527 .patterns = &.{
92477 .{ .src = .{ .to_mem, .none, .none } },93528 .{ .src = .{ .to_mem, .none, .none } },
92478 },93529 },
92479 .extra_temps = .{93530 .extra_temps = .{
92480 .{ .type = .usize, .kind = .{ .reg = .rsi } },93531 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92481 .{ .type = .usize, .kind = .{ .reg = .rdi } },93532 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92482 .{ .type = .u32, .kind = .{ .reg = .ecx } },93533 .unused,
92483 .unused,93534 .unused,
92484 .unused,93535 .unused,
92485 .unused,93536 .unused,
...@@ -92490,23 +93541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92490,23 +93541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92490 .unused,93541 .unused,
92491 },93542 },
92492 .dst_temps = .{ .mem, .unused },93543 .dst_temps = .{ .mem, .unused },
93544 .clobbers = .{ .eflags = true },
92493 .each = .{ .once = &.{93545 .each = .{ .once = &.{
92494 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93546 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92495 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93547 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
92496 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },93548 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92497 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93549 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93550 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92498 } },93551 } },
92499 }, .{93552 }, .{
92500 .required_features = .{ .@"64bit", null, null, null },93553 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92501 .src_constraints = .{ .any_signed_int, .any, .any },93554 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92502 .dst_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any },
92503 .patterns = &.{93555 .patterns = &.{
92504 .{ .src = .{ .to_mem, .none, .none } },93556 .{ .src = .{ .to_mem, .none, .none } },
92505 },93557 },
92506 .extra_temps = .{93558 .extra_temps = .{
92507 .{ .type = .usize, .kind = .{ .reg = .rsi } },93559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92508 .{ .type = .usize, .kind = .{ .reg = .rdi } },93560 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92509 .{ .type = .u32, .kind = .{ .reg = .ecx } },93561 .unused,
92510 .unused,93562 .unused,
92511 .unused,93563 .unused,
92512 .unused,93564 .unused,
...@@ -92519,26 +93571,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92519,26 +93571,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92519 .dst_temps = .{ .mem, .unused },93571 .dst_temps = .{ .mem, .unused },
92520 .clobbers = .{ .eflags = true },93572 .clobbers = .{ .eflags = true },
92521 .each = .{ .once = &.{93573 .each = .{ .once = &.{
92522 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93574 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92523 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93575 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
92524 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },93576 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92525 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93577 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92526 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },93578 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92527 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92528 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
92529 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
92530 } },93579 } },
92531 }, .{93580 }, .{
92532 .required_features = .{ .@"64bit", null, null, null },93581 .required_features = .{ .slow_incdec, null, null, null },
92533 .src_constraints = .{ .any_signed_int, .any, .any },93582 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92534 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },93583 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
92535 .patterns = &.{93584 .patterns = &.{
92536 .{ .src = .{ .to_mem, .none, .none } },93585 .{ .src = .{ .to_mem, .none, .none } },
92537 },93586 },
92538 .extra_temps = .{93587 .extra_temps = .{
92539 .{ .type = .usize, .kind = .{ .reg = .rsi } },93588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92540 .{ .type = .usize, .kind = .{ .reg = .rdi } },93589 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
92541 .{ .type = .u32, .kind = .{ .reg = .ecx } },93590 .unused,
92542 .unused,93591 .unused,
92543 .unused,93592 .unused,
92544 .unused,93593 .unused,
...@@ -92551,28 +93600,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92551,28 +93600,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92551 .dst_temps = .{ .mem, .unused },93600 .dst_temps = .{ .mem, .unused },
92552 .clobbers = .{ .eflags = true },93601 .clobbers = .{ .eflags = true },
92553 .each = .{ .once = &.{93602 .each = .{ .once = &.{
92554 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93603 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92555 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93604 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
92556 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },93605 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92557 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93606 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92558 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },93607 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92559 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },93608 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
92560 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },93609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92561 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92562 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
92563 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
92564 } },93610 } },
92565 }, .{93611 }, .{
92566 .required_features = .{ .@"64bit", null, null, null },93612 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92567 .src_constraints = .{ .any_signed_int, .any, .any },93613 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
92568 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
92569 .patterns = &.{93614 .patterns = &.{
92570 .{ .src = .{ .to_mem, .none, .none } },93615 .{ .src = .{ .to_mem, .none, .none } },
92571 },93616 },
92572 .extra_temps = .{93617 .extra_temps = .{
92573 .{ .type = .usize, .kind = .{ .reg = .rsi } },93618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92574 .{ .type = .usize, .kind = .{ .reg = .rdi } },93619 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
92575 .{ .type = .u32, .kind = .{ .reg = .ecx } },93620 .unused,
92576 .unused,93621 .unused,
92577 .unused,93622 .unused,
92578 .unused,93623 .unused,
...@@ -92585,26 +93630,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92585,26 +93630,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92585 .dst_temps = .{ .mem, .unused },93630 .dst_temps = .{ .mem, .unused },
92586 .clobbers = .{ .eflags = true },93631 .clobbers = .{ .eflags = true },
92587 .each = .{ .once = &.{93632 .each = .{ .once = &.{
92588 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93633 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92589 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93634 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
92590 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },93635 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92591 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93636 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92592 .{ ._, ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },93637 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92593 .{ ._, ._l, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },93638 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92594 .{ ._, ._r, .sa, .tmp0q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },93639 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92595 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
92596 } },93640 } },
92597 }, .{93641 }, .{
92598 .required_features = .{ .@"64bit", null, null, null },93642 .required_features = .{ .bmi2, .slow_incdec, null, null },
92599 .src_constraints = .{ .any_unsigned_int, .any, .any },93643 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92600 .dst_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any },93644 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92601 .patterns = &.{93645 .patterns = &.{
92602 .{ .src = .{ .to_mem, .none, .none } },93646 .{ .src = .{ .to_mem, .none, .none } },
92603 },93647 },
92604 .extra_temps = .{93648 .extra_temps = .{
92605 .{ .type = .usize, .kind = .{ .reg = .rsi } },93649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92606 .{ .type = .usize, .kind = .{ .reg = .rdi } },93650 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92607 .{ .type = .u32, .kind = .{ .reg = .ecx } },93651 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92608 .unused,93652 .unused,
92609 .unused,93653 .unused,
92610 .unused,93654 .unused,
...@@ -92615,24 +93659,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92615,24 +93659,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92615 .unused,93659 .unused,
92616 },93660 },
92617 .dst_temps = .{ .mem, .unused },93661 .dst_temps = .{ .mem, .unused },
93662 .clobbers = .{ .eflags = true },
92618 .each = .{ .once = &.{93663 .each = .{ .once = &.{
92619 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93664 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92620 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93665 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
92621 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },93666 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
92622 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93667 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
92623 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },93668 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92624 } },93670 } },
92625 }, .{93671 }, .{
92626 .required_features = .{ .@"64bit", .bmi2, null, null },93672 .required_features = .{ .bmi2, null, null, null },
92627 .src_constraints = .{ .any_unsigned_int, .any, .any },93673 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92628 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },93674 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92629 .patterns = &.{93675 .patterns = &.{
92630 .{ .src = .{ .to_mem, .none, .none } },93676 .{ .src = .{ .to_mem, .none, .none } },
92631 },93677 },
92632 .extra_temps = .{93678 .extra_temps = .{
92633 .{ .type = .usize, .kind = .{ .reg = .rsi } },93679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92634 .{ .type = .usize, .kind = .{ .reg = .rdi } },93680 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92635 .{ .type = .u32, .kind = .{ .reg = .ecx } },93681 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92636 .unused,93682 .unused,
92637 .unused,93683 .unused,
92638 .unused,93684 .unused,
...@@ -92645,26 +93691,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92645,26 +93691,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92645 .dst_temps = .{ .mem, .unused },93691 .dst_temps = .{ .mem, .unused },
92646 .clobbers = .{ .eflags = true },93692 .clobbers = .{ .eflags = true },
92647 .each = .{ .once = &.{93693 .each = .{ .once = &.{
92648 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93694 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92649 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93695 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
92650 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },93696 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
92651 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93697 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
92652 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },93698 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92653 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -16), .tmp2q, ._ },93699 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92654 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp2q, ._, ._ },
92655 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
92656 } },93700 } },
92657 }, .{93701 }, .{
92658 .required_features = .{ .@"64bit", .bmi2, null, null },93702 .required_features = .{ .slow_incdec, null, null, null },
92659 .src_constraints = .{ .any_unsigned_int, .any, .any },93703 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92660 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },93704 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92661 .patterns = &.{93705 .patterns = &.{
92662 .{ .src = .{ .to_mem, .none, .none } },93706 .{ .src = .{ .to_mem, .none, .none } },
92663 },93707 },
92664 .extra_temps = .{93708 .extra_temps = .{
92665 .{ .type = .usize, .kind = .{ .reg = .rsi } },93709 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92666 .{ .type = .usize, .kind = .{ .reg = .rdi } },93710 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92667 .{ .type = .u32, .kind = .{ .reg = .ecx } },93711 .unused,
92668 .unused,93712 .unused,
92669 .unused,93713 .unused,
92670 .unused,93714 .unused,
...@@ -92677,25 +93721,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92677,25 +93721,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92677 .dst_temps = .{ .mem, .unused },93721 .dst_temps = .{ .mem, .unused },
92678 .clobbers = .{ .eflags = true },93722 .clobbers = .{ .eflags = true },
92679 .each = .{ .once = &.{93723 .each = .{ .once = &.{
92680 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93724 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92681 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93725 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
92682 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },93726 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
92683 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93727 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92684 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },93728 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
92685 .{ ._, ._, .bzhi, .tmp2q, .memad(.src0q, .add_size, -8), .tmp2q, ._ },93729 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92686 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
92687 } },93730 } },
92688 }, .{93731 }, .{
92689 .required_features = .{ .@"64bit", null, null, null },93732 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
92690 .src_constraints = .{ .any_unsigned_int, .any, .any },93733 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92691 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
92692 .patterns = &.{93734 .patterns = &.{
92693 .{ .src = .{ .to_mem, .none, .none } },93735 .{ .src = .{ .to_mem, .none, .none } },
92694 },93736 },
92695 .extra_temps = .{93737 .extra_temps = .{
92696 .{ .type = .usize, .kind = .{ .reg = .rsi } },93738 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92697 .{ .type = .usize, .kind = .{ .reg = .rdi } },93739 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92698 .{ .type = .u32, .kind = .{ .reg = .ecx } },93740 .unused,
92699 .unused,93741 .unused,
92700 .unused,93742 .unused,
92701 .unused,93743 .unused,
...@@ -92708,26 +93750,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92708,26 +93750,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92708 .dst_temps = .{ .mem, .unused },93750 .dst_temps = .{ .mem, .unused },
92709 .clobbers = .{ .eflags = true },93751 .clobbers = .{ .eflags = true },
92710 .each = .{ .once = &.{93752 .each = .{ .once = &.{
92711 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93753 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92712 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93754 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
92713 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },93755 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
92714 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93756 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92715 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },93757 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92716 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ },93758 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92717 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
92718 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
92719 } },93759 } },
92720 }, .{93760 }, .{
92721 .required_features = .{ .@"64bit", null, null, null },93761 .required_features = .{ .slow_incdec, null, null, null },
92722 .src_constraints = .{ .any_unsigned_int, .any, .any },93762 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92723 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },93763 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92724 .patterns = &.{93764 .patterns = &.{
92725 .{ .src = .{ .to_mem, .none, .none } },93765 .{ .src = .{ .to_mem, .none, .none } },
92726 },93766 },
92727 .extra_temps = .{93767 .extra_temps = .{
92728 .{ .type = .usize, .kind = .{ .reg = .rsi } },93768 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92729 .{ .type = .usize, .kind = .{ .reg = .rdi } },93769 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92730 .{ .type = .u32, .kind = .{ .reg = .ecx } },93770 .unused,
92731 .unused,93771 .unused,
92732 .unused,93772 .unused,
92733 .unused,93773 .unused,
...@@ -92740,25 +93780,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92740,25 +93780,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92740 .dst_temps = .{ .mem, .unused },93780 .dst_temps = .{ .mem, .unused },
92741 .clobbers = .{ .eflags = true },93781 .clobbers = .{ .eflags = true },
92742 .each = .{ .once = &.{93782 .each = .{ .once = &.{
92743 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },93783 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92744 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },93784 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
92745 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },93785 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92746 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },93786 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
92747 .{ ._, ._, .mov, .tmp0q, .ua(.dst0, .add_umax), ._, ._ },93787 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92748 .{ ._, ._, .@"and", .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ },
92749 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
92750 } },93788 } },
92751 }, .{93789 }, .{
92752 .required_features = .{ .avx, null, null, null },93790 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92753 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },93791 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92754 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
92755 .patterns = &.{93792 .patterns = &.{
92756 .{ .src = .{ .to_sse, .none, .none } },93793 .{ .src = .{ .to_mem, .none, .none } },
92757 },93794 },
92758 .extra_temps = .{93795 .extra_temps = .{
92759 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92760 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },93797 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92761 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },93798 .unused,
92762 .unused,93799 .unused,
92763 .unused,93800 .unused,
92764 .unused,93801 .unused,
...@@ -92768,24 +93805,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92768,24 +93805,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92768 .unused,93805 .unused,
92769 .unused,93806 .unused,
92770 },93807 },
92771 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },93808 .dst_temps = .{ .mem, .unused },
93809 .clobbers = .{ .eflags = true },
92772 .each = .{ .once = &.{93810 .each = .{ .once = &.{
92773 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93811 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92774 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },93812 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
92775 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },93813 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92776 .{ ._, .vp_b, .add, .dst0x, .dst0x, .lea(.tmp0x), ._ },93814 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
92777 .{ ._, .vp_, .xor, .dst0x, .dst0x, .lea(.tmp0x), ._ },93815 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92778 } },93816 } },
92779 }, .{93817 }, .{
92780 .required_features = .{ .avx, null, null, null },93818 .required_features = .{ .slow_incdec, null, null, null },
92781 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },93819 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92782 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },93820 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
92783 .patterns = &.{93821 .patterns = &.{
92784 .{ .src = .{ .to_sse, .none, .none } },93822 .{ .src = .{ .to_mem, .none, .none } },
92785 },93823 },
92786 .extra_temps = .{93824 .extra_temps = .{
92787 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93825 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92788 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },93826 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
92789 .unused,93827 .unused,
92790 .unused,93828 .unused,
92791 .unused,93829 .unused,
...@@ -92796,22 +93834,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92796,22 +93834,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92796 .unused,93834 .unused,
92797 .unused,93835 .unused,
92798 },93836 },
92799 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },93837 .dst_temps = .{ .mem, .unused },
93838 .clobbers = .{ .eflags = true },
92800 .each = .{ .once = &.{93839 .each = .{ .once = &.{
92801 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93840 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92802 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },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", ._, ._, ._ },
92803 } },93847 } },
92804 }, .{93848 }, .{
92805 .required_features = .{ .sse2, null, null, null },93849 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92806 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },93850 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
92807 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },
92808 .patterns = &.{93851 .patterns = &.{
92809 .{ .src = .{ .to_mut_sse, .none, .none } },93852 .{ .src = .{ .to_mem, .none, .none } },
92810 },93853 },
92811 .extra_temps = .{93854 .extra_temps = .{
92812 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93855 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92813 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },93856 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
92814 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },93857 .unused,
92815 .unused,93858 .unused,
92816 .unused,93859 .unused,
92817 .unused,93860 .unused,
...@@ -92821,25 +93864,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92821,25 +93864,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92821 .unused,93864 .unused,
92822 .unused,93865 .unused,
92823 },93866 },
92824 .dst_temps = .{ .{ .ref = .src0 }, .unused },93867 .dst_temps = .{ .mem, .unused },
93868 .clobbers = .{ .eflags = true },
92825 .each = .{ .once = &.{93869 .each = .{ .once = &.{
92826 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93870 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92827 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },93871 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
92828 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },93872 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92829 .{ ._, .p_b, .add, .dst0x, .lea(.tmp0x), ._, ._ },93873 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
92830 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },93874 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93875 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
93876 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
92831 } },93877 } },
92832 }, .{93878 }, .{
92833 .required_features = .{ .sse2, null, null, null },93879 .required_features = .{ .bmi2, .slow_incdec, null, null },
92834 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },93880 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92835 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },93881 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92836 .patterns = &.{93882 .patterns = &.{
92837 .{ .src = .{ .to_mut_sse, .none, .none } },93883 .{ .src = .{ .to_mem, .none, .none } },
92838 },93884 },
92839 .extra_temps = .{93885 .extra_temps = .{
92840 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92841 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },93887 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92842 .unused,93888 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92843 .unused,93889 .unused,
92844 .unused,93890 .unused,
92845 .unused,93891 .unused,
...@@ -92849,22 +93895,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92849,22 +93895,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92849 .unused,93895 .unused,
92850 .unused,93896 .unused,
92851 },93897 },
92852 .dst_temps = .{ .{ .ref = .src0 }, .unused },93898 .dst_temps = .{ .mem, .unused },
93899 .clobbers = .{ .eflags = true },
92853 .each = .{ .once = &.{93900 .each = .{ .once = &.{
92854 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93901 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92855 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
92856 } },93907 } },
92857 }, .{93908 }, .{
92858 .required_features = .{ .sse, null, null, null },93909 .required_features = .{ .bmi2, null, null, null },
92859 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },93910 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92860 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },93911 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92861 .patterns = &.{93912 .patterns = &.{
92862 .{ .src = .{ .to_mut_sse, .none, .none } },93913 .{ .src = .{ .to_mem, .none, .none } },
92863 },93914 },
92864 .extra_temps = .{93915 .extra_temps = .{
92865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92866 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },93917 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92867 .unused,93918 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92868 .unused,93919 .unused,
92869 .unused,93920 .unused,
92870 .unused,93921 .unused,
...@@ -92874,22 +93925,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92874,22 +93925,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92874 .unused,93925 .unused,
92875 .unused,93926 .unused,
92876 },93927 },
92877 .dst_temps = .{ .{ .ref = .src0 }, .unused },93928 .dst_temps = .{ .mem, .unused },
93929 .clobbers = .{ .eflags = true },
92878 .each = .{ .once = &.{93930 .each = .{ .once = &.{
92879 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93931 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92880 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
92881 } },93937 } },
92882 }, .{93938 }, .{
92883 .required_features = .{ .avx2, null, null, null },93939 .required_features = .{ .slow_incdec, null, null, null },
92884 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },93940 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92885 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },93941 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92886 .patterns = &.{93942 .patterns = &.{
92887 .{ .src = .{ .to_sse, .none, .none } },93943 .{ .src = .{ .to_mem, .none, .none } },
92888 },93944 },
92889 .extra_temps = .{93945 .extra_temps = .{
92890 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92891 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },93947 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92892 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },93948 .unused,
92893 .unused,93949 .unused,
92894 .unused,93950 .unused,
92895 .unused,93951 .unused,
...@@ -92899,24 +93955,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92899,24 +93955,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92899 .unused,93955 .unused,
92900 .unused,93956 .unused,
92901 },93957 },
92902 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },93958 .dst_temps = .{ .mem, .unused },
93959 .clobbers = .{ .eflags = true },
92903 .each = .{ .once = &.{93960 .each = .{ .once = &.{
92904 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93961 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92905 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },93962 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
92906 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },93963 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },
92907 .{ ._, .vp_b, .add, .dst0y, .dst0y, .lea(.tmp0y), ._ },93964 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
92908 .{ ._, .vp_, .xor, .dst0y, .dst0y, .lea(.tmp0y), ._ },93965 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92909 } },93967 } },
92910 }, .{93968 }, .{
92911 .required_features = .{ .avx2, null, null, null },93969 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
92912 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },93970 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
92913 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
92914 .patterns = &.{93971 .patterns = &.{
92915 .{ .src = .{ .to_sse, .none, .none } },93972 .{ .src = .{ .to_mem, .none, .none } },
92916 },93973 },
92917 .extra_temps = .{93974 .extra_temps = .{
92918 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },93975 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92919 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },93976 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92920 .unused,93977 .unused,
92921 .unused,93978 .unused,
92922 .unused,93979 .unused,
...@@ -92927,25 +93984,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92927,25 +93984,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92927 .unused,93984 .unused,
92928 .unused,93985 .unused,
92929 },93986 },
92930 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },93987 .dst_temps = .{ .mem, .unused },
93988 .clobbers = .{ .eflags = true },
92931 .each = .{ .once = &.{93989 .each = .{ .once = &.{
92932 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },93990 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92933 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },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", ._, ._, ._ },
92934 } },93996 } },
92935 }, .{93997 }, .{
92936 .required_features = .{ .avx2, null, null, null },93998 .required_features = .{ .slow_incdec, null, null, null },
92937 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any, .any },93999 .src_constraints = .{ .any_scalar_int, .any, .any },
92938 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .byte } }, .any },94000 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92939 .patterns = &.{94001 .patterns = &.{
92940 .{ .src = .{ .to_mem, .none, .none } },94002 .{ .src = .{ .to_mem, .none, .none } },
92941 },94003 },
92942 .extra_temps = .{94004 .extra_temps = .{
92943 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92944 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },94006 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92945 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },94007 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92946 .{ .type = .vector_32_i8, .kind = .{ .rc = .sse } },94008 .unused,
92947 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94009 .unused,
92948 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },94010 .unused,
92949 .unused,94011 .unused,
92950 .unused,94012 .unused,
92951 .unused,94013 .unused,
...@@ -92955,30 +94017,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92955,30 +94017,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92955 .dst_temps = .{ .mem, .unused },94017 .dst_temps = .{ .mem, .unused },
92956 .clobbers = .{ .eflags = true },94018 .clobbers = .{ .eflags = true },
92957 .each = .{ .once = &.{94019 .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), ._, ._ },
92962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94020 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92963 .{ .@"0:", .vp_, .@"and", .tmp3y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },94021 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
92964 .{ ._, .vp_b, .add, .tmp3y, .tmp3y, .tmp2y, ._ },94022 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
92965 .{ ._, .vp_, .xor, .tmp3y, .tmp3y, .tmp2y, ._ },94023 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
92966 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp3y, ._, ._ },94024 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
92967 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },94025 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
92968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
92969 } },94027 } },
92970 }, .{94028 }, .{
92971 .required_features = .{ .avx2, null, null, null },94029 .src_constraints = .{ .any_scalar_int, .any, .any },
92972 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any, .any },94030 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
92973 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .byte } }, .any },
92974 .patterns = &.{94031 .patterns = &.{
92975 .{ .src = .{ .to_mem, .none, .none } },94032 .{ .src = .{ .to_mem, .none, .none } },
92976 },94033 },
92977 .extra_temps = .{94034 .extra_temps = .{
92978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
92979 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },94036 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
92980 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },94037 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
92981 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94038 .unused,
92982 .unused,94039 .unused,
92983 .unused,94040 .unused,
92984 .unused,94041 .unused,
...@@ -92990,28 +94047,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -92990,28 +94047,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
92990 .dst_temps = .{ .mem, .unused },94047 .dst_temps = .{ .mem, .unused },
92991 .clobbers = .{ .eflags = true },94048 .clobbers = .{ .eflags = true },
92992 .each = .{ .once = &.{94049 .each = .{ .once = &.{
92993 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
92994 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
92995 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94050 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
92996 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },94051 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
92997 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },94052 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
92998 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },94053 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
92999 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94054 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94055 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94056 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
93000 } },94057 } },
93001 }, .{94058 }, .{
93002 .required_features = .{ .avx, null, null, null },94059 .required_features = .{ .slow_incdec, null, null, null },
93003 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },94060 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
93004 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },94061 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
93005 .patterns = &.{94062 .patterns = &.{
93006 .{ .src = .{ .to_mem, .none, .none } },94063 .{ .src = .{ .to_mem, .none, .none } },
93007 },94064 },
93008 .extra_temps = .{94065 .extra_temps = .{
93009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93010 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },94067 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
93011 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },94068 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93012 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },94069 .unused,
93013 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94070 .unused,
93014 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },94071 .unused,
93015 .unused,94072 .unused,
93016 .unused,94073 .unused,
93017 .unused,94074 .unused,
...@@ -93021,30 +94078,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93021,30 +94078,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93021 .dst_temps = .{ .mem, .unused },94078 .dst_temps = .{ .mem, .unused },
93022 .clobbers = .{ .eflags = true },94079 .clobbers = .{ .eflags = true },
93023 .each = .{ .once = &.{94080 .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), ._, ._ },
93028 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94081 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93029 .{ .@"0:", .vp_, .@"and", .tmp3x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },94082 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
93030 .{ ._, .vp_b, .add, .tmp3x, .tmp3x, .tmp2x, ._ },94083 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
93031 .{ ._, .vp_, .xor, .tmp3x, .tmp3x, .tmp2x, ._ },94084 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93032 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },94085 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93033 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },94086 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94087 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94088 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93034 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94089 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93035 } },94090 } },
93036 }, .{94091 }, .{
93037 .required_features = .{ .avx, null, null, null },94092 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
93038 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },94093 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
93039 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },
93040 .patterns = &.{94094 .patterns = &.{
93041 .{ .src = .{ .to_mem, .none, .none } },94095 .{ .src = .{ .to_mem, .none, .none } },
93042 },94096 },
93043 .extra_temps = .{94097 .extra_temps = .{
93044 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93045 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },94099 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
93046 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },94100 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
93047 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94101 .unused,
93048 .unused,94102 .unused,
93049 .unused,94103 .unused,
93050 .unused,94104 .unused,
...@@ -93056,28 +94110,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93056,28 +94110,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93056 .dst_temps = .{ .mem, .unused },94110 .dst_temps = .{ .mem, .unused },
93057 .clobbers = .{ .eflags = true },94111 .clobbers = .{ .eflags = true },
93058 .each = .{ .once = &.{94112 .each = .{ .once = &.{
93059 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93060 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93061 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94113 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93062 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },94114 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
93063 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },94115 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
93064 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },94116 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
93065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
93066 } },94122 } },
93067 }, .{94123 }, .{
93068 .required_features = .{ .sse2, null, null, null },94124 .required_features = .{ .bmi2, .slow_incdec, null, null },
93069 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any, .any },94125 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
93070 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .byte } }, .any },94126 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93071 .patterns = &.{94127 .patterns = &.{
93072 .{ .src = .{ .to_mem, .none, .none } },94128 .{ .src = .{ .to_mem, .none, .none } },
93073 },94129 },
93074 .extra_temps = .{94130 .extra_temps = .{
93075 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94131 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93076 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },94132 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
93077 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },94133 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93078 .{ .type = .vector_16_i8, .kind = .{ .rc = .sse } },94134 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93079 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94135 .unused,
93080 .{ .kind = .{ .smin_mem = .{ .ref = .dst0 } } },94136 .unused,
93081 .unused,94137 .unused,
93082 .unused,94138 .unused,
93083 .unused,94139 .unused,
...@@ -93087,31 +94143,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93087,31 +94143,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93087 .dst_temps = .{ .mem, .unused },94143 .dst_temps = .{ .mem, .unused },
93088 .clobbers = .{ .eflags = true },94144 .clobbers = .{ .eflags = true },
93089 .each = .{ .once = &.{94145 .each = .{ .once = &.{
93090 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },
93091 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93092 .{ ._, ._, .lea, .tmp0p, .mem(.tmp5), ._, ._ },
93093 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
93094 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94146 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93095 .{ .@"0:", ._dqa, .mov, .tmp3x, .tmp1x, ._, ._ },94147 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
93096 .{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },94148 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
93097 .{ ._, .p_b, .add, .tmp3x, .tmp2x, ._, ._ },94149 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
93098 .{ ._, .p_, .xor, .tmp3x, .tmp2x, ._, ._ },94150 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
93099 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },94151 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
93100 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },94152 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93101 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94153 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93102 } },94154 } },
93103 }, .{94155 }, .{
93104 .required_features = .{ .sse2, null, null, null },94156 .required_features = .{ .bmi2, null, null, null },
93105 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },94157 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
93106 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },94158 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93107 .patterns = &.{94159 .patterns = &.{
93108 .{ .src = .{ .to_mem, .none, .none } },94160 .{ .src = .{ .to_mem, .none, .none } },
93109 },94161 },
93110 .extra_temps = .{94162 .extra_temps = .{
93111 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94163 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93112 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },94164 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
93113 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },94165 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93114 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94166 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93115 .unused,94167 .unused,
93116 .unused,94168 .unused,
93117 .unused,94169 .unused,
...@@ -93123,27 +94175,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93123,27 +94175,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93123 .dst_temps = .{ .mem, .unused },94175 .dst_temps = .{ .mem, .unused },
93124 .clobbers = .{ .eflags = true },94176 .clobbers = .{ .eflags = true },
93125 .each = .{ .once = &.{94177 .each = .{ .once = &.{
93126 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93127 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93128 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94178 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93129 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },94179 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
93130 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },94180 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
93131 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },94181 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
93132 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },94182 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
93133 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94183 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94184 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94185 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
93134 } },94186 } },
93135 }, .{94187 }, .{
93136 .required_features = .{ .sse, null, null, null },94188 .required_features = .{ .slow_incdec, null, null, null },
93137 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any, .any },94189 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
93138 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .byte } }, .any },94190 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93139 .patterns = &.{94191 .patterns = &.{
93140 .{ .src = .{ .to_mem, .none, .none } },94192 .{ .src = .{ .to_mem, .none, .none } },
93141 },94193 },
93142 .extra_temps = .{94194 .extra_temps = .{
93143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94195 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93144 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },94196 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
93145 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },94197 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93146 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },94198 .unused,
93147 .unused,94199 .unused,
93148 .unused,94200 .unused,
93149 .unused,94201 .unused,
...@@ -93155,26 +94207,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93155,26 +94207,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93155 .dst_temps = .{ .mem, .unused },94207 .dst_temps = .{ .mem, .unused },
93156 .clobbers = .{ .eflags = true },94208 .clobbers = .{ .eflags = true },
93157 .each = .{ .once = &.{94209 .each = .{ .once = &.{
93158 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
93159 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
93160 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93161 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },94211 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
93162 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },94212 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
93163 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },94213 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
93164 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },94214 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94215 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94216 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94217 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93166 } },94218 } },
93167 }, .{94219 }, .{
93168 .required_features = .{ .slow_incdec, null, null, null },94220 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
93169 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },94221 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93170 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },
93171 .patterns = &.{94222 .patterns = &.{
93172 .{ .src = .{ .to_mem, .none, .none } },94223 .{ .src = .{ .to_mem, .none, .none } },
93173 },94224 },
93174 .extra_temps = .{94225 .extra_temps = .{
93175 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94226 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93176 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94227 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
93177 .unused,94228 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93178 .unused,94229 .unused,
93179 .unused,94230 .unused,
93180 .unused,94231 .unused,
...@@ -93188,22 +94239,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93188,22 +94239,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93188 .clobbers = .{ .eflags = true },94239 .clobbers = .{ .eflags = true },
93189 .each = .{ .once = &.{94240 .each = .{ .once = &.{
93190 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94241 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93191 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },94242 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
93192 .{ ._, ._, .@"and", .tmp1b, .si(1), ._, ._ },94243 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
93193 .{ ._, ._, .neg, .tmp1b, ._, ._, ._ },94244 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },
93194 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94245 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
93195 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94246 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
93196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94247 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
94248 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
93197 } },94249 } },
93198 }, .{94250 }, .{
93199 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },94251 .required_features = .{ .avx, null, null, null },
93200 .dst_constraints = .{ .{ .multiple_scalar_exact_signed_int = .{ .of = .byte, .is = 1 } }, .any },94252 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
94253 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
93201 .patterns = &.{94254 .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 } },
93203 },94268 },
93204 .extra_temps = .{94269 .extra_temps = .{
93205 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94270 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
93206 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94271 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
93207 .unused,94272 .unused,
93208 .unused,94273 .unused,
93209 .unused,94274 .unused,
...@@ -93214,27 +94279,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93214,27 +94279,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93214 .unused,94279 .unused,
93215 .unused,94280 .unused,
93216 },94281 },
93217 .dst_temps = .{ .mem, .unused },94282 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
93218 .clobbers = .{ .eflags = true },
93219 .each = .{ .once = &.{94283 .each = .{ .once = &.{
93220 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94284 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
93221 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },94285 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
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", ._, ._, ._ },
93227 } },94286 } },
93228 }, .{94287 }, .{
93229 .required_features = .{ .slow_incdec, null, null, null },94288 .required_features = .{ .sse2, null, null, null },
93230 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },94289 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
93231 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },94290 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },
93232 .patterns = &.{94291 .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 } },
93234 },94305 },
93235 .extra_temps = .{94306 .extra_temps = .{
93236 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94307 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
93237 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94308 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
93238 .unused,94309 .unused,
93239 .unused,94310 .unused,
93240 .unused,94311 .unused,
...@@ -93245,26 +94316,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93245,26 +94316,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93245 .unused,94316 .unused,
93246 .unused,94317 .unused,
93247 },94318 },
93248 .dst_temps = .{ .mem, .unused },94319 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93249 .clobbers = .{ .eflags = true },
93250 .each = .{ .once = &.{94320 .each = .{ .once = &.{
93251 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94321 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
93252 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },94322 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
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", ._, ._, ._ },
93258 } },94323 } },
93259 }, .{94324 }, .{
93260 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },94325 .required_features = .{ .sse, null, null, null },
93261 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },94326 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
94327 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
93262 .patterns = &.{94328 .patterns = &.{
93263 .{ .src = .{ .to_mem, .none, .none } },94329 .{ .src = .{ .to_mut_sse, .none, .none } },
93264 },94330 },
93265 .extra_temps = .{94331 .extra_temps = .{
93266 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94332 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
93267 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94333 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
93268 .unused,94334 .unused,
93269 .unused,94335 .unused,
93270 .unused,94336 .unused,
...@@ -93275,27 +94341,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93275,27 +94341,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93275 .unused,94341 .unused,
93276 .unused,94342 .unused,
93277 },94343 },
93278 .dst_temps = .{ .mem, .unused },94344 .dst_temps = .{ .{ .ref = .src0 }, .unused },
93279 .clobbers = .{ .eflags = true },
93280 .each = .{ .once = &.{94345 .each = .{ .once = &.{
93281 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94346 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
93282 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },94347 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
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", ._, ._, ._ },
93288 } },94348 } },
93289 }, .{94349 }, .{
93290 .required_features = .{ .slow_incdec, null, null, null },94350 .required_features = .{ .avx2, null, null, null },
93291 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },94351 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },
93292 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },94352 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },
93293 .patterns = &.{94353 .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 } },
93295 },94367 },
93296 .extra_temps = .{94368 .extra_temps = .{
93297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94369 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
93298 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94370 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },
93299 .unused,94371 .unused,
93300 .unused,94372 .unused,
93301 .unused,94373 .unused,
...@@ -93306,25 +94378,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93306,25 +94378,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93306 .unused,94378 .unused,
93307 .unused,94379 .unused,
93308 },94380 },
93309 .dst_temps = .{ .mem, .unused },94381 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
93310 .clobbers = .{ .eflags = true },
93311 .each = .{ .once = &.{94382 .each = .{ .once = &.{
93312 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94383 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
93313 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },94384 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
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", ._, ._, ._ },
93318 } },94385 } },
93319 }, .{94386 }, .{
93320 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },94387 .required_features = .{ .avx2, null, null, null },
93321 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },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 },
93322 .patterns = &.{94390 .patterns = &.{
93323 .{ .src = .{ .to_mem, .none, .none } },94391 .{ .src = .{ .to_mem, .none, .none } },
93324 },94392 },
93325 .extra_temps = .{94393 .extra_temps = .{
93326 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93327 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94395 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },
93328 .unused,94396 .unused,
93329 .unused,94397 .unused,
93330 .unused,94398 .unused,
...@@ -93339,24 +94407,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93339,24 +94407,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93339 .clobbers = .{ .eflags = true },94407 .clobbers = .{ .eflags = true },
93340 .each = .{ .once = &.{94408 .each = .{ .once = &.{
93341 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94409 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93342 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },94410 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
93343 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },94411 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
93344 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94412 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },
93345 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94413 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
93346 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94414 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
94415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93347 } },94416 } },
93348 }, .{94417 }, .{
93349 .required_features = .{ .slow_incdec, null, null, null },94418 .required_features = .{ .avx2, null, null, null },
93350 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },94419 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },
93351 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },94420 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },
93352 .patterns = &.{94421 .patterns = &.{
93353 .{ .src = .{ .to_mem, .none, .none } },94422 .{ .src = .{ .to_mem, .none, .none } },
93354 },94423 },
93355 .extra_temps = .{94424 .extra_temps = .{
93356 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94425 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93357 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94426 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
93358 .unused,94427 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },
93359 .unused,94428 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93360 .unused,94429 .unused,
93361 .unused,94430 .unused,
93362 .unused,94431 .unused,
...@@ -93368,21 +94437,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93368,21 +94437,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93368 .dst_temps = .{ .mem, .unused },94437 .dst_temps = .{ .mem, .unused },
93369 .clobbers = .{ .eflags = true },94438 .clobbers = .{ .eflags = true },
93370 .each = .{ .once = &.{94439 .each = .{ .once = &.{
94440 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94441 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
93371 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94442 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93372 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },94443 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
93373 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94444 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
93374 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94445 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
93375 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94446 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93376 } },94447 } },
93377 }, .{94448 }, .{
93378 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },94449 .required_features = .{ .avx, null, null, null },
93379 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },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 },
93380 .patterns = &.{94452 .patterns = &.{
93381 .{ .src = .{ .to_mem, .none, .none } },94453 .{ .src = .{ .to_mem, .none, .none } },
93382 },94454 },
93383 .extra_temps = .{94455 .extra_temps = .{
93384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93385 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94457 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
93386 .unused,94458 .unused,
93387 .unused,94459 .unused,
93388 .unused,94460 .unused,
...@@ -93397,23 +94469,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93397,23 +94469,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93397 .clobbers = .{ .eflags = true },94469 .clobbers = .{ .eflags = true },
93398 .each = .{ .once = &.{94470 .each = .{ .once = &.{
93399 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94471 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93400 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },94472 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93401 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94473 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
93402 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94474 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },
93403 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94475 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
94476 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93404 } },94478 } },
93405 }, .{94479 }, .{
93406 .required_features = .{ .slow_incdec, null, null, null },94480 .required_features = .{ .avx, null, null, null },
93407 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },94481 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
93408 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },94482 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
93409 .patterns = &.{94483 .patterns = &.{
93410 .{ .src = .{ .to_mem, .none, .none } },94484 .{ .src = .{ .to_mem, .none, .none } },
93411 },94485 },
93412 .extra_temps = .{94486 .extra_temps = .{
93413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93414 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94488 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
93415 .unused,94489 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
93416 .unused,94490 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93417 .unused,94491 .unused,
93418 .unused,94492 .unused,
93419 .unused,94493 .unused,
...@@ -93425,23 +94499,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93425,23 +94499,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93425 .dst_temps = .{ .mem, .unused },94499 .dst_temps = .{ .mem, .unused },
93426 .clobbers = .{ .eflags = true },94500 .clobbers = .{ .eflags = true },
93427 .each = .{ .once = &.{94501 .each = .{ .once = &.{
94502 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94503 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93428 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94504 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93429 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },94505 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
93430 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94506 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93431 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
93432 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
93433 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93434 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93435 } },94509 } },
93436 }, .{94510 }, .{
93437 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },94511 .required_features = .{ .sse2, null, null, null },
93438 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },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 },
93439 .patterns = &.{94514 .patterns = &.{
93440 .{ .src = .{ .to_mem, .none, .none } },94515 .{ .src = .{ .to_mem, .none, .none } },
93441 },94516 },
93442 .extra_temps = .{94517 .extra_temps = .{
93443 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94518 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93444 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94519 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
93445 .unused,94520 .unused,
93446 .unused,94521 .unused,
93447 .unused,94522 .unused,
...@@ -93456,25 +94531,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93456,25 +94531,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93456 .clobbers = .{ .eflags = true },94531 .clobbers = .{ .eflags = true },
93457 .each = .{ .once = &.{94532 .each = .{ .once = &.{
93458 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94533 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93459 .{ .@"0:", ._, .movsx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },94534 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93460 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94535 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
93461 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94536 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },
93462 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94537 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
93463 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94538 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
93464 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94539 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93465 } },94540 } },
93466 }, .{94541 }, .{
93467 .required_features = .{ .slow_incdec, null, null, null },94542 .required_features = .{ .sse2, null, null, null },
93468 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },94543 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
93469 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },94544 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },
93470 .patterns = &.{94545 .patterns = &.{
93471 .{ .src = .{ .to_mem, .none, .none } },94546 .{ .src = .{ .to_mem, .none, .none } },
93472 },94547 },
93473 .extra_temps = .{94548 .extra_temps = .{
93474 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94549 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93475 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94550 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
93476 .unused,94551 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
93477 .unused,94552 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93478 .unused,94553 .unused,
93479 .unused,94554 .unused,
93480 .unused,94555 .unused,
...@@ -93486,24 +94561,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93486,24 +94561,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93486 .dst_temps = .{ .mem, .unused },94561 .dst_temps = .{ .mem, .unused },
93487 .clobbers = .{ .eflags = true },94562 .clobbers = .{ .eflags = true },
93488 .each = .{ .once = &.{94563 .each = .{ .once = &.{
94564 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94565 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
93489 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94566 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93490 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },94567 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
93491 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },94568 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93492 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94569 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93493 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94570 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
93494 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94571 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93495 } },94572 } },
93496 }, .{94573 }, .{
93497 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },94574 .required_features = .{ .sse, null, null, null },
93498 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },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 },
93499 .patterns = &.{94577 .patterns = &.{
93500 .{ .src = .{ .to_mem, .none, .none } },94578 .{ .src = .{ .to_mem, .none, .none } },
93501 },94579 },
93502 .extra_temps = .{94580 .extra_temps = .{
93503 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93504 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94582 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
93505 .unused,94583 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
93506 .unused,94584 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
93507 .unused,94585 .unused,
93508 .unused,94586 .unused,
93509 .unused,94587 .unused,
...@@ -93515,23 +94593,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93515,23 +94593,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93515 .dst_temps = .{ .mem, .unused },94593 .dst_temps = .{ .mem, .unused },
93516 .clobbers = .{ .eflags = true },94594 .clobbers = .{ .eflags = true },
93517 .each = .{ .once = &.{94595 .each = .{ .once = &.{
94596 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
94597 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
93518 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94598 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93519 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0b, .@"2", .tmp0, .add_unaligned_size), ._, ._ },94599 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
93520 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },94600 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
93521 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94601 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
93522 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94602 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
93523 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94603 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93524 } },94604 } },
93525 }, .{94605 }, .{
93526 .required_features = .{ .slow_incdec, null, null, null },94606 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
93527 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },94607 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
93528 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
93529 .patterns = &.{94608 .patterns = &.{
93530 .{ .src = .{ .to_mem, .none, .none } },94609 .{ .src = .{ .to_mem, .none, .none } },
93531 },94610 },
93532 .extra_temps = .{94611 .extra_temps = .{
93533 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93534 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94613 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93535 .unused,94614 .unused,
93536 .unused,94615 .unused,
93537 .unused,94616 .unused,
...@@ -93546,20 +94625,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93546,20 +94625,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93546 .clobbers = .{ .eflags = true },94625 .clobbers = .{ .eflags = true },
93547 .each = .{ .once = &.{94626 .each = .{ .once = &.{
93548 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94627 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93549 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },94628 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
93550 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94629 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93551 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94630 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93552 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93553 } },94632 } },
93554 }, .{94633 }, .{
93555 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },94634 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
93556 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },94635 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
93557 .patterns = &.{94636 .patterns = &.{
93558 .{ .src = .{ .to_mem, .none, .none } },94637 .{ .src = .{ .to_mem, .none, .none } },
93559 },94638 },
93560 .extra_temps = .{94639 .extra_temps = .{
93561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94640 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93562 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94641 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
93563 .unused,94642 .unused,
93564 .unused,94643 .unused,
93565 .unused,94644 .unused,
...@@ -93574,21 +94653,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93574,21 +94653,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93574 .clobbers = .{ .eflags = true },94653 .clobbers = .{ .eflags = true },
93575 .each = .{ .once = &.{94654 .each = .{ .once = &.{
93576 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94655 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93577 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },94656 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
93578 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94657 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93579 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94658 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93580 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94659 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94660 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94661 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93581 } },94662 } },
93582 }, .{94663 }, .{
93583 .required_features = .{ .slow_incdec, null, null, null },94664 .required_features = .{ .fast_imm16, null, null, null },
93584 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },94665 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
93585 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },94666 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
93586 .patterns = &.{94667 .patterns = &.{
93587 .{ .src = .{ .to_mem, .none, .none } },94668 .{ .src = .{ .to_mem, .none, .none } },
93588 },94669 },
93589 .extra_temps = .{94670 .extra_temps = .{
93590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94671 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93591 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94672 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93592 .unused,94673 .unused,
93593 .unused,94674 .unused,
93594 .unused,94675 .unused,
...@@ -93603,22 +94684,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93603,22 +94684,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93603 .clobbers = .{ .eflags = true },94684 .clobbers = .{ .eflags = true },
93604 .each = .{ .once = &.{94685 .each = .{ .once = &.{
93605 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94686 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93606 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },94687 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
93607 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94688 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
93608 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94689 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93609 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94690 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93610 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93611 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94691 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93612 } },94692 } },
93613 }, .{94693 }, .{
93614 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },94694 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
93615 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },94695 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
93616 .patterns = &.{94696 .patterns = &.{
93617 .{ .src = .{ .to_mem, .none, .none } },94697 .{ .src = .{ .to_mem, .none, .none } },
93618 },94698 },
93619 .extra_temps = .{94699 .extra_temps = .{
93620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94700 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93621 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94701 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93622 .unused,94702 .unused,
93623 .unused,94703 .unused,
93624 .unused,94704 .unused,
...@@ -93633,24 +94713,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93633,24 +94713,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93633 .clobbers = .{ .eflags = true },94713 .clobbers = .{ .eflags = true },
93634 .each = .{ .once = &.{94714 .each = .{ .once = &.{
93635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94715 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93636 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },94716 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
93637 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94717 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
93638 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94718 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93639 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94719 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93640 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93641 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
93642 } },94721 } },
93643 }, .{94722 }, .{
93644 .required_features = .{ .bmi2, .slow_incdec, null, null },94723 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93645 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },94724 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
93646 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93647 .patterns = &.{94725 .patterns = &.{
93648 .{ .src = .{ .to_mem, .none, .none } },94726 .{ .src = .{ .to_mem, .none, .none } },
93649 },94727 },
93650 .extra_temps = .{94728 .extra_temps = .{
93651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93652 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94730 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93653 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94731 .unused,
93654 .unused,94732 .unused,
93655 .unused,94733 .unused,
93656 .unused,94734 .unused,
...@@ -93664,23 +94742,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93664,23 +94742,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93664 .clobbers = .{ .eflags = true },94742 .clobbers = .{ .eflags = true },
93665 .each = .{ .once = &.{94743 .each = .{ .once = &.{
93666 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93667 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },94745 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93668 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },94746 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93669 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },94747 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93670 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93672 } },94749 } },
93673 }, .{94750 }, .{
93674 .required_features = .{ .bmi2, null, null, null },94751 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93675 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },94752 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
93676 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93677 .patterns = &.{94753 .patterns = &.{
93678 .{ .src = .{ .to_mem, .none, .none } },94754 .{ .src = .{ .to_mem, .none, .none } },
93679 },94755 },
93680 .extra_temps = .{94756 .extra_temps = .{
93681 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94757 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93682 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94758 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
93683 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94759 .unused,
93684 .unused,94760 .unused,
93685 .unused,94761 .unused,
93686 .unused,94762 .unused,
...@@ -93694,23 +94770,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93694,23 +94770,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93694 .clobbers = .{ .eflags = true },94770 .clobbers = .{ .eflags = true },
93695 .each = .{ .once = &.{94771 .each = .{ .once = &.{
93696 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94772 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93697 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },94773 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93698 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },94774 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93699 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },94775 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93700 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94776 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93701 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94777 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94778 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93702 } },94779 } },
93703 }, .{94780 }, .{
93704 .required_features = .{ .slow_incdec, null, null, null },94781 .required_features = .{ .bmi2, null, null, null },
93705 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },94782 .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 },
93707 .patterns = &.{94784 .patterns = &.{
93708 .{ .src = .{ .to_mem, .none, .none } },94785 .{ .src = .{ .to_mem, .none, .none } },
93709 },94786 },
93710 .extra_temps = .{94787 .extra_temps = .{
93711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94788 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93712 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94789 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93713 .unused,94790 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93714 .unused,94791 .unused,
93715 .unused,94792 .unused,
93716 .unused,94793 .unused,
...@@ -93724,21 +94801,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93724,21 +94801,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93724 .clobbers = .{ .eflags = true },94801 .clobbers = .{ .eflags = true },
93725 .each = .{ .once = &.{94802 .each = .{ .once = &.{
93726 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94803 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93727 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },94804 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93728 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },94805 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93729 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94806 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
93730 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94807 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93732 } },94809 } },
93733 }, .{94810 }, .{
94811 .required_features = .{ .fast_imm16, null, null, null },
93734 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },94812 .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 },
93736 .patterns = &.{94814 .patterns = &.{
93737 .{ .src = .{ .to_mem, .none, .none } },94815 .{ .src = .{ .to_mem, .none, .none } },
93738 },94816 },
93739 .extra_temps = .{94817 .extra_temps = .{
93740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93741 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94819 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93742 .unused,94820 .unused,
93743 .unused,94821 .unused,
93744 .unused,94822 .unused,
...@@ -93753,22 +94831,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93753,22 +94831,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93753 .clobbers = .{ .eflags = true },94831 .clobbers = .{ .eflags = true },
93754 .each = .{ .once = &.{94832 .each = .{ .once = &.{
93755 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94833 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93756 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },94834 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93757 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },94835 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
93758 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94836 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93759 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94837 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93760 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94838 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93761 } },94839 } },
93762 }, .{94840 }, .{
93763 .required_features = .{ .slow_incdec, null, null, null },94841 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
93764 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },94842 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
93765 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },
93766 .patterns = &.{94843 .patterns = &.{
93767 .{ .src = .{ .to_mem, .none, .none } },94844 .{ .src = .{ .to_mem, .none, .none } },
93768 },94845 },
93769 .extra_temps = .{94846 .extra_temps = .{
93770 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93771 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94848 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93772 .unused,94849 .unused,
93773 .unused,94850 .unused,
93774 .unused,94851 .unused,
...@@ -93783,20 +94860,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93783,20 +94860,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93783 .clobbers = .{ .eflags = true },94860 .clobbers = .{ .eflags = true },
93784 .each = .{ .once = &.{94861 .each = .{ .once = &.{
93785 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94862 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93786 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },94863 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
93787 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94864 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
93788 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94865 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94866 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94867 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93790 } },94868 } },
93791 }, .{94869 }, .{
93792 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },94870 .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 },
93794 .patterns = &.{94872 .patterns = &.{
93795 .{ .src = .{ .to_mem, .none, .none } },94873 .{ .src = .{ .to_mem, .none, .none } },
93796 },94874 },
93797 .extra_temps = .{94875 .extra_temps = .{
93798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94876 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93799 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94877 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93800 .unused,94878 .unused,
93801 .unused,94879 .unused,
93802 .unused,94880 .unused,
...@@ -93811,21 +94889,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93811,21 +94889,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93811 .clobbers = .{ .eflags = true },94889 .clobbers = .{ .eflags = true },
93812 .each = .{ .once = &.{94890 .each = .{ .once = &.{
93813 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94891 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93814 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },94892 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93815 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94893 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93816 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94894 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93817 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },94895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93818 } },94896 } },
93819 }, .{94897 }, .{
93820 .required_features = .{ .slow_incdec, null, null, null },
93821 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },94898 .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 },
93823 .patterns = &.{94900 .patterns = &.{
93824 .{ .src = .{ .to_mem, .none, .none } },94901 .{ .src = .{ .to_mem, .none, .none } },
93825 },94902 },
93826 .extra_temps = .{94903 .extra_temps = .{
93827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93828 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94905 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
93829 .unused,94906 .unused,
93830 .unused,94907 .unused,
93831 .unused,94908 .unused,
...@@ -93840,23 +94917,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93840,23 +94917,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93840 .clobbers = .{ .eflags = true },94917 .clobbers = .{ .eflags = true },
93841 .each = .{ .once = &.{94918 .each = .{ .once = &.{
93842 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94919 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93843 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },94920 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93844 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94921 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93845 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94922 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93846 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94923 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93847 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94924 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93848 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94925 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93849 } },94926 } },
93850 }, .{94927 }, .{
93851 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },94928 .required_features = .{ .bmi2, null, null, null },
93852 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },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 },
93853 .patterns = &.{94931 .patterns = &.{
93854 .{ .src = .{ .to_mem, .none, .none } },94932 .{ .src = .{ .to_mem, .none, .none } },
93855 },94933 },
93856 .extra_temps = .{94934 .extra_temps = .{
93857 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93858 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },94936 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
93859 .unused,94937 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93860 .unused,94938 .unused,
93861 .unused,94939 .unused,
93862 .unused,94940 .unused,
...@@ -93870,24 +94948,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93870,24 +94948,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93870 .clobbers = .{ .eflags = true },94948 .clobbers = .{ .eflags = true },
93871 .each = .{ .once = &.{94949 .each = .{ .once = &.{
93872 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93873 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },94951 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
93874 .{ ._, ._l, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94952 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },
93875 .{ ._, ._r, .sa, .tmp1b, .uia(8, .dst0, .sub_bit_size), ._, ._ },94953 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
93876 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },94954 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93877 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },94955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93878 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
93879 } },94956 } },
93880 }, .{94957 }, .{
93881 .required_features = .{ .bmi2, .slow_incdec, null, null },94958 .required_features = .{ .fast_imm16, null, null, null },
93882 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },94959 .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 },
93884 .patterns = &.{94961 .patterns = &.{
93885 .{ .src = .{ .to_mem, .none, .none } },94962 .{ .src = .{ .to_mem, .none, .none } },
93886 },94963 },
93887 .extra_temps = .{94964 .extra_temps = .{
93888 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93889 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94966 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93890 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94967 .unused,
93891 .unused,94968 .unused,
93892 .unused,94969 .unused,
93893 .unused,94970 .unused,
...@@ -93901,23 +94978,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93901,23 +94978,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93901 .clobbers = .{ .eflags = true },94978 .clobbers = .{ .eflags = true },
93902 .each = .{ .once = &.{94979 .each = .{ .once = &.{
93903 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },94980 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93904 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },94981 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93905 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },94982 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
93906 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },94983 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93907 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },94984 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93908 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },94985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93909 } },94986 } },
93910 }, .{94987 }, .{
93911 .required_features = .{ .bmi2, null, null, null },
93912 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },94988 .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 },
93914 .patterns = &.{94990 .patterns = &.{
93915 .{ .src = .{ .to_mem, .none, .none } },94991 .{ .src = .{ .to_mem, .none, .none } },
93916 },94992 },
93917 .extra_temps = .{94993 .extra_temps = .{
93918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },94994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93919 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94995 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93920 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },94996 .unused,
93921 .unused,94997 .unused,
93922 .unused,94998 .unused,
93923 .unused,94999 .unused,
...@@ -93931,22 +95007,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93931,22 +95007,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93931 .clobbers = .{ .eflags = true },95007 .clobbers = .{ .eflags = true },
93932 .each = .{ .once = &.{95008 .each = .{ .once = &.{
93933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95009 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93934 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },95010 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
93935 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },95011 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
93936 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },95012 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93937 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },95013 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93938 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },95014 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93939 } },95015 } },
93940 }, .{95016 }, .{
93941 .required_features = .{ .slow_incdec, null, null, null },95017 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
93942 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },95018 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
93943 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
93944 .patterns = &.{95019 .patterns = &.{
93945 .{ .src = .{ .to_mem, .none, .none } },95020 .{ .src = .{ .to_mem, .none, .none } },
93946 },95021 },
93947 .extra_temps = .{95022 .extra_temps = .{
93948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93949 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95024 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
93950 .unused,95025 .unused,
93951 .unused,95026 .unused,
93952 .unused,95027 .unused,
...@@ -93962,20 +95037,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93962,20 +95037,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93962 .each = .{ .once = &.{95037 .each = .{ .once = &.{
93963 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95038 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93964 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },95039 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93965 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },95040 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93966 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },95041 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
93967 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
93968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93969 } },95043 } },
93970 }, .{95044 }, .{
93971 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },95045 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
93972 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },95046 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
93973 .patterns = &.{95047 .patterns = &.{
93974 .{ .src = .{ .to_mem, .none, .none } },95048 .{ .src = .{ .to_mem, .none, .none } },
93975 },95049 },
93976 .extra_temps = .{95050 .extra_temps = .{
93977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95051 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
93978 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95052 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
93979 .unused,95053 .unused,
93980 .unused,95054 .unused,
93981 .unused,95055 .unused,
...@@ -93991,22 +95065,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -93991,22 +95065,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
93991 .each = .{ .once = &.{95065 .each = .{ .once = &.{
93992 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95066 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
93993 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },95067 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
93994 .{ ._, ._, .@"and", .tmp1b, .sa(.dst0, .add_umax), ._, ._ },95068 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93995 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },95069 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
93996 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },95070 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
93997 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },95071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
93998 } },95073 } },
93999 }, .{95074 }, .{
94000 .required_features = .{ .slow_incdec, null, null, null },95075 .required_features = .{ .bmi2, null, null, null },
94001 .src_constraints = .{ .any_scalar_int, .any, .any },95076 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
94002 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },95077 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
94003 .patterns = &.{95078 .patterns = &.{
94004 .{ .src = .{ .to_mem, .none, .none } },95079 .{ .src = .{ .to_mem, .none, .none } },
94005 },95080 },
94006 .extra_temps = .{95081 .extra_temps = .{
94007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95082 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94008 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94009 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95083 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95084 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94010 .unused,95085 .unused,
94011 .unused,95086 .unused,
94012 .unused,95087 .unused,
...@@ -94020,23 +95095,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94020,23 +95095,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94020 .clobbers = .{ .eflags = true },95095 .clobbers = .{ .eflags = true },
94021 .each = .{ .once = &.{95096 .each = .{ .once = &.{
94022 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95097 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94023 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95098 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
94024 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },95099 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
94025 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },95100 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94026 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95101 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94027 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94028 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95102 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94029 } },95103 } },
94030 }, .{95104 }, .{
94031 .src_constraints = .{ .any_scalar_int, .any, .any },95105 .required_features = .{ .fast_imm16, null, null, null },
94032 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .byte, .is = 8 } }, .any },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 },
94033 .patterns = &.{95108 .patterns = &.{
94034 .{ .src = .{ .to_mem, .none, .none } },95109 .{ .src = .{ .to_mem, .none, .none } },
94035 },95110 },
94036 .extra_temps = .{95111 .extra_temps = .{
94037 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94038 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95113 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94039 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95114 .unused,
94040 .unused,95115 .unused,
94041 .unused,95116 .unused,
94042 .unused,95117 .unused,
...@@ -94050,24 +95125,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94050,24 +95125,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94050 .clobbers = .{ .eflags = true },95125 .clobbers = .{ .eflags = true },
94051 .each = .{ .once = &.{95126 .each = .{ .once = &.{
94052 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95127 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94053 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95128 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
94054 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },95129 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },
94055 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },95130 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94056 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95131 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94057 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },95132 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94058 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
94059 } },95133 } },
94060 }, .{95134 }, .{
94061 .required_features = .{ .slow_incdec, null, null, null },95135 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
94062 .src_constraints = .{ .any_scalar_signed_int, .any, .any },95136 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
94063 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
94064 .patterns = &.{95137 .patterns = &.{
94065 .{ .src = .{ .to_mem, .none, .none } },95138 .{ .src = .{ .to_mem, .none, .none } },
94066 },95139 },
94067 .extra_temps = .{95140 .extra_temps = .{
94068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95141 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94069 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95142 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94070 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },95143 .unused,
94071 .unused,95144 .unused,
94072 .unused,95145 .unused,
94073 .unused,95146 .unused,
...@@ -94081,25 +95154,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94081,25 +95154,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94081 .clobbers = .{ .eflags = true },95154 .clobbers = .{ .eflags = true },
94082 .each = .{ .once = &.{95155 .each = .{ .once = &.{
94083 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95156 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94084 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95157 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
94085 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },95158 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94086 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },95159 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
94087 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },95160 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94088 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94089 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94090 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
94091 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95161 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94092 } },95162 } },
94093 }, .{95163 }, .{
94094 .src_constraints = .{ .any_scalar_signed_int, .any, .any },95164 .src_constraints = .{ .any_scalar_int, .any, .any },
94095 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },95165 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },
94096 .patterns = &.{95166 .patterns = &.{
94097 .{ .src = .{ .to_mem, .none, .none } },95167 .{ .src = .{ .to_mem, .none, .none } },
94098 },95168 },
94099 .extra_temps = .{95169 .extra_temps = .{
94100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94101 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95171 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94102 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },95172 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94103 .unused,95173 .unused,
94104 .unused,95174 .unused,
94105 .unused,95175 .unused,
...@@ -94115,25 +95185,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94115,25 +95185,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94115 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95185 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94116 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95186 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94117 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },95187 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94118 .{ ._, ._l, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },95188 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94119 .{ ._, ._r, .sa, .tmp2b, .uia(8, .dst0, .sub_bit_size), ._, ._ },
94120 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },
94121 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95189 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94122 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },95190 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94123 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },95191 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94124 } },95192 } },
94125 }, .{95193 }, .{
94126 .required_features = .{ .bmi2, .slow_incdec, null, null },95194 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
94127 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },95195 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
94128 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
94129 .patterns = &.{95196 .patterns = &.{
94130 .{ .src = .{ .to_mem, .none, .none } },95197 .{ .src = .{ .to_mem, .none, .none } },
94131 },95198 },
94132 .extra_temps = .{95199 .extra_temps = .{
94133 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94134 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95201 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94135 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95202 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
94136 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95203 .unused,
94137 .unused,95204 .unused,
94138 .unused,95205 .unused,
94139 .unused,95206 .unused,
...@@ -94147,17 +95214,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94147,17 +95214,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94147 .each = .{ .once = &.{95214 .each = .{ .once = &.{
94148 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95215 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94149 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95216 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94150 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },95217 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94151 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },95218 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94152 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },95219 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95220 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94153 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95221 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94154 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },95222 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94155 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94156 } },95224 } },
94157 }, .{95225 }, .{
94158 .required_features = .{ .bmi2, null, null, null },95226 .required_features = .{ .bmi2, null, null, null },
94159 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },95227 .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 },
94161 .patterns = &.{95229 .patterns = &.{
94162 .{ .src = .{ .to_mem, .none, .none } },95230 .{ .src = .{ .to_mem, .none, .none } },
94163 },95231 },
...@@ -94165,7 +95233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94165,7 +95233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95233 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94166 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95234 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94167 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95235 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94168 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95236 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94169 .unused,95237 .unused,
94170 .unused,95238 .unused,
94171 .unused,95239 .unused,
...@@ -94181,22 +95249,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94181,22 +95249,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94181 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95249 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94182 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },95250 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
94183 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },95251 .{ .@"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, ._, ._ },
94185 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95253 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94186 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },95254 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94187 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },95255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94188 } },95256 } },
94189 }, .{95257 }, .{
94190 .required_features = .{ .slow_incdec, null, null, null },95258 .required_features = .{ .fast_imm16, null, null, null },
94191 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },95259 .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 },
94193 .patterns = &.{95261 .patterns = &.{
94194 .{ .src = .{ .to_mem, .none, .none } },95262 .{ .src = .{ .to_mem, .none, .none } },
94195 },95263 },
94196 .extra_temps = .{95264 .extra_temps = .{
94197 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94198 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95266 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94199 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95267 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94200 .unused,95268 .unused,
94201 .unused,95269 .unused,
94202 .unused,95270 .unused,
...@@ -94212,22 +95280,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94212,22 +95280,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94212 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95280 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94213 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95281 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94214 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },95282 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94215 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },95283 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },
94216 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },95284 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94217 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95285 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94218 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },95286 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94219 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94220 } },95288 } },
94221 }, .{95289 }, .{
94222 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },95290 .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 },
94224 .patterns = &.{95292 .patterns = &.{
94225 .{ .src = .{ .to_mem, .none, .none } },95293 .{ .src = .{ .to_mem, .none, .none } },
94226 },95294 },
94227 .extra_temps = .{95295 .extra_temps = .{
94228 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94229 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },95297 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94230 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95298 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
94231 .unused,95299 .unused,
94232 .unused,95300 .unused,
94233 .unused,95301 .unused,
...@@ -94243,28 +95311,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94243,28 +95311,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94243 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95311 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94244 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },95312 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
94245 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },95313 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
94246 .{ ._, ._, .@"and", .tmp2b, .sa(.dst0, .add_umax), ._, ._ },95314 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
94247 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp2b, ._, ._ },95315 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
94248 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },95316 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
94249 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },95317 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94250 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },95318 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94251 } },95319 } },
94252 }, .{95320 }, .{
94253 .required_features = .{ .avx, null, null, null },95321 .required_features = .{ .avx, null, null, null },
94254 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },95322 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94255 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },95323 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
94256 .patterns = &.{95324 .patterns = &.{
94257 .{ .src = .{ .to_sse, .none, .none } },95325 .{ .src = .{ .to_sse, .none, .none } },
94258 },95326 },
94259 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },95327 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
94260 .each = .{ .once = &.{95328 .each = .{ .once = &.{
94261 .{ ._, .vp_w, .sll, .dst0x, .src0x, .uia(16, .dst0, .sub_bit_size), ._ },95329 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },
94262 .{ ._, .vp_w, .sra, .dst0x, .dst0x, .uia(16, .dst0, .sub_bit_size), ._ },95330 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_size), ._ },
94263 } },95331 } },
94264 }, .{95332 }, .{
94265 .required_features = .{ .avx, null, null, null },95333 .required_features = .{ .avx, null, null, null },
94266 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },95334 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94267 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },95335 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
94268 .patterns = &.{95336 .patterns = &.{
94269 .{ .src = .{ .to_sse, .none, .none } },95337 .{ .src = .{ .to_sse, .none, .none } },
94270 },95338 },
...@@ -94288,20 +95356,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94288,20 +95356,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94288 } },95356 } },
94289 }, .{95357 }, .{
94290 .required_features = .{ .sse2, null, null, null },95358 .required_features = .{ .sse2, null, null, null },
94291 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },95359 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94292 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },95360 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
94293 .patterns = &.{95361 .patterns = &.{
94294 .{ .src = .{ .to_mut_sse, .none, .none } },95362 .{ .src = .{ .to_mut_sse, .none, .none } },
94295 },95363 },
94296 .dst_temps = .{ .{ .ref = .src0 }, .unused },95364 .dst_temps = .{ .{ .ref = .src0 }, .unused },
94297 .each = .{ .once = &.{95365 .each = .{ .once = &.{
94298 .{ ._, .p_w, .sll, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },95366 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94299 .{ ._, .p_w, .sra, .dst0x, .uia(16, .dst0, .sub_bit_size), ._, ._ },95367 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94300 } },95368 } },
94301 }, .{95369 }, .{
94302 .required_features = .{ .sse2, null, null, null },95370 .required_features = .{ .sse2, null, null, null },
94303 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },95371 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94304 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },95372 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
94305 .patterns = &.{95373 .patterns = &.{
94306 .{ .src = .{ .to_mut_sse, .none, .none } },95374 .{ .src = .{ .to_mut_sse, .none, .none } },
94307 },95375 },
...@@ -94325,8 +95393,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94325,8 +95393,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94325 } },95393 } },
94326 }, .{95394 }, .{
94327 .required_features = .{ .sse, null, null, null },95395 .required_features = .{ .sse, null, null, null },
94328 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },95396 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94329 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },95397 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
94330 .patterns = &.{95398 .patterns = &.{
94331 .{ .src = .{ .to_mut_sse, .none, .none } },95399 .{ .src = .{ .to_mut_sse, .none, .none } },
94332 },95400 },
...@@ -94350,20 +95418,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94350,20 +95418,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94350 } },95418 } },
94351 }, .{95419 }, .{
94352 .required_features = .{ .avx2, null, null, null },95420 .required_features = .{ .avx2, null, null, null },
94353 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },95421 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
94354 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },95422 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
94355 .patterns = &.{95423 .patterns = &.{
94356 .{ .src = .{ .to_sse, .none, .none } },95424 .{ .src = .{ .to_sse, .none, .none } },
94357 },95425 },
94358 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },95426 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
94359 .each = .{ .once = &.{95427 .each = .{ .once = &.{
94360 .{ ._, .vp_w, .sll, .dst0y, .src0y, .uia(16, .dst0, .sub_bit_size), ._ },95428 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },
94361 .{ ._, .vp_w, .sra, .dst0y, .dst0y, .uia(16, .dst0, .sub_bit_size), ._ },95429 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_size), ._ },
94362 } },95430 } },
94363 }, .{95431 }, .{
94364 .required_features = .{ .avx2, null, null, null },95432 .required_features = .{ .avx2, null, null, null },
94365 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },95433 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
94366 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },95434 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
94367 .patterns = &.{95435 .patterns = &.{
94368 .{ .src = .{ .to_sse, .none, .none } },95436 .{ .src = .{ .to_sse, .none, .none } },
94369 },95437 },
...@@ -94387,14 +95455,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94387,14 +95455,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94387 } },95455 } },
94388 }, .{95456 }, .{
94389 .required_features = .{ .avx2, null, null, null },95457 .required_features = .{ .avx2, null, null, null },
94390 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any, .any },95458 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
94391 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .word } }, .any },95459 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },
94392 .patterns = &.{95460 .patterns = &.{
94393 .{ .src = .{ .to_mem, .none, .none } },95461 .{ .src = .{ .to_mem, .none, .none } },
94394 },95462 },
94395 .extra_temps = .{95463 .extra_temps = .{
94396 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95464 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94397 .{ .type = .vector_16_i16, .kind = .{ .rc = .sse } },95465 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
94398 .unused,95466 .unused,
94399 .unused,95467 .unused,
94400 .unused,95468 .unused,
...@@ -94410,23 +95478,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94410,23 +95478,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94410 .each = .{ .once = &.{95478 .each = .{ .once = &.{
94411 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95479 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94412 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },95480 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
94413 .{ ._, .vp_w, .sll, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },95481 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },
94414 .{ ._, .vp_w, .sra, .tmp1y, .tmp1y, .uia(16, .dst0, .sub_bit_size), ._ },95482 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },
94415 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },95483 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
94416 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },95484 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
94417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94418 } },95486 } },
94419 }, .{95487 }, .{
94420 .required_features = .{ .avx2, null, null, null },95488 .required_features = .{ .avx2, null, null, null },
94421 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any, .any },95489 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },
94422 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .word } }, .any },95490 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },
94423 .patterns = &.{95491 .patterns = &.{
94424 .{ .src = .{ .to_mem, .none, .none } },95492 .{ .src = .{ .to_mem, .none, .none } },
94425 },95493 },
94426 .extra_temps = .{95494 .extra_temps = .{
94427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94428 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },95496 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
94429 .{ .type = .vector_16_u16, .kind = .{ .rc = .sse } },95497 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
94430 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },95498 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94431 .unused,95499 .unused,
94432 .unused,95500 .unused,
...@@ -94449,14 +95517,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94449,14 +95517,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94449 } },95517 } },
94450 }, .{95518 }, .{
94451 .required_features = .{ .avx, null, null, null },95519 .required_features = .{ .avx, null, null, null },
94452 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },95520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94453 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },95521 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
94454 .patterns = &.{95522 .patterns = &.{
94455 .{ .src = .{ .to_mem, .none, .none } },95523 .{ .src = .{ .to_mem, .none, .none } },
94456 },95524 },
94457 .extra_temps = .{95525 .extra_temps = .{
94458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94459 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },95527 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
94460 .unused,95528 .unused,
94461 .unused,95529 .unused,
94462 .unused,95530 .unused,
...@@ -94472,23 +95540,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94472,23 +95540,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94472 .each = .{ .once = &.{95540 .each = .{ .once = &.{
94473 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95541 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94474 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },95542 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94475 .{ ._, .vp_w, .sll, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },95543 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },
94476 .{ ._, .vp_w, .sra, .tmp1x, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._ },95544 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },
94477 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },95545 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
94478 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },95546 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94479 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95547 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94480 } },95548 } },
94481 }, .{95549 }, .{
94482 .required_features = .{ .avx, null, null, null },95550 .required_features = .{ .avx, null, null, null },
94483 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },95551 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94484 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },95552 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
94485 .patterns = &.{95553 .patterns = &.{
94486 .{ .src = .{ .to_mem, .none, .none } },95554 .{ .src = .{ .to_mem, .none, .none } },
94487 },95555 },
94488 .extra_temps = .{95556 .extra_temps = .{
94489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95557 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94490 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },95558 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
94491 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },95559 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
94492 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },95560 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94493 .unused,95561 .unused,
94494 .unused,95562 .unused,
...@@ -94511,14 +95579,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94511,14 +95579,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94511 } },95579 } },
94512 }, .{95580 }, .{
94513 .required_features = .{ .sse2, null, null, null },95581 .required_features = .{ .sse2, null, null, null },
94514 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },95582 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94515 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any },95583 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
94516 .patterns = &.{95584 .patterns = &.{
94517 .{ .src = .{ .to_mem, .none, .none } },95585 .{ .src = .{ .to_mem, .none, .none } },
94518 },95586 },
94519 .extra_temps = .{95587 .extra_temps = .{
94520 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95588 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94521 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },95589 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
94522 .unused,95590 .unused,
94523 .unused,95591 .unused,
94524 .unused,95592 .unused,
...@@ -94534,23 +95602,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94534,23 +95602,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94534 .each = .{ .once = &.{95602 .each = .{ .once = &.{
94535 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95603 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94536 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },95604 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
94537 .{ ._, .p_w, .sll, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },95605 .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94538 .{ ._, .p_w, .sra, .tmp1x, .uia(16, .dst0, .sub_bit_size), ._, ._ },95606 .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94539 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },95607 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
94540 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },95608 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
94541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94542 } },95610 } },
94543 }, .{95611 }, .{
94544 .required_features = .{ .sse2, null, null, null },95612 .required_features = .{ .sse2, null, null, null },
94545 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },95613 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94546 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },95614 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
94547 .patterns = &.{95615 .patterns = &.{
94548 .{ .src = .{ .to_mem, .none, .none } },95616 .{ .src = .{ .to_mem, .none, .none } },
94549 },95617 },
94550 .extra_temps = .{95618 .extra_temps = .{
94551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95619 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94552 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },95620 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
94553 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },95621 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
94554 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },95622 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94555 .unused,95623 .unused,
94556 .unused,95624 .unused,
...@@ -94574,15 +95642,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94574,15 +95642,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94574 } },95642 } },
94575 }, .{95643 }, .{
94576 .required_features = .{ .sse, null, null, null },95644 .required_features = .{ .sse, null, null, null },
94577 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },95645 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },
94578 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any },95646 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },
94579 .patterns = &.{95647 .patterns = &.{
94580 .{ .src = .{ .to_mem, .none, .none } },95648 .{ .src = .{ .to_mem, .none, .none } },
94581 },95649 },
94582 .extra_temps = .{95650 .extra_temps = .{
94583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94584 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },95652 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
94585 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },95653 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
94586 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },95654 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
94587 .unused,95655 .unused,
94588 .unused,95656 .unused,
...@@ -94605,14 +95673,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94605,14 +95673,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94605 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94606 } },95674 } },
94607 }, .{95675 }, .{
94608 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },95676 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94609 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },95677 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
94610 .patterns = &.{95678 .patterns = &.{
94611 .{ .src = .{ .to_mem, .none, .none } },95679 .{ .src = .{ .to_mem, .none, .none } },
94612 },95680 },
94613 .extra_temps = .{95681 .extra_temps = .{
94614 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94615 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95683 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94616 .unused,95684 .unused,
94617 .unused,95685 .unused,
94618 .unused,95686 .unused,
...@@ -94627,20 +95695,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94627,20 +95695,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94627 .clobbers = .{ .eflags = true },95695 .clobbers = .{ .eflags = true },
94628 .each = .{ .once = &.{95696 .each = .{ .once = &.{
94629 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95697 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94630 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },95698 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
94631 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95699 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94632 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95700 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95701 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94634 } },95702 } },
94635 }, .{95703 }, .{
94636 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },95704 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94637 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },95705 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
94638 .patterns = &.{95706 .patterns = &.{
94639 .{ .src = .{ .to_mem, .none, .none } },95707 .{ .src = .{ .to_mem, .none, .none } },
94640 },95708 },
94641 .extra_temps = .{95709 .extra_temps = .{
94642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94643 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },95711 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
94644 .unused,95712 .unused,
94645 .unused,95713 .unused,
94646 .unused,95714 .unused,
...@@ -94655,24 +95723,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94655,24 +95723,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94655 .clobbers = .{ .eflags = true },95723 .clobbers = .{ .eflags = true },
94656 .each = .{ .once = &.{95724 .each = .{ .once = &.{
94657 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95725 .{ ._, ._, .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), ._, ._ },
94659 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },95727 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94660 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },95728 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94661 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95729 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94662 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95730 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94663 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94664 } },95732 } },
94665 }, .{95733 }, .{
94666 .required_features = .{ .fast_imm16, null, null, null },95734 .required_features = .{ .bmi2, null, null, null },
94667 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },95735 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94668 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },95736 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
94669 .patterns = &.{95737 .patterns = &.{
94670 .{ .src = .{ .to_mem, .none, .none } },95738 .{ .src = .{ .to_mem, .none, .none } },
94671 },95739 },
94672 .extra_temps = .{95740 .extra_temps = .{
94673 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94674 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95742 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94675 .unused,95743 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94676 .unused,95744 .unused,
94677 .unused,95745 .unused,
94678 .unused,95746 .unused,
...@@ -94686,21 +95754,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94686,21 +95754,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94686 .clobbers = .{ .eflags = true },95754 .clobbers = .{ .eflags = true },
94687 .each = .{ .once = &.{95755 .each = .{ .once = &.{
94688 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95756 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94689 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },95757 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
94690 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },95758 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },
94691 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95759 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
94692 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95760 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94693 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94694 } },95762 } },
94695 }, .{95763 }, .{
94696 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },95764 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
94697 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },95765 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
94698 .patterns = &.{95766 .patterns = &.{
94699 .{ .src = .{ .to_mem, .none, .none } },95767 .{ .src = .{ .to_mem, .none, .none } },
94700 },95768 },
94701 .extra_temps = .{95769 .extra_temps = .{
94702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95770 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94703 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95771 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94704 .unused,95772 .unused,
94705 .unused,95773 .unused,
94706 .unused,95774 .unused,
...@@ -94715,21 +95783,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94715,21 +95783,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94715 .clobbers = .{ .eflags = true },95783 .clobbers = .{ .eflags = true },
94716 .each = .{ .once = &.{95784 .each = .{ .once = &.{
94717 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95785 .{ ._, ._, .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), ._, ._ },
94719 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },95787 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94720 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95788 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94721 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95789 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94722 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94723 } },95791 } },
94724 }, .{95792 }, .{
94725 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },95793 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94726 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },95794 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
94727 .patterns = &.{95795 .patterns = &.{
94728 .{ .src = .{ .to_mem, .none, .none } },95796 .{ .src = .{ .to_mem, .none, .none } },
94729 },95797 },
94730 .extra_temps = .{95798 .extra_temps = .{
94731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95799 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94732 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95800 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94733 .unused,95801 .unused,
94734 .unused,95802 .unused,
94735 .unused,95803 .unused,
...@@ -94745,19 +95813,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94745,19 +95813,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94745 .each = .{ .once = &.{95813 .each = .{ .once = &.{
94746 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95814 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94747 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },95815 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94748 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95816 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94749 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95817 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94750 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95818 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94751 } },95819 } },
94752 }, .{95820 }, .{
94753 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },95821 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94754 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },95822 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
94755 .patterns = &.{95823 .patterns = &.{
94756 .{ .src = .{ .to_mem, .none, .none } },95824 .{ .src = .{ .to_mem, .none, .none } },
94757 },95825 },
94758 .extra_temps = .{95826 .extra_temps = .{
94759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94760 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },95828 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
94761 .unused,95829 .unused,
94762 .unused,95830 .unused,
94763 .unused,95831 .unused,
...@@ -94775,21 +95843,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94775,21 +95843,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94775 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },95843 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94776 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },95844 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94777 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },95845 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94778 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95846 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94779 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95847 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95848 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94781 } },95849 } },
94782 }, .{95850 }, .{
94783 .required_features = .{ .bmi2, null, null, null },95851 .required_features = .{ .bmi2, null, null, null },
94784 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },95852 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94785 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },95853 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
94786 .patterns = &.{95854 .patterns = &.{
94787 .{ .src = .{ .to_mem, .none, .none } },95855 .{ .src = .{ .to_mem, .none, .none } },
94788 },95856 },
94789 .extra_temps = .{95857 .extra_temps = .{
94790 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94791 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },95859 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94792 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95860 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94793 .unused,95861 .unused,
94794 .unused,95862 .unused,
94795 .unused,95863 .unused,
...@@ -94805,20 +95873,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94805,20 +95873,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94805 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95873 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94806 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },95874 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
94807 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },95875 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },
94808 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },95876 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
94809 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95877 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94810 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94811 } },95879 } },
94812 }, .{95880 }, .{
94813 .required_features = .{ .fast_imm16, null, null, null },95881 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
94814 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },95882 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
94815 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
94816 .patterns = &.{95883 .patterns = &.{
94817 .{ .src = .{ .to_mem, .none, .none } },95884 .{ .src = .{ .to_mem, .none, .none } },
94818 },95885 },
94819 .extra_temps = .{95886 .extra_temps = .{
94820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94821 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95888 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94822 .unused,95889 .unused,
94823 .unused,95890 .unused,
94824 .unused,95891 .unused,
...@@ -94834,20 +95901,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94834,20 +95901,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94834 .each = .{ .once = &.{95901 .each = .{ .once = &.{
94835 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95902 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94836 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },95903 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
94837 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },95904 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94838 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95905 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94839 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95906 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94840 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94841 } },95908 } },
94842 }, .{95909 }, .{
94843 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },95910 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
94844 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },95911 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
94845 .patterns = &.{95912 .patterns = &.{
94846 .{ .src = .{ .to_mem, .none, .none } },95913 .{ .src = .{ .to_mem, .none, .none } },
94847 },95914 },
94848 .extra_temps = .{95915 .extra_temps = .{
94849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94850 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95917 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94851 .unused,95918 .unused,
94852 .unused,95919 .unused,
94853 .unused,95920 .unused,
...@@ -94862,21 +95929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94862,21 +95929,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94862 .clobbers = .{ .eflags = true },95929 .clobbers = .{ .eflags = true },
94863 .each = .{ .once = &.{95930 .each = .{ .once = &.{
94864 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95931 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94865 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },95932 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94866 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },95933 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94867 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95934 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94868 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94869 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95935 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94870 } },95936 } },
94871 }, .{95937 }, .{
94872 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },95938 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
94873 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },95939 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
94874 .patterns = &.{95940 .patterns = &.{
94875 .{ .src = .{ .to_mem, .none, .none } },95941 .{ .src = .{ .to_mem, .none, .none } },
94876 },95942 },
94877 .extra_temps = .{95943 .extra_temps = .{
94878 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94879 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },95945 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
94880 .unused,95946 .unused,
94881 .unused,95947 .unused,
94882 .unused,95948 .unused,
...@@ -94892,19 +95958,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94892,19 +95958,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94892 .each = .{ .once = &.{95958 .each = .{ .once = &.{
94893 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },95959 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94894 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },95960 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94895 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },95961 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94896 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },95962 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95963 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
95964 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94897 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },95965 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94898 } },95966 } },
94899 }, .{95967 }, .{
94900 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },95968 .required_features = .{ .bmi2, null, null, null },
94901 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },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 },
94902 .patterns = &.{95971 .patterns = &.{
94903 .{ .src = .{ .to_mem, .none, .none } },95972 .{ .src = .{ .to_mem, .none, .none } },
94904 },95973 },
94905 .extra_temps = .{95974 .extra_temps = .{
94906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },95975 .{ .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 } },
94908 .unused,96006 .unused,
94909 .unused,96007 .unused,
94910 .unused,96008 .unused,
...@@ -94920,23 +96018,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94920,23 +96018,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94920 .each = .{ .once = &.{96018 .each = .{ .once = &.{
94921 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96019 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94922 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },96020 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
94923 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },96021 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
94924 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },96022 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94925 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96023 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94926 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94927 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94928 } },96025 } },
94929 }, .{96026 }, .{
94930 .required_features = .{ .bmi2, null, null, null },96027 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
94931 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },96028 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
94932 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
94933 .patterns = &.{96029 .patterns = &.{
94934 .{ .src = .{ .to_mem, .none, .none } },96030 .{ .src = .{ .to_mem, .none, .none } },
94935 },96031 },
94936 .extra_temps = .{96032 .extra_temps = .{
94937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96033 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94938 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },96034 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94939 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96035 .unused,
94940 .unused,96036 .unused,
94941 .unused,96037 .unused,
94942 .unused,96038 .unused,
...@@ -94950,22 +96046,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94950,22 +96046,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94950 .clobbers = .{ .eflags = true },96046 .clobbers = .{ .eflags = true },
94951 .each = .{ .once = &.{96047 .each = .{ .once = &.{
94952 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96048 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94953 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },96049 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
94954 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },96050 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
94955 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },96051 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94956 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
94957 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94958 } },96053 } },
94959 }, .{96054 }, .{
94960 .required_features = .{ .fast_imm16, null, null, null },96055 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
94961 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },96056 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
94962 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
94963 .patterns = &.{96057 .patterns = &.{
94964 .{ .src = .{ .to_mem, .none, .none } },96058 .{ .src = .{ .to_mem, .none, .none } },
94965 },96059 },
94966 .extra_temps = .{96060 .extra_temps = .{
94967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94968 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96062 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
94969 .unused,96063 .unused,
94970 .unused,96064 .unused,
94971 .unused,96065 .unused,
...@@ -94980,22 +96074,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -94980,22 +96074,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
94980 .clobbers = .{ .eflags = true },96074 .clobbers = .{ .eflags = true },
94981 .each = .{ .once = &.{96075 .each = .{ .once = &.{
94982 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96076 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
94983 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },96077 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
94984 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },96078 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94985 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96079 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
94986 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },96080 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96081 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
94987 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
94988 } },96083 } },
94989 }, .{96084 }, .{
94990 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },96085 .required_features = .{ .bmi2, null, null, null },
94991 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },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 },
94992 .patterns = &.{96088 .patterns = &.{
94993 .{ .src = .{ .to_mem, .none, .none } },96089 .{ .src = .{ .to_mem, .none, .none } },
94994 },96090 },
94995 .extra_temps = .{96091 .extra_temps = .{
94996 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96092 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
94997 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96093 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
94998 .unused,96094 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
94999 .unused,96095 .unused,
95000 .unused,96096 .unused,
95001 .unused,96097 .unused,
...@@ -95009,21 +96105,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95009,21 +96105,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95009 .clobbers = .{ .eflags = true },96105 .clobbers = .{ .eflags = true },
95010 .each = .{ .once = &.{96106 .each = .{ .once = &.{
95011 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96107 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95012 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },96108 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95013 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },96109 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },
95014 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96110 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
95015 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },96111 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95016 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96112 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95017 } },96113 } },
95018 }, .{96114 }, .{
95019 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },96115 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
95020 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },96116 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
95021 .patterns = &.{96117 .patterns = &.{
95022 .{ .src = .{ .to_mem, .none, .none } },96118 .{ .src = .{ .to_mem, .none, .none } },
95023 },96119 },
95024 .extra_temps = .{96120 .extra_temps = .{
95025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96121 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95026 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96122 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95027 .unused,96123 .unused,
95028 .unused,96124 .unused,
95029 .unused,96125 .unused,
...@@ -95039,19 +96135,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95039,19 +96135,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95039 .each = .{ .once = &.{96135 .each = .{ .once = &.{
95040 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96136 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95041 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },96137 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
95042 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96138 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },
95043 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },96139 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
96140 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96141 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95045 } },96142 } },
95046 }, .{96143 }, .{
95047 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },96144 .src_constraints = .{ .any_scalar_int, .any, .any },
95048 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },96145 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },
95049 .patterns = &.{96146 .patterns = &.{
95050 .{ .src = .{ .to_mem, .none, .none } },96147 .{ .src = .{ .to_mem, .none, .none } },
95051 },96148 },
95052 .extra_temps = .{96149 .extra_temps = .{
95053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96150 .{ .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,
95055 .unused,96154 .unused,
95056 .unused,96155 .unused,
95057 .unused,96156 .unused,
...@@ -95059,6 +96158,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95059,6 +96158,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95059 .unused,96158 .unused,
95060 .unused,96159 .unused,
95061 .unused,96160 .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,
95062 .unused,96189 .unused,
95063 .unused,96190 .unused,
95064 },96191 },
...@@ -95066,25 +96193,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95066,25 +96193,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95066 .clobbers = .{ .eflags = true },96193 .clobbers = .{ .eflags = true },
95067 .each = .{ .once = &.{96194 .each = .{ .once = &.{
95068 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96195 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95069 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },96196 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95070 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },96197 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95071 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },96198 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95072 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96199 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },
95073 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },96200 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96201 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96202 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96203 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95075 } },96204 } },
95076 }, .{96205 }, .{
95077 .required_features = .{ .bmi2, null, null, null },96206 .required_features = .{ .bmi2, null, null, null },
95078 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },96207 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95079 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },96208 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
95080 .patterns = &.{96209 .patterns = &.{
95081 .{ .src = .{ .to_mem, .none, .none } },96210 .{ .src = .{ .to_mem, .none, .none } },
95082 },96211 },
95083 .extra_temps = .{96212 .extra_temps = .{
95084 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96214 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95085 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },96215 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95086 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96216 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95087 .unused,
95088 .unused,96217 .unused,
95089 .unused,96218 .unused,
95090 .unused,96219 .unused,
...@@ -95097,23 +96226,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95097,23 +96226,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95097 .clobbers = .{ .eflags = true },96226 .clobbers = .{ .eflags = true },
95098 .each = .{ .once = &.{96227 .each = .{ .once = &.{
95099 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95100 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },96229 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95101 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },96230 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
95102 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },96231 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },
95103 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },96232 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
96233 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96234 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95104 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95105 } },96236 } },
95106 }, .{96237 }, .{
95107 .required_features = .{ .fast_imm16, null, null, null },96238 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95108 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },96239 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
95109 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
95110 .patterns = &.{96240 .patterns = &.{
95111 .{ .src = .{ .to_mem, .none, .none } },96241 .{ .src = .{ .to_mem, .none, .none } },
95112 },96242 },
95113 .extra_temps = .{96243 .extra_temps = .{
95114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96244 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95115 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95116 .unused,96246 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95117 .unused,96247 .unused,
95118 .unused,96248 .unused,
95119 .unused,96249 .unused,
...@@ -95127,26 +96257,248 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95127,26 +96257,248 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95127 .clobbers = .{ .eflags = true },96257 .clobbers = .{ .eflags = true },
95128 .each = .{ .once = &.{96258 .each = .{ .once = &.{
95129 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96259 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95130 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },96260 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95131 .{ ._, ._, .@"and", .tmp1w, .sa(.dst0, .add_umax), ._, ._ },96261 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },
95132 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96262 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },
95133 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },96263 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },
96264 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
96265 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
95134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95135 } },96267 } },
95136 }, .{96268 }, .{
95137 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },96269 .required_features = .{ .avx, null, null, null },
95138 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },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 },
95139 .patterns = &.{96456 .patterns = &.{
95140 .{ .src = .{ .to_mem, .none, .none } },96457 .{ .src = .{ .to_mem, .none, .none } },
95141 },96458 },
95142 .extra_temps = .{96459 .extra_temps = .{
95143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96460 .{ .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 } } },
95145 .unused,96466 .unused,
95146 .unused,96467 .unused,
95147 .unused,96468 .unused,
95148 .unused,96469 .unused,
95149 .unused,96470 .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,
95150 .unused,96502 .unused,
95151 .unused,96503 .unused,
95152 .unused,96504 .unused,
...@@ -95155,24 +96507,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95155,24 +96507,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95155 .dst_temps = .{ .mem, .unused },96507 .dst_temps = .{ .mem, .unused },
95156 .clobbers = .{ .eflags = true },96508 .clobbers = .{ .eflags = true },
95157 .each = .{ .once = &.{96509 .each = .{ .once = &.{
96510 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96511 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
95158 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96512 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95159 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },96513 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },
95160 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },96514 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },
95161 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },96515 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
95162 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95163 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95164 } },96517 } },
95165 }, .{96518 }, .{
95166 .src_constraints = .{ .any_scalar_int, .any, .any },96519 .required_features = .{ .avx, null, null, null },
95167 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .word, .is = 16 } }, .any },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 },
95168 .patterns = &.{96522 .patterns = &.{
95169 .{ .src = .{ .to_mem, .none, .none } },96523 .{ .src = .{ .to_mem, .none, .none } },
95170 },96524 },
95171 .extra_temps = .{96525 .extra_temps = .{
95172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95173 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },96527 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
95174 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },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,
95175 .unused,96536 .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 } } },
95176 .unused,96565 .unused,
95177 .unused,96566 .unused,
95178 .unused,96567 .unused,
...@@ -95184,27 +96573,64 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95184,27 +96573,64 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95184 .dst_temps = .{ .mem, .unused },96573 .dst_temps = .{ .mem, .unused },
95185 .clobbers = .{ .eflags = true },96574 .clobbers = .{ .eflags = true },
95186 .each = .{ .once = &.{96575 .each = .{ .once = &.{
96576 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96577 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
95187 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96578 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95188 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },96579 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },
95189 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },96580 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
95190 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },96581 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
95191 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95192 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95193 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95194 } },96583 } },
95195 }, .{96584 }, .{
95196 .src_constraints = .{ .any_scalar_signed_int, .any, .any },96585 .required_features = .{ .sse2, null, null, null },
95197 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },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 },
95198 .patterns = &.{96588 .patterns = &.{
95199 .{ .src = .{ .to_mem, .none, .none } },96589 .{ .src = .{ .to_mem, .none, .none } },
95200 },96590 },
95201 .extra_temps = .{96591 .extra_temps = .{
95202 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95203 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },96593 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
95204 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },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,
95205 .unused,96600 .unused,
95206 .unused,96601 .unused,
95207 .unused,96602 .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,
95208 .unused,96634 .unused,
95209 .unused,96635 .unused,
95210 .unused,96636 .unused,
...@@ -95214,28 +96640,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95214,28 +96640,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95214 .dst_temps = .{ .mem, .unused },96640 .dst_temps = .{ .mem, .unused },
95215 .clobbers = .{ .eflags = true },96641 .clobbers = .{ .eflags = true },
95216 .each = .{ .once = &.{96642 .each = .{ .once = &.{
96643 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96644 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
95217 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95218 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },96646 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
95219 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },96647 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
95220 .{ ._, ._l, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },96648 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
95221 .{ ._, ._r, .sa, .tmp2d, .uia(32, .dst0, .sub_bit_size), ._, ._ },96649 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
95222 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95223 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95224 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95225 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95226 } },96651 } },
95227 }, .{96652 }, .{
95228 .required_features = .{ .bmi2, null, null, null },96653 .required_features = .{ .sse, null, null, null },
95229 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },96654 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
95230 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },96655 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
95231 .patterns = &.{96656 .patterns = &.{
95232 .{ .src = .{ .to_mem, .none, .none } },96657 .{ .src = .{ .to_mem, .none, .none } },
95233 },96658 },
95234 .extra_temps = .{96659 .extra_temps = .{
95235 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95236 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },96661 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
95237 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },96662 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
95238 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96663 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },
95239 .unused,96664 .unused,
95240 .unused,96665 .unused,
95241 .unused,96666 .unused,
...@@ -95247,26 +96672,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95247,26 +96672,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95247 .dst_temps = .{ .mem, .unused },96672 .dst_temps = .{ .mem, .unused },
95248 .clobbers = .{ .eflags = true },96673 .clobbers = .{ .eflags = true },
95249 .each = .{ .once = &.{96674 .each = .{ .once = &.{
96675 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
96676 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
95250 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96677 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95251 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },96678 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
95252 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },96679 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
95253 .{ .@"0:", ._, .bzhi, .tmp3d, .memi(.src0d, .tmp1), .tmp2d, ._ },96680 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },
95254 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },96681 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
95255 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95256 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95258 } },96683 } },
95259 }, .{96684 }, .{
95260 .required_features = .{ .fast_imm16, null, null, null },96685 .required_features = .{ .@"64bit", null, null, null },
95261 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },96686 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95262 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },96687 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
95263 .patterns = &.{96688 .patterns = &.{
95264 .{ .src = .{ .to_mem, .none, .none } },96689 .{ .src = .{ .to_mem, .none, .none } },
95265 },96690 },
95266 .extra_temps = .{96691 .extra_temps = .{
95267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96692 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },96693 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95269 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96694 .unused,
95270 .unused,96695 .unused,
95271 .unused,96696 .unused,
95272 .unused,96697 .unused,
...@@ -95280,24 +96705,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95280,24 +96705,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95280 .clobbers = .{ .eflags = true },96705 .clobbers = .{ .eflags = true },
95281 .each = .{ .once = &.{96706 .each = .{ .once = &.{
95282 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96707 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95283 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },96708 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
95284 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },96709 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
95285 .{ ._, ._, .@"and", .tmp2w, .sa(.dst0, .add_umax), ._, ._ },96710 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95286 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },
95287 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95288 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96711 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95290 } },96712 } },
95291 }, .{96713 }, .{
95292 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },96714 .required_features = .{ .@"64bit", null, null, null },
95293 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },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 },
95294 .patterns = &.{96717 .patterns = &.{
95295 .{ .src = .{ .to_mem, .none, .none } },96718 .{ .src = .{ .to_mem, .none, .none } },
95296 },96719 },
95297 .extra_temps = .{96720 .extra_temps = .{
95298 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96721 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95299 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },96722 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
95300 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },96723 .unused,
95301 .unused,96724 .unused,
95302 .unused,96725 .unused,
95303 .unused,96726 .unused,
...@@ -95311,36 +96734,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95311,36 +96734,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95311 .clobbers = .{ .eflags = true },96734 .clobbers = .{ .eflags = true },
95312 .each = .{ .once = &.{96735 .each = .{ .once = &.{
95313 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96736 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95314 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },96737 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
95315 .{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp1), ._, ._ },96738 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
95316 .{ ._, ._, .@"and", .tmp2d, .sa(.dst0, .add_umax), ._, ._ },96739 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
95317 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp2w, ._, ._ },96740 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
95318 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },96741 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95319 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
95320 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96742 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95321 } },96743 } },
95322 }, .{96744 }, .{
95323 .required_features = .{ .avx, null, null, null },96745 .required_features = .{ .@"64bit", .bmi2, null, null },
95324 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },96746 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95325 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },96747 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95326 .patterns = &.{96748 .patterns = &.{
95327 .{ .src = .{ .to_sse, .none, .none } },96749 .{ .src = .{ .to_mem, .none, .none } },
95328 },96750 },
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 },
95330 .each = .{ .once = &.{96766 .each = .{ .once = &.{
95331 .{ ._, .vp_d, .sll, .dst0x, .src0x, .uia(32, .dst0, .sub_bit_size), ._ },96767 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95332 .{ ._, .vp_d, .sra, .dst0x, .dst0x, .uia(32, .dst0, .sub_bit_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", ._, ._, ._ },
95333 } },96773 } },
95334 }, .{96774 }, .{
95335 .required_features = .{ .avx, null, null, null },96775 .required_features = .{ .@"64bit", null, null, null },
95336 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },96776 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
95337 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },96777 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95338 .patterns = &.{96778 .patterns = &.{
95339 .{ .src = .{ .to_sse, .none, .none } },96779 .{ .src = .{ .to_mem, .none, .none } },
95340 },96780 },
95341 .extra_temps = .{96781 .extra_temps = .{
95342 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },96782 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95343 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },96783 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95344 .unused,96784 .unused,
95345 .unused,96785 .unused,
95346 .unused,96786 .unused,
...@@ -95351,33 +96791,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95351,33 +96791,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95351 .unused,96791 .unused,
95352 .unused,96792 .unused,
95353 },96793 },
95354 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },96794 .dst_temps = .{ .mem, .unused },
96795 .clobbers = .{ .eflags = true },
95355 .each = .{ .once = &.{96796 .each = .{ .once = &.{
95356 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },96797 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95357 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },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", ._, ._, ._ },
95358 } },96803 } },
95359 }, .{96804 }, .{
95360 .required_features = .{ .sse2, null, null, null },96805 .required_features = .{ .@"64bit", null, null, null },
95361 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },96806 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95362 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },96807 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
95363 .patterns = &.{96808 .patterns = &.{
95364 .{ .src = .{ .to_mut_sse, .none, .none } },96809 .{ .src = .{ .to_mem, .none, .none } },
95365 },96810 },
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 },
95367 .each = .{ .once = &.{96826 .each = .{ .once = &.{
95368 .{ ._, .p_d, .sll, .dst0x, .uia(32, .dst0, .sub_bit_size), ._, ._ },96827 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95369 .{ ._, .p_d, .sra, .dst0x, .uia(32, .dst0, .sub_bit_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", ._, ._, ._ },
95370 } },96832 } },
95371 }, .{96833 }, .{
95372 .required_features = .{ .sse2, null, null, null },96834 .required_features = .{ .@"64bit", null, null, null },
95373 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },96835 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95374 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },96836 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
95375 .patterns = &.{96837 .patterns = &.{
95376 .{ .src = .{ .to_mut_sse, .none, .none } },96838 .{ .src = .{ .to_mem, .none, .none } },
95377 },96839 },
95378 .extra_temps = .{96840 .extra_temps = .{
95379 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },96841 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95380 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },96842 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
95381 .unused,96843 .unused,
95382 .unused,96844 .unused,
95383 .unused,96845 .unused,
...@@ -95388,22 +96850,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95388,22 +96850,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95388 .unused,96850 .unused,
95389 .unused,96851 .unused,
95390 },96852 },
95391 .dst_temps = .{ .{ .ref = .src0 }, .unused },96853 .dst_temps = .{ .mem, .unused },
96854 .clobbers = .{ .eflags = true },
95392 .each = .{ .once = &.{96855 .each = .{ .once = &.{
95393 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },96856 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95394 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
95395 } },96863 } },
95396 }, .{96864 }, .{
95397 .required_features = .{ .sse, null, null, null },96865 .required_features = .{ .@"64bit", .bmi2, null, null },
95398 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },96866 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95399 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },96867 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95400 .patterns = &.{96868 .patterns = &.{
95401 .{ .src = .{ .to_mut_sse, .none, .none } },96869 .{ .src = .{ .to_mem, .none, .none } },
95402 },96870 },
95403 .extra_temps = .{96871 .extra_temps = .{
95404 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },96872 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95405 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },96873 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95406 .unused,96874 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95407 .unused,96875 .unused,
95408 .unused,96876 .unused,
95409 .unused,96877 .unused,
...@@ -95413,33 +96881,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95413,33 +96881,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95413 .unused,96881 .unused,
95414 .unused,96882 .unused,
95415 },96883 },
95416 .dst_temps = .{ .{ .ref = .src0 }, .unused },96884 .dst_temps = .{ .mem, .unused },
95417 .each = .{ .once = &.{96885 .clobbers = .{ .eflags = true },
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 },
95429 .each = .{ .once = &.{96886 .each = .{ .once = &.{
95430 .{ ._, .vp_d, .sll, .dst0y, .src0y, .uia(32, .dst0, .sub_bit_size), ._ },96887 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95431 .{ ._, .vp_d, .sra, .dst0y, .dst0y, .uia(32, .dst0, .sub_bit_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", ._, ._, ._ },
95432 } },96893 } },
95433 }, .{96894 }, .{
95434 .required_features = .{ .avx2, null, null, null },96895 .required_features = .{ .@"64bit", null, null, null },
95435 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },96896 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
95436 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },96897 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95437 .patterns = &.{96898 .patterns = &.{
95438 .{ .src = .{ .to_sse, .none, .none } },96899 .{ .src = .{ .to_mem, .none, .none } },
95439 },96900 },
95440 .extra_temps = .{96901 .extra_temps = .{
95441 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },96902 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95442 .{ .kind = .{ .umax_mem = .{ .ref = .dst0 } } },96903 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95443 .unused,96904 .unused,
95444 .unused,96905 .unused,
95445 .unused,96906 .unused,
...@@ -95450,21 +96911,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95450,21 +96911,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95450 .unused,96911 .unused,
95451 .unused,96912 .unused,
95452 },96913 },
95453 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },96914 .dst_temps = .{ .mem, .unused },
96915 .clobbers = .{ .eflags = true },
95454 .each = .{ .once = &.{96916 .each = .{ .once = &.{
95455 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },96917 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95456 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },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", ._, ._, ._ },
95457 } },96923 } },
95458 }, .{96924 }, .{
95459 .required_features = .{ .avx2, null, null, null },96925 .required_features = .{ .@"64bit", null, null, null },
95460 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },96926 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
95461 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any },96927 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
95462 .patterns = &.{96928 .patterns = &.{
95463 .{ .src = .{ .to_mem, .none, .none } },96929 .{ .src = .{ .to_mem, .none, .none } },
95464 },96930 },
95465 .extra_temps = .{96931 .extra_temps = .{
95466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96932 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95467 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },96933 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95468 .unused,96934 .unused,
95469 .unused,96935 .unused,
95470 .unused,96936 .unused,
...@@ -95479,25 +96945,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95479,25 +96945,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95479 .clobbers = .{ .eflags = true },96945 .clobbers = .{ .eflags = true },
95480 .each = .{ .once = &.{96946 .each = .{ .once = &.{
95481 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96947 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95482 .{ .@"0:", .v_dqa, .mov, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },96948 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95483 .{ ._, .vp_d, .sll, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },96949 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
95484 .{ ._, .vp_d, .sra, .tmp1y, .tmp1y, .uia(32, .dst0, .sub_bit_size), ._ },96950 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95485 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
95486 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
95487 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96951 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95488 } },96952 } },
95489 }, .{96953 }, .{
95490 .required_features = .{ .avx2, null, null, null },96954 .required_features = .{ .@"64bit", null, null, null },
95491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any, .any },96955 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },
95492 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .dword } }, .any },96956 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
95493 .patterns = &.{96957 .patterns = &.{
95494 .{ .src = .{ .to_mem, .none, .none } },96958 .{ .src = .{ .to_mem, .none, .none } },
95495 },96959 },
95496 .extra_temps = .{96960 .extra_temps = .{
95497 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95498 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },96962 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
95499 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },96963 .unused,
95500 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },96964 .unused,
95501 .unused,96965 .unused,
95502 .unused,96966 .unused,
95503 .unused,96967 .unused,
...@@ -95509,25 +96973,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95509,25 +96973,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95509 .dst_temps = .{ .mem, .unused },96973 .dst_temps = .{ .mem, .unused },
95510 .clobbers = .{ .eflags = true },96974 .clobbers = .{ .eflags = true },
95511 .each = .{ .once = &.{96975 .each = .{ .once = &.{
95512 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95513 .{ ._, .v_dqa, .mov, .tmp1y, .lea(.tmp0y), ._, ._ },
95514 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },96976 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95515 .{ .@"0:", .vp_, .@"and", .tmp2y, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._ },96977 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95516 .{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp2y, ._, ._ },96978 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
95517 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },96979 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
96980 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96981 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },96982 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95519 } },96983 } },
95520 }, .{96984 }, .{
95521 .required_features = .{ .avx, null, null, null },96985 .required_features = .{ .@"64bit", .bmi2, null, null },
95522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },96986 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
95523 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },96987 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95524 .patterns = &.{96988 .patterns = &.{
95525 .{ .src = .{ .to_mem, .none, .none } },96989 .{ .src = .{ .to_mem, .none, .none } },
95526 },96990 },
95527 .extra_temps = .{96991 .extra_temps = .{
95528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },96992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95529 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },96993 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95530 .unused,96994 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95531 .unused,96995 .unused,
95532 .unused,96996 .unused,
95533 .unused,96997 .unused,
...@@ -95541,25 +97005,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95541,25 +97005,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95541 .clobbers = .{ .eflags = true },97005 .clobbers = .{ .eflags = true },
95542 .each = .{ .once = &.{97006 .each = .{ .once = &.{
95543 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97007 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95544 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },97008 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
95545 .{ ._, .vp_d, .sll, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },97009 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },
95546 .{ ._, .vp_d, .sra, .tmp1x, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._ },97010 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
95547 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },97011 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95548 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
95549 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95550 } },97013 } },
95551 }, .{97014 }, .{
95552 .required_features = .{ .avx, null, null, null },97015 .required_features = .{ .@"64bit", null, null, null },
95553 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },97016 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },
95554 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },97017 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95555 .patterns = &.{97018 .patterns = &.{
95556 .{ .src = .{ .to_mem, .none, .none } },97019 .{ .src = .{ .to_mem, .none, .none } },
95557 },97020 },
95558 .extra_temps = .{97021 .extra_temps = .{
95559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97022 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95560 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },97023 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95561 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },97024 .unused,
95562 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },97025 .unused,
95563 .unused,97026 .unused,
95564 .unused,97027 .unused,
95565 .unused,97028 .unused,
...@@ -95571,25 +97034,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95571,25 +97034,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95571 .dst_temps = .{ .mem, .unused },97034 .dst_temps = .{ .mem, .unused },
95572 .clobbers = .{ .eflags = true },97035 .clobbers = .{ .eflags = true },
95573 .each = .{ .once = &.{97036 .each = .{ .once = &.{
95574 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95575 .{ ._, .v_dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
95576 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97037 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95577 .{ .@"0:", .vp_, .@"and", .tmp2x, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._ },97038 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },
95578 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },97039 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
95579 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },97040 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
97041 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97042 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95581 } },97043 } },
95582 }, .{97044 }, .{
95583 .required_features = .{ .sse2, null, null, null },97045 .required_features = .{ .@"64bit", null, null, null },
95584 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },97046 .src_constraints = .{ .any_scalar_int, .any, .any },
95585 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },97047 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
95586 .patterns = &.{97048 .patterns = &.{
95587 .{ .src = .{ .to_mem, .none, .none } },97049 .{ .src = .{ .to_mem, .none, .none } },
95588 },97050 },
95589 .extra_temps = .{97051 .extra_temps = .{
95590 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95591 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },97053 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95592 .unused,97054 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95593 .unused,97055 .unused,
95594 .unused,97056 .unused,
95595 .unused,97057 .unused,
...@@ -95603,25 +97065,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95603,25 +97065,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95603 .clobbers = .{ .eflags = true },97065 .clobbers = .{ .eflags = true },
95604 .each = .{ .once = &.{97066 .each = .{ .once = &.{
95605 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97067 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95606 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },97068 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95607 .{ ._, .p_d, .sll, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },97069 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
95608 .{ ._, .p_d, .sra, .tmp1x, .uia(32, .dst0, .sub_bit_size), ._, ._ },97070 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
95609 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },97071 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
95610 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },97072 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95611 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97073 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95612 } },97074 } },
95613 }, .{97075 }, .{
95614 .required_features = .{ .sse2, null, null, null },97076 .required_features = .{ .@"64bit", null, null, null },
95615 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },97077 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
95616 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },97078 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
95617 .patterns = &.{97079 .patterns = &.{
95618 .{ .src = .{ .to_mem, .none, .none } },97080 .{ .src = .{ .to_mem, .none, .none } },
95619 },97081 },
95620 .extra_temps = .{97082 .extra_temps = .{
95621 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95622 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },97084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95623 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },97085 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
95624 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },97086 .unused,
95625 .unused,97087 .unused,
95626 .unused,97088 .unused,
95627 .unused,97089 .unused,
...@@ -95633,27 +97095,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95633,27 +97095,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95633 .dst_temps = .{ .mem, .unused },97095 .dst_temps = .{ .mem, .unused },
95634 .clobbers = .{ .eflags = true },97096 .clobbers = .{ .eflags = true },
95635 .each = .{ .once = &.{97097 .each = .{ .once = &.{
95636 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95637 .{ ._, ._dqa, .mov, .tmp1x, .lea(.tmp0x), ._, ._ },
95638 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97098 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95639 .{ .@"0:", ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },97099 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95640 .{ ._, .p_, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },97100 .{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp1), ._, ._ },
95641 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },97101 .{ ._, ._l, .sa, .tmp2q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
95642 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },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), ._, ._ },
95643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97106 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95644 } },97107 } },
95645 }, .{97108 }, .{
95646 .required_features = .{ .sse, null, null, null },97109 .required_features = .{ .@"64bit", .bmi2, null, null },
95647 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any, .any },97110 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95648 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .dword } }, .any },97111 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95649 .patterns = &.{97112 .patterns = &.{
95650 .{ .src = .{ .to_mem, .none, .none } },97113 .{ .src = .{ .to_mem, .none, .none } },
95651 },97114 },
95652 .extra_temps = .{97115 .extra_temps = .{
95653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95654 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },97117 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95655 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },97118 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95656 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },97119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95657 .unused,97120 .unused,
95658 .unused,97121 .unused,
95659 .unused,97122 .unused,
...@@ -95665,25 +97128,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95665,25 +97128,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95665 .dst_temps = .{ .mem, .unused },97128 .dst_temps = .{ .mem, .unused },
95666 .clobbers = .{ .eflags = true },97129 .clobbers = .{ .eflags = true },
95667 .each = .{ .once = &.{97130 .each = .{ .once = &.{
95668 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
95669 .{ ._, ._ps, .mova, .tmp1x, .lea(.tmp0x), ._, ._ },
95670 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97131 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95671 .{ .@"0:", ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },97132 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95672 .{ ._, ._ps, .@"and", .tmp2x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },97133 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_bit_size), ._, ._ },
95673 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp2x, ._, ._ },97134 .{ .@"0:", ._, .bzhi, .tmp3q, .memi(.src0q, .tmp1), .tmp2q, ._ },
95674 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },97135 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
97136 .{ ._, ._, .lea, .tmp1d, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
97137 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
95675 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97138 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95676 } },97139 } },
95677 }, .{97140 }, .{
95678 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },97141 .required_features = .{ .@"64bit", null, null, null },
95679 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },97142 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97143 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
95680 .patterns = &.{97144 .patterns = &.{
95681 .{ .src = .{ .to_mem, .none, .none } },97145 .{ .src = .{ .to_mem, .none, .none } },
95682 },97146 },
95683 .extra_temps = .{97147 .extra_temps = .{
95684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97148 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95685 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97149 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95686 .unused,97150 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
95687 .unused,97151 .unused,
95688 .unused,97152 .unused,
95689 .unused,97153 .unused,
...@@ -95697,22 +97161,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95697,22 +97161,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95697 .clobbers = .{ .eflags = true },97161 .clobbers = .{ .eflags = true },
95698 .each = .{ .once = &.{97162 .each = .{ .once = &.{
95699 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97163 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
95700 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },97164 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
95701 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97165 .{ .@"0:", ._, .mov, .tmp2q, .ua(.dst0, .add_umax), ._, ._ },
95702 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
95703 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97170 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
95704 } },97171 } },
95705 }, .{97172 }, .{
95706 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },97173 .required_features = .{ .@"64bit", .slow_incdec, null, null },
95707 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },97174 .src_constraints = .{ .any_scalar_int, .any, .any },
97175 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
95708 .patterns = &.{97176 .patterns = &.{
95709 .{ .src = .{ .to_mem, .none, .none } },97177 .{ .src = .{ .to_mem, .none, .none } },
95710 },97178 },
95711 .extra_temps = .{97179 .extra_temps = .{
95712 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97180 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95713 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },97181 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95714 .unused,97182 .{ .type = .usize, .kind = .{ .reg = .rdi } },
95715 .unused,97183 .{ .type = .u32, .kind = .{ .reg = .ecx } },
95716 .unused,97184 .unused,
95717 .unused,97185 .unused,
95718 .unused,97186 .unused,
...@@ -95724,26 +97192,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95724,26 +97192,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95724 .dst_temps = .{ .mem, .unused },97192 .dst_temps = .{ .mem, .unused },
95725 .clobbers = .{ .eflags = true },97193 .clobbers = .{ .eflags = true },
95726 .each = .{ .once = &.{97194 .each = .{ .once = &.{
95727 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97195 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95728 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },97196 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95729 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97197 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95730 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97198 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
95731 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97199 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95732 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97200 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
95733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97201 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97202 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
95734 } },97203 } },
95735 }, .{97204 }, .{
95736 .required_features = .{ .bmi2, null, null, null },97205 .required_features = .{ .@"64bit", null, null, null },
95737 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },97206 .src_constraints = .{ .any_scalar_int, .any, .any },
95738 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97207 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
95739 .patterns = &.{97208 .patterns = &.{
95740 .{ .src = .{ .to_mem, .none, .none } },97209 .{ .src = .{ .to_mem, .none, .none } },
95741 },97210 },
95742 .extra_temps = .{97211 .extra_temps = .{
95743 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95744 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95745 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97212 .{ .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 } },
95747 .unused,97216 .unused,
95748 .unused,97217 .unused,
95749 .unused,97218 .unused,
...@@ -95755,24 +97224,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95755,24 +97224,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95755 .dst_temps = .{ .mem, .unused },97224 .dst_temps = .{ .mem, .unused },
95756 .clobbers = .{ .eflags = true },97225 .clobbers = .{ .eflags = true },
95757 .each = .{ .once = &.{97226 .each = .{ .once = &.{
95758 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97227 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95759 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },97228 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95760 .{ .@"0:", ._, .bzhi, .tmp2d, .memia(.src0d, .tmp0, .add_unaligned_size), .tmp1d, ._ },97229 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95761 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },97230 .{ .@"0:", ._, .mov, .tmp3d, .sa(.dst0, .add_elem_size_div_8), ._, ._ },
95762 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97231 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95763 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97232 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97233 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97234 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
95764 } },97235 } },
95765 }, .{97236 }, .{
95766 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },97237 .required_features = .{ .@"64bit", .slow_incdec, null, null },
95767 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97238 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97239 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
95768 .patterns = &.{97240 .patterns = &.{
95769 .{ .src = .{ .to_mem, .none, .none } },97241 .{ .src = .{ .to_mem, .none, .none } },
95770 },97242 },
95771 .extra_temps = .{97243 .extra_temps = .{
95772 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97244 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95774 .unused,97245 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95775 .unused,97246 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97247 .{ .type = .u32, .kind = .{ .reg = .ecx } },
95776 .unused,97248 .unused,
95777 .unused,97249 .unused,
95778 .unused,97250 .unused,
...@@ -95784,24 +97256,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95784,24 +97256,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95784 .dst_temps = .{ .mem, .unused },97256 .dst_temps = .{ .mem, .unused },
95785 .clobbers = .{ .eflags = true },97257 .clobbers = .{ .eflags = true },
95786 .each = .{ .once = &.{97258 .each = .{ .once = &.{
95787 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97259 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95788 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },97260 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95789 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },97261 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95790 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97262 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
95791 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97263 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95792 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95793 } },97272 } },
95794 }, .{97273 }, .{
95795 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },97274 .required_features = .{ .@"64bit", null, null, null },
95796 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },97275 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97276 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
95797 .patterns = &.{97277 .patterns = &.{
95798 .{ .src = .{ .to_mem, .none, .none } },97278 .{ .src = .{ .to_mem, .none, .none } },
95799 },97279 },
95800 .extra_temps = .{97280 .extra_temps = .{
95801 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95802 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97281 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95803 .unused,97282 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95804 .unused,97283 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97284 .{ .type = .u32, .kind = .{ .reg = .ecx } },
95805 .unused,97285 .unused,
95806 .unused,97286 .unused,
95807 .unused,97287 .unused,
...@@ -95813,23 +97293,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95813,23 +97293,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95813 .dst_temps = .{ .mem, .unused },97293 .dst_temps = .{ .mem, .unused },
95814 .clobbers = .{ .eflags = true },97294 .clobbers = .{ .eflags = true },
95815 .each = .{ .once = &.{97295 .each = .{ .once = &.{
95816 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97296 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95817 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },97297 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95818 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97298 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95819 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97299 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
95820 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95821 } },97309 } },
95822 }, .{97310 }, .{
95823 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },97311 .required_features = .{ .@"64bit", .slow_incdec, null, null },
95824 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },97312 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97313 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
95825 .patterns = &.{97314 .patterns = &.{
95826 .{ .src = .{ .to_mem, .none, .none } },97315 .{ .src = .{ .to_mem, .none, .none } },
95827 },97316 },
95828 .extra_temps = .{97317 .extra_temps = .{
95829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97318 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95830 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },97319 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95831 .unused,97320 .{ .type = .usize, .kind = .{ .reg = .rdi } },
95832 .unused,97321 .{ .type = .u32, .kind = .{ .reg = .ecx } },
95833 .unused,97322 .unused,
95834 .unused,97323 .unused,
95835 .unused,97324 .unused,
...@@ -95841,26 +97330,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95841,26 +97330,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95841 .dst_temps = .{ .mem, .unused },97330 .dst_temps = .{ .mem, .unused },
95842 .clobbers = .{ .eflags = true },97331 .clobbers = .{ .eflags = true },
95843 .each = .{ .once = &.{97332 .each = .{ .once = &.{
95844 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97333 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95845 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },97334 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95846 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97335 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95847 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97336 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
95848 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97337 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95849 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97338 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
95850 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95851 } },97348 } },
95852 }, .{97349 }, .{
95853 .required_features = .{ .bmi2, null, null, null },97350 .required_features = .{ .@"64bit", null, null, null },
95854 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },97351 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
95855 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97352 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
95856 .patterns = &.{97353 .patterns = &.{
95857 .{ .src = .{ .to_mem, .none, .none } },97354 .{ .src = .{ .to_mem, .none, .none } },
95858 },97355 },
95859 .extra_temps = .{97356 .extra_temps = .{
95860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95861 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95862 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97357 .{ .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 } },
95864 .unused,97361 .unused,
95865 .unused,97362 .unused,
95866 .unused,97363 .unused,
...@@ -95872,25 +97369,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95872,25 +97369,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95872 .dst_temps = .{ .mem, .unused },97369 .dst_temps = .{ .mem, .unused },
95873 .clobbers = .{ .eflags = true },97370 .clobbers = .{ .eflags = true },
95874 .each = .{ .once = &.{97371 .each = .{ .once = &.{
95875 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97372 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95876 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },97373 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95877 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._ },97374 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95878 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },97375 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
95879 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97376 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95881 } },97387 } },
95882 }, .{97388 }, .{
95883 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },97389 .required_features = .{ .@"64bit", .slow_incdec, null, null },
95884 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97390 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97391 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
95885 .patterns = &.{97392 .patterns = &.{
95886 .{ .src = .{ .to_mem, .none, .none } },97393 .{ .src = .{ .to_mem, .none, .none } },
95887 },97394 },
95888 .extra_temps = .{97395 .extra_temps = .{
95889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95890 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97396 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95891 .unused,97397 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95892 .unused,97398 .{ .type = .usize, .kind = .{ .reg = .rdi } },
95893 .unused,97399 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97400 .{ .type = .u64, .kind = .{ .reg = .rax } },
95894 .unused,97401 .unused,
95895 .unused,97402 .unused,
95896 .unused,97403 .unused,
...@@ -95901,25 +97408,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95901,25 +97408,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95901 .dst_temps = .{ .mem, .unused },97408 .dst_temps = .{ .mem, .unused },
95902 .clobbers = .{ .eflags = true },97409 .clobbers = .{ .eflags = true },
95903 .each = .{ .once = &.{97410 .each = .{ .once = &.{
95904 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97411 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95905 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },97412 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95906 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },97413 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95907 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97414 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
95908 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97415 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95910 } },97423 } },
95911 }, .{97424 }, .{
95912 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },97425 .required_features = .{ .@"64bit", null, null, null },
95913 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },97426 .src_constraints = .{ .any_scalar_signed_int, .any, .any },
97427 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },
95914 .patterns = &.{97428 .patterns = &.{
95915 .{ .src = .{ .to_mem, .none, .none } },97429 .{ .src = .{ .to_mem, .none, .none } },
95916 },97430 },
95917 .extra_temps = .{97431 .extra_temps = .{
95918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95919 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97432 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95920 .unused,97433 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95921 .unused,97434 .{ .type = .usize, .kind = .{ .reg = .rdi } },
95922 .unused,97435 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97436 .{ .type = .u64, .kind = .{ .reg = .rax } },
95923 .unused,97437 .unused,
95924 .unused,97438 .unused,
95925 .unused,97439 .unused,
...@@ -95930,24 +97444,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95930,24 +97444,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95930 .dst_temps = .{ .mem, .unused },97444 .dst_temps = .{ .mem, .unused },
95931 .clobbers = .{ .eflags = true },97445 .clobbers = .{ .eflags = true },
95932 .each = .{ .once = &.{97446 .each = .{ .once = &.{
95933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97447 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95934 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },97448 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95935 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97449 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95936 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97450 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
95937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95938 } },97459 } },
95939 }, .{97460 }, .{
95940 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },97461 .required_features = .{ .@"64bit", .slow_incdec, null, null },
95941 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },97462 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97463 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
95942 .patterns = &.{97464 .patterns = &.{
95943 .{ .src = .{ .to_mem, .none, .none } },97465 .{ .src = .{ .to_mem, .none, .none } },
95944 },97466 },
95945 .extra_temps = .{97467 .extra_temps = .{
95946 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95947 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },97469 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95948 .unused,97470 .{ .type = .usize, .kind = .{ .reg = .rdi } },
95949 .unused,97471 .{ .type = .u64, .kind = .{ .reg = .rax } },
95950 .unused,97472 .{ .type = .u32, .kind = .{ .reg = .ecx } },
95951 .unused,97473 .unused,
95952 .unused,97474 .unused,
95953 .unused,97475 .unused,
...@@ -95958,27 +97480,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95958,27 +97480,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95958 .dst_temps = .{ .mem, .unused },97480 .dst_temps = .{ .mem, .unused },
95959 .clobbers = .{ .eflags = true },97481 .clobbers = .{ .eflags = true },
95960 .each = .{ .once = &.{97482 .each = .{ .once = &.{
95961 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97483 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95962 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },97484 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95963 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97485 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95964 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97486 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
95965 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97487 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
95966 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97488 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
95967 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },97489 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97490 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97491 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97492 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
95968 } },97493 } },
95969 }, .{97494 }, .{
95970 .required_features = .{ .bmi2, null, null, null },97495 .required_features = .{ .@"64bit", null, null, null },
95971 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },97496 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
95972 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97497 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
95973 .patterns = &.{97498 .patterns = &.{
95974 .{ .src = .{ .to_mem, .none, .none } },97499 .{ .src = .{ .to_mem, .none, .none } },
95975 },97500 },
95976 .extra_temps = .{97501 .extra_temps = .{
95977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
95978 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
95979 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97502 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
95980 .unused,97503 .{ .type = .usize, .kind = .{ .reg = .rsi } },
95981 .unused,97504 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97505 .{ .type = .u64, .kind = .{ .reg = .rax } },
97506 .{ .type = .u32, .kind = .{ .reg = .ecx } },
95982 .unused,97507 .unused,
95983 .unused,97508 .unused,
95984 .unused,97509 .unused,
...@@ -95989,26 +97514,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -95989,26 +97514,68 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
95989 .dst_temps = .{ .mem, .unused },97514 .dst_temps = .{ .mem, .unused },
95990 .clobbers = .{ .eflags = true },97515 .clobbers = .{ .eflags = true },
95991 .each = .{ .once = &.{97516 .each = .{ .once = &.{
95992 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97517 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
95993 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },97518 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
95994 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), .tmp1d, ._ },97519 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
95995 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },97520 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
95996 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97521 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
95997 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
95998 } },97527 } },
95999 }, .{97528 }, .{
96000 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },97529 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
96001 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97530 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97531 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96002 .patterns = &.{97532 .patterns = &.{
96003 .{ .src = .{ .to_mem, .none, .none } },97533 .{ .src = .{ .to_mem, .none, .none } },
96004 },97534 },
96005 .extra_temps = .{97535 .extra_temps = .{
96006 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96007 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97536 .{ .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,
96008 .unused,97543 .unused,
96009 .unused,97544 .unused,
96010 .unused,97545 .unused,
96011 .unused,97546 .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,
96012 .unused,97579 .unused,
96013 .unused,97580 .unused,
96014 .unused,97581 .unused,
...@@ -96018,27 +97585,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96018,27 +97585,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96018 .dst_temps = .{ .mem, .unused },97585 .dst_temps = .{ .mem, .unused },
96019 .clobbers = .{ .eflags = true },97586 .clobbers = .{ .eflags = true },
96020 .each = .{ .once = &.{97587 .each = .{ .once = &.{
96021 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97588 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
96022 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },97589 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
96023 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },97590 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
96024 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97591 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
96025 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97592 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
96026 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
96027 } },97601 } },
96028 }, .{97602 }, .{
96029 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },97603 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
96030 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },97604 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97605 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
96031 .patterns = &.{97606 .patterns = &.{
96032 .{ .src = .{ .to_mem, .none, .none } },97607 .{ .src = .{ .to_mem, .none, .none } },
96033 },97608 },
96034 .extra_temps = .{97609 .extra_temps = .{
96035 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96036 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97610 .{ .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 } },
96037 .unused,97616 .unused,
96038 .unused,97617 .unused,
96039 .unused,97618 .unused,
96040 .unused,97619 .unused,
96041 .unused,97620 .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,
96042 .unused,97652 .unused,
96043 .unused,97653 .unused,
96044 .unused,97654 .unused,
...@@ -96047,23 +97657,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96047,23 +97657,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96047 .dst_temps = .{ .mem, .unused },97657 .dst_temps = .{ .mem, .unused },
96048 .clobbers = .{ .eflags = true },97658 .clobbers = .{ .eflags = true },
96049 .each = .{ .once = &.{97659 .each = .{ .once = &.{
96050 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97660 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
96051 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },97661 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
96052 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97662 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
96053 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97663 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },
96054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
96055 } },97671 } },
96056 }, .{97672 }, .{
96057 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },97673 .required_features = .{ .@"64bit", .slow_incdec, null, null },
96058 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },97674 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97675 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96059 .patterns = &.{97676 .patterns = &.{
96060 .{ .src = .{ .to_mem, .none, .none } },97677 .{ .src = .{ .to_mem, .none, .none } },
96061 },97678 },
96062 .extra_temps = .{97679 .extra_temps = .{
96063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },97680 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96064 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },97681 .{ .type = .usize, .kind = .{ .reg = .rsi } },
96065 .unused,97682 .{ .type = .usize, .kind = .{ .reg = .rdi } },
96066 .unused,97683 .{ .type = .u32, .kind = .{ .reg = .ecx } },
96067 .unused,97684 .unused,
96068 .unused,97685 .unused,
96069 .unused,97686 .unused,
...@@ -96075,26 +97692,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96075,26 +97692,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96075 .dst_temps = .{ .mem, .unused },97692 .dst_temps = .{ .mem, .unused },
96076 .clobbers = .{ .eflags = true },97693 .clobbers = .{ .eflags = true },
96077 .each = .{ .once = &.{97694 .each = .{ .once = &.{
96078 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97695 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
96079 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },97696 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
96080 .{ ._, ._l, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97697 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
96081 .{ ._, ._r, .sa, .tmp1d, .uia(32, .dst0, .sub_bit_size), ._, ._ },97698 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
96082 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97699 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
96083 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97700 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },
96084 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
96085 } },97708 } },
96086 }, .{97709 }, .{
96087 .required_features = .{ .bmi2, null, null, null },97710 .required_features = .{ .@"64bit", null, null, null },
96088 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },97711 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
96089 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97712 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96090 .patterns = &.{97713 .patterns = &.{
96091 .{ .src = .{ .to_mem, .none, .none } },97714 .{ .src = .{ .to_mem, .none, .none } },
96092 },97715 },
96093 .extra_temps = .{97716 .extra_temps = .{
96094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96095 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
96096 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97717 .{ .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 } },
96098 .unused,97721 .unused,
96099 .unused,97722 .unused,
96100 .unused,97723 .unused,
...@@ -96106,25 +97729,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96106,25 +97729,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96106 .dst_temps = .{ .mem, .unused },97729 .dst_temps = .{ .mem, .unused },
96107 .clobbers = .{ .eflags = true },97730 .clobbers = .{ .eflags = true },
96108 .each = .{ .once = &.{97731 .each = .{ .once = &.{
96109 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97732 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
96110 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },97733 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
96111 .{ .@"0:", ._, .bzhi, .tmp2d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), .tmp1d, ._ },97734 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
96112 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp2d, ._, ._ },97735 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },
96113 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97736 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
96114 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
96115 } },97745 } },
96116 }, .{97746 }, .{
96117 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },97747 .required_features = .{ .@"64bit", .slow_incdec, null, null },
96118 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },97748 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97749 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
96119 .patterns = &.{97750 .patterns = &.{
96120 .{ .src = .{ .to_mem, .none, .none } },97751 .{ .src = .{ .to_mem, .none, .none } },
96121 },97752 },
96122 .extra_temps = .{97753 .extra_temps = .{
96123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96124 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97754 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96125 .unused,97755 .{ .type = .usize, .kind = .{ .reg = .rsi } },
96126 .unused,97756 .{ .type = .usize, .kind = .{ .reg = .rdi } },
96127 .unused,97757 .{ .type = .u64, .kind = .{ .reg = .rax } },
97758 .{ .type = .u32, .kind = .{ .reg = .ecx } },
96128 .unused,97759 .unused,
96129 .unused,97760 .unused,
96130 .unused,97761 .unused,
...@@ -96135,25 +97766,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96135,25 +97766,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96135 .dst_temps = .{ .mem, .unused },97766 .dst_temps = .{ .mem, .unused },
96136 .clobbers = .{ .eflags = true },97767 .clobbers = .{ .eflags = true },
96137 .each = .{ .once = &.{97768 .each = .{ .once = &.{
96138 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },97769 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },
96139 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"8", .tmp0, .add_unaligned_size), ._, ._ },97770 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
96140 .{ ._, ._, .@"and", .tmp1d, .sa(.dst0, .add_umax), ._, ._ },97771 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
96141 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },97772 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
96142 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },97773 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },
96143 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
96144 } },97781 } },
96145 }, .{97782 }, .{
96146 .src_constraints = .{ .any_scalar_int, .any, .any },97783 .required_features = .{ .@"64bit", null, null, null },
96147 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .dword, .is = 32 } }, .any },97784 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },
97785 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
96148 .patterns = &.{97786 .patterns = &.{
96149 .{ .src = .{ .to_mem, .none, .none } },97787 .{ .src = .{ .to_mem, .none, .none } },
96150 },97788 },
96151 .extra_temps = .{97789 .extra_temps = .{
96152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
96153 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97790 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
96154 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },97791 .{ .type = .usize, .kind = .{ .reg = .rsi } },
96155 .unused,97792 .{ .type = .usize, .kind = .{ .reg = .rdi } },
96156 .unused,97793 .{ .type = .u64, .kind = .{ .reg = .rax } },
97794 .{ .type = .u32, .kind = .{ .reg = .ecx } },
96157 .unused,97795 .unused,
96158 .unused,97796 .unused,
96159 .unused,97797 .unused,
...@@ -96161,658 +97799,659 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96161,658 +97799,659 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96161 .unused,97799 .unused,
96162 .unused,97800 .unused,
96163 },97801 },
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 },
96165 .clobbers = .{ .eflags = true },98072 .clobbers = .{ .eflags = true },
96166 .each = .{ .once = &.{98073 .each = .{ .once = &.{
96167 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98074 .{ ._, ._, .bt, .src0d, .ua(.none, .add_src1_rem_32), ._, ._ },
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", ._, ._, ._ },
96174 } },98075 } },
96175 }, .{98076 }, .{
96176 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98077 .src_constraints = .{ .{ .bool_vec = .dword }, .any, .any },
96177 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
96178 .patterns = &.{98078 .patterns = &.{
96179 .{ .src = .{ .to_mem, .none, .none } },98079 .{ .src = .{ .to_gpr, .to_gpr, .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,
96193 },98080 },
96194 .dst_temps = .{ .mem, .unused },98081 .dst_temps = .{ .{ .cc = .c }, .unused },
96195 .clobbers = .{ .eflags = true },98082 .clobbers = .{ .eflags = true },
96196 .each = .{ .once = &.{98083 .each = .{ .once = &.{
96197 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98084 .{ ._, ._, .bt, .src0d, .src1d, ._, ._ },
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", ._, ._, ._ },
96206 } },98085 } },
96207 }, .{98086 }, .{
96208 .required_features = .{ .bmi2, null, null, null },98087 .required_features = .{ .@"64bit", null, null, null },
96209 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },98088 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },
96210 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
96211 .patterns = &.{98089 .patterns = &.{
96212 .{ .src = .{ .to_mem, .none, .none } },98090 .{ .src = .{ .to_gpr, .imm32, .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,
96226 },98091 },
96227 .dst_temps = .{ .mem, .unused },98092 .dst_temps = .{ .{ .cc = .c }, .unused },
96228 .clobbers = .{ .eflags = true },98093 .clobbers = .{ .eflags = true },
96229 .each = .{ .once = &.{98094 .each = .{ .once = &.{
96230 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98095 .{ ._, ._, .bt, .src0q, .ua(.none, .add_src1_rem_64), ._, ._ },
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", ._, ._, ._ },
96238 } },98096 } },
96239 }, .{98097 }, .{
96240 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },98098 .required_features = .{ .@"64bit", null, null, null },
96241 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },98099 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },
96242 .patterns = &.{98100 .patterns = &.{
96243 .{ .src = .{ .to_mem, .none, .none } },98101 .{ .src = .{ .to_gpr, .to_gpr, .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,
96257 },98102 },
96258 .dst_temps = .{ .mem, .unused },98103 .dst_temps = .{ .{ .cc = .c }, .unused },
96259 .clobbers = .{ .eflags = true },98104 .clobbers = .{ .eflags = true },
96260 .each = .{ .once = &.{98105 .each = .{ .once = &.{
96261 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98106 .{ ._, ._, .bt, .src0q, .src1q, ._, ._ },
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", ._, ._, ._ },
96269 } },98107 } },
96270 }, .{98108 }, .{
96271 .required_features = .{ .avx, null, null, null },98109 .src_constraints = .{ .any_bool_vec, .any, .any },
96272 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96273 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
96274 .patterns = &.{98110 .patterns = &.{
96275 .{ .src = .{ .to_sse, .none, .none } },98111 .{ .src = .{ .to_mem, .imm32, .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,
96289 },98112 },
96290 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },98113 .dst_temps = .{ .{ .cc = .c }, .unused },
98114 .clobbers = .{ .eflags = true },
96291 .each = .{ .once = &.{98115 .each = .{ .once = &.{
96292 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98116 .{ ._, ._, .bt, .mema(.src0d, .add_src1_div_8_down_4), .ua(.none, .add_src1_rem_32), ._, ._ },
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), ._ },
96297 } },98117 } },
96298 }, .{98118 }, .{
96299 .required_features = .{ .avx, null, null, null },98119 .src_constraints = .{ .any_bool_vec, .any, .any },
96300 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96301 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96302 .patterns = &.{98120 .patterns = &.{
96303 .{ .src = .{ .to_sse, .none, .none } },98121 .{ .src = .{ .to_mem, .to_gpr, .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,
96317 },98122 },
96318 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },98123 .dst_temps = .{ .{ .cc = .c }, .unused },
98124 .clobbers = .{ .eflags = true },
96319 .each = .{ .once = &.{98125 .each = .{ .once = &.{
96320 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98126 .{ ._, ._, .bt, .src0d, .src1d, ._, ._ },
96321 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
96322 } },98127 } },
96323 }, .{98128 }, .{
96324 .required_features = .{ .sse2, null, null, null },98129 .dst_constraints = .{ .{ .int = .byte }, .any },
96325 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96326 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
96327 .patterns = &.{98130 .patterns = &.{
96328 .{ .src = .{ .to_mut_sse, .none, .none } },98131 .{ .src = .{ .to_mem, .simm32, .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,
96342 },98132 },
96343 .dst_temps = .{ .{ .ref = .src0 }, .unused },98133 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96344 .each = .{ .once = &.{98134 .each = .{ .once = &.{
96345 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98135 .{ ._, ._, .movzx, .dst0d, .mema(.src0b, .add_src0_elem_size_mul_src1), ._, ._ },
96346 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96347 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
96348 .{ ._, .p_q, .add, .dst0x, .lea(.tmp0x), ._, ._ },
96349 .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
96350 } },98136 } },
96351 }, .{98137 }, .{
96352 .required_features = .{ .sse2, null, null, null },98138 .dst_constraints = .{ .{ .int = .byte }, .any },
96353 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96354 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96355 .patterns = &.{98139 .patterns = &.{
96356 .{ .src = .{ .to_mut_sse, .none, .none } },98140 .{ .src = .{ .to_mem, .to_gpr, .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,
96370 },98141 },
96371 .dst_temps = .{ .{ .ref = .src0 }, .unused },98142 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96372 .each = .{ .once = &.{98143 .each = .{ .once = &.{
96373 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98144 .{ ._, ._, .movzx, .dst0d, .memi(.src0b, .src1), ._, ._ },
96374 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96375 } },98145 } },
96376 }, .{98146 }, .{
96377 .required_features = .{ .sse, null, null, null },98147 .dst_constraints = .{ .{ .int = .word }, .any },
96378 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
96379 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
96380 .patterns = &.{98148 .patterns = &.{
96381 .{ .src = .{ .to_mut_sse, .none, .none } },98149 .{ .src = .{ .to_mem, .simm32, .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,
96395 },98150 },
96396 .dst_temps = .{ .{ .ref = .src0 }, .unused },98151 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96397 .each = .{ .once = &.{98152 .each = .{ .once = &.{
96398 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98153 .{ ._, ._, .movzx, .dst0d, .mema(.src0w, .add_src0_elem_size_mul_src1), ._, ._ },
96399 .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
96400 } },98154 } },
96401 }, .{98155 }, .{
96402 .required_features = .{ .avx2, null, null, null },98156 .dst_constraints = .{ .{ .int = .word }, .any },
96403 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96404 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .qword } }, .any },
96405 .patterns = &.{98157 .patterns = &.{
96406 .{ .src = .{ .to_sse, .none, .none } },98158 .{ .src = .{ .to_mem, .to_gpr, .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,
96420 },98159 },
96421 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },98160 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96422 .each = .{ .once = &.{98161 .each = .{ .once = &.{
96423 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98162 .{ ._, ._, .movzx, .dst0d, .memsi(.src0w, .@"2", .src1), ._, ._ },
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), ._ },
96428 } },98163 } },
96429 }, .{98164 }, .{
96430 .required_features = .{ .avx2, null, null, null },98165 .dst_constraints = .{ .{ .int = .dword }, .any },
96431 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any, .any },
96432 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .yword, .is = .qword } }, .any },
96433 .patterns = &.{98166 .patterns = &.{
96434 .{ .src = .{ .to_sse, .none, .none } },98167 .{ .src = .{ .to_mem, .simm32, .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,
96448 },98168 },
96449 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },98169 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96450 .each = .{ .once = &.{98170 .each = .{ .once = &.{
96451 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98171 .{ ._, ._, .mov, .dst0d, .mema(.src0d, .add_src0_elem_size_mul_src1), ._, ._ },
96452 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
96453 } },98172 } },
96454 }, .{98173 }, .{
96455 .required_features = .{ .avx2, null, null, null },98174 .dst_constraints = .{ .{ .int = .dword }, .any },
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 },
96458 .patterns = &.{98175 .patterns = &.{
96459 .{ .src = .{ .to_mem, .none, .none } },98176 .{ .src = .{ .to_mem, .to_gpr, .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,
96473 },98177 },
96474 .dst_temps = .{ .mem, .unused },98178 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96475 .clobbers = .{ .eflags = true },
96476 .each = .{ .once = &.{98179 .each = .{ .once = &.{
96477 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },98180 .{ ._, ._, .mov, .dst0d, .memsi(.src0d, .@"4", .src1), ._, ._ },
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", ._, ._, ._ },
96488 } },98181 } },
96489 }, .{98182 }, .{
96490 .required_features = .{ .avx2, null, null, null },98183 .dst_constraints = .{ .{ .int = .qword }, .any },
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 },
96493 .patterns = &.{98184 .patterns = &.{
96494 .{ .src = .{ .to_mem, .none, .none } },98185 .{ .src = .{ .to_mem, .simm32, .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,
96508 },98186 },
96509 .dst_temps = .{ .mem, .unused },98187 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96510 .clobbers = .{ .eflags = true },
96511 .each = .{ .once = &.{98188 .each = .{ .once = &.{
96512 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },98189 .{ ._, ._, .mov, .dst0q, .mema(.src0q, .add_src0_elem_size_mul_src1), ._, ._ },
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", ._, ._, ._ },
96519 } },98190 } },
96520 }, .{98191 }, .{
96521 .required_features = .{ .avx, null, null, null },98192 .required_features = .{ .@"64bit", null, null, null },
96522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },98193 .dst_constraints = .{ .{ .int = .qword }, .any },
96523 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .qword } }, .any },
96524 .patterns = &.{98194 .patterns = &.{
96525 .{ .src = .{ .to_mem, .none, .none } },98195 .{ .src = .{ .to_mem, .to_gpr, .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,
96539 },98196 },
96540 .dst_temps = .{ .mem, .unused },98197 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96541 .clobbers = .{ .eflags = true },
96542 .each = .{ .once = &.{98198 .each = .{ .once = &.{
96543 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },98199 .{ ._, ._, .mov, .dst0q, .memsi(.src0q, .@"8", .src1), ._, ._ },
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", ._, ._, ._ },
96554 } },98200 } },
96555 }, .{98201 } }) catch |err| switch (err) {
96556 .required_features = .{ .avx, null, null, null },98202 error.SelectFailed => {
96557 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },98203 const elem_size = res_ty.abiSize(zcu);
96558 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },98204 const base = try cg.tempAllocReg(.usize, abi.RegisterClass.gp);
96559 .patterns = &.{98205 while (try ops[0].toBase(false, cg) or
96560 .{ .src = .{ .to_mem, .none, .none } },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);
96561 },98249 },
96562 .extra_temps = .{98250 else => |e| return e,
96563 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98251 };
96564 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },98252 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
96565 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },98253 },
96566 .{ .kind = .{ .umax_mem = .{ .ref = .dst0, .to_signedness = .unsigned } } },98254 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {
96567 .unused,98255 else => unreachable,
96568 .unused,98256 .slice_elem_val => try cg.airSliceElemVal(inst),
96569 .unused,98257 .ptr_elem_val => try cg.airPtrElemVal(inst),
96570 .unused,98258 } else {
96571 .unused,98259 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
96572 .unused,98260 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);
96573 .unused,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 } },
96574 },98268 },
96575 .dst_temps = .{ .mem, .unused },98269 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96576 .clobbers = .{ .eflags = true },
96577 .each = .{ .once = &.{98270 .each = .{ .once = &.{
96578 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },98271 .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_mul_src1), ._, ._ },
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", ._, ._, ._ },
96585 } },98272 } },
96586 }, .{98273 }, .{
96587 .required_features = .{ .sse2, null, null, null },98274 .dst_constraints = .{ .{ .int = .byte }, .any },
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 },
96590 .patterns = &.{98275 .patterns = &.{
96591 .{ .src = .{ .to_mem, .none, .none } },98276 .{ .src = .{ .to_gpr, .to_gpr, .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,
96605 },98277 },
96606 .dst_temps = .{ .mem, .unused },98278 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96607 .clobbers = .{ .eflags = true },
96608 .each = .{ .once = &.{98279 .each = .{ .once = &.{
96609 .{ ._, ._, .lea, .tmp0p, .mem(.tmp4), ._, ._ },98280 .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
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", ._, ._, ._ },
96621 } },98281 } },
96622 }, .{98282 }, .{
96623 .required_features = .{ .sse2, null, null, null },98283 .dst_constraints = .{ .{ .int = .word }, .any },
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 },
96626 .patterns = &.{98284 .patterns = &.{
96627 .{ .src = .{ .to_mem, .none, .none } },98285 .{ .src = .{ .to_gpr, .simm32, .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,
96641 },98286 },
96642 .dst_temps = .{ .mem, .unused },98287 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96643 .clobbers = .{ .eflags = true },
96644 .each = .{ .once = &.{98288 .each = .{ .once = &.{
96645 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },98289 .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_mul_src1), ._, ._ },
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", ._, ._, ._ },
96653 } },98290 } },
96654 }, .{98291 }, .{
96655 .required_features = .{ .sse, null, null, null },98292 .dst_constraints = .{ .{ .int = .word }, .any },
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 },
96658 .patterns = &.{98293 .patterns = &.{
96659 .{ .src = .{ .to_mem, .none, .none } },98294 .{ .src = .{ .to_gpr, .to_gpr, .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,
96673 },98295 },
96674 .dst_temps = .{ .mem, .unused },98296 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96675 .clobbers = .{ .eflags = true },
96676 .each = .{ .once = &.{98297 .each = .{ .once = &.{
96677 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },98298 .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
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", ._, ._, ._ },
96685 } },98299 } },
96686 }, .{98300 }, .{
96687 .required_features = .{ .@"64bit", null, null, null },98301 .dst_constraints = .{ .{ .int = .dword }, .any },
96688 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
96689 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },
96690 .patterns = &.{98302 .patterns = &.{
96691 .{ .src = .{ .to_mem, .none, .none } },98303 .{ .src = .{ .to_gpr, .simm32, .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,
96705 },98304 },
96706 .dst_temps = .{ .mem, .unused },98305 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96707 .clobbers = .{ .eflags = true },
96708 .each = .{ .once = &.{98306 .each = .{ .once = &.{
96709 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98307 .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_mul_src1), ._, ._ },
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", ._, ._, ._ },
96714 } },98308 } },
96715 }, .{98309 }, .{
96716 .required_features = .{ .@"64bit", null, null, null },98310 .dst_constraints = .{ .{ .int = .dword }, .any },
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 },
96719 .patterns = &.{98311 .patterns = &.{
96720 .{ .src = .{ .to_mem, .none, .none } },98312 .{ .src = .{ .to_gpr, .to_gpr, .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,
96734 },98313 },
96735 .dst_temps = .{ .mem, .unused },98314 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96736 .clobbers = .{ .eflags = true },
96737 .each = .{ .once = &.{98315 .each = .{ .once = &.{
96738 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98316 .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
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", ._, ._, ._ },
96745 } },98317 } },
96746 }, .{98318 }, .{
96747 .required_features = .{ .@"64bit", .bmi2, null, null },98319 .dst_constraints = .{ .{ .int = .qword }, .any },
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 },
96750 .patterns = &.{98320 .patterns = &.{
96751 .{ .src = .{ .to_mem, .none, .none } },98321 .{ .src = .{ .to_gpr, .simm32, .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,
96765 },98322 },
96766 .dst_temps = .{ .mem, .unused },98323 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96767 .clobbers = .{ .eflags = true },
96768 .each = .{ .once = &.{98324 .each = .{ .once = &.{
96769 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98325 .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_mul_src1), ._, ._ },
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", ._, ._, ._ },
96775 } },98326 } },
96776 }, .{98327 }, .{
96777 .required_features = .{ .@"64bit", null, null, null },98328 .required_features = .{ .@"64bit", null, null, null },
96778 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },98329 .dst_constraints = .{ .{ .int = .qword }, .any },
96779 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
96780 .patterns = &.{98330 .patterns = &.{
96781 .{ .src = .{ .to_mem, .none, .none } },98331 .{ .src = .{ .to_gpr, .to_gpr, .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,
96795 },98332 },
96796 .dst_temps = .{ .mem, .unused },98333 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96797 .clobbers = .{ .eflags = true },
96798 .each = .{ .once = &.{98334 .each = .{ .once = &.{
96799 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98335 .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
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", ._, ._, ._ },
96805 } },98336 } },
96806 }, .{98337 } }) catch |err| switch (err) {
96807 .required_features = .{ .@"64bit", null, null, null },98338 error.SelectFailed => {
96808 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },98339 const elem_size = res_ty.abiSize(zcu);
96809 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },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 },
96810 .patterns = &.{98449 .patterns = &.{
96811 .{ .src = .{ .to_mem, .none, .none } },98450 .{ .src = .{ .to_sse, .none, .none } },
96812 },98451 },
96813 .extra_temps = .{98452 .extra_temps = .{
96814 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98453 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
96815 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98454 .unused,
96816 .unused,98455 .unused,
96817 .unused,98456 .unused,
96818 .unused,98457 .unused,
...@@ -96823,57 +98462,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96823,57 +98462,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96823 .unused,98462 .unused,
96824 .unused,98463 .unused,
96825 },98464 },
96826 .dst_temps = .{ .mem, .unused },98465 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96827 .clobbers = .{ .eflags = true },
96828 .each = .{ .once = &.{98466 .each = .{ .once = &.{
96829 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98467 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
96830 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },98468 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },
96831 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96832 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96834 } },98469 } },
96835 }, .{98470 }, .{
96836 .required_features = .{ .@"64bit", null, null, null },98471 .required_features = .{ .@"64bit", .f16c, null, null },
96837 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },98472 .src_constraints = .{ .{ .float = .word }, .any, .any },
96838 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },98473 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
96839 .patterns = &.{98474 .patterns = &.{
96840 .{ .src = .{ .to_mem, .none, .none } },98475 .{ .src = .{ .to_sse, .none, .none } },
96841 },98476 },
96842 .extra_temps = .{98477 .extra_temps = .{
96843 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98478 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
96844 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
96845 .unused,
96846 .unused,
96847 .unused,
96848 .unused,
96849 .unused,
96850 .unused,
96851 .unused,
96852 .unused,98479 .unused,
96853 .unused,98480 .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 } },
96877 .unused,98481 .unused,
96878 .unused,98482 .unused,
96879 .unused,98483 .unused,
...@@ -96883,26 +98487,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96883,26 +98487,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96883 .unused,98487 .unused,
96884 .unused,98488 .unused,
96885 },98489 },
96886 .dst_temps = .{ .mem, .unused },98490 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96887 .clobbers = .{ .eflags = true },
96888 .each = .{ .once = &.{98491 .each = .{ .once = &.{
96889 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98492 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
96890 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },98493 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },
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", ._, ._, ._ },
96895 } },98494 } },
96896 }, .{98495 }, .{
96897 .required_features = .{ .@"64bit", null, null, null },98496 .required_features = .{ .@"64bit", .f16c, null, null },
96898 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },98497 .src_constraints = .{ .{ .float = .word }, .any, .any },
96899 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },98498 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
96900 .patterns = &.{98499 .patterns = &.{
96901 .{ .src = .{ .to_mem, .none, .none } },98500 .{ .src = .{ .to_sse, .none, .none } },
96902 },98501 },
96903 .extra_temps = .{98502 .extra_temps = .{
96904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98503 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
96905 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98504 .unused,
96906 .unused,98505 .unused,
96907 .unused,98506 .unused,
96908 .unused,98507 .unused,
...@@ -96913,26 +98512,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96913,26 +98512,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96913 .unused,98512 .unused,
96914 .unused,98513 .unused,
96915 },98514 },
96916 .dst_temps = .{ .mem, .unused },98515 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
96917 .clobbers = .{ .eflags = true },
96918 .each = .{ .once = &.{98516 .each = .{ .once = &.{
96919 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98517 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
96920 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },98518 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },
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", ._, ._, ._ },
96925 } },98519 } },
96926 }, .{98520 }, .{
96927 .required_features = .{ .@"64bit", null, null, null },98521 .required_features = .{ .@"64bit", .f16c, null, null },
96928 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },98522 .src_constraints = .{ .{ .float = .word }, .any, .any },
96929 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },98523 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
96930 .patterns = &.{98524 .patterns = &.{
96931 .{ .src = .{ .to_mem, .none, .none } },98525 .{ .src = .{ .to_sse, .none, .none } },
96932 },98526 },
96933 .extra_temps = .{98527 .extra_temps = .{
96934 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98528 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
96935 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98529 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
96936 .unused,98530 .unused,
96937 .unused,98531 .unused,
96938 .unused,98532 .unused,
...@@ -96946,22 +98540,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96946,22 +98540,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96946 .dst_temps = .{ .mem, .unused },98540 .dst_temps = .{ .mem, .unused },
96947 .clobbers = .{ .eflags = true },98541 .clobbers = .{ .eflags = true },
96948 .each = .{ .once = &.{98542 .each = .{ .once = &.{
96949 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98543 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
96950 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },98544 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
96951 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },98545 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
96952 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },98546 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
96953 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },98547 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp1q, ._, ._ },
96954 } },98548 } },
96955 }, .{98549 }, .{
96956 .required_features = .{ .@"64bit", null, null, null },98550 .required_features = .{ .@"64bit", .f16c, null, null },
96957 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .yword } }, .any, .any },98551 .src_constraints = .{ .{ .float = .word }, .any, .any },
96958 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },98552 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
96959 .patterns = &.{98553 .patterns = &.{
96960 .{ .src = .{ .to_mem, .none, .none } },98554 .{ .src = .{ .to_sse, .none, .none } },
96961 },98555 },
96962 .extra_temps = .{98556 .extra_temps = .{
96963 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98557 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
96964 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },98558 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
96965 .unused,98559 .unused,
96966 .unused,98560 .unused,
96967 .unused,98561 .unused,
...@@ -96973,28 +98567,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -96973,28 +98567,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
96973 .unused,98567 .unused,
96974 },98568 },
96975 .dst_temps = .{ .mem, .unused },98569 .dst_temps = .{ .mem, .unused },
96976 .clobbers = .{ .eflags = true },
96977 .each = .{ .once = &.{98570 .each = .{ .once = &.{
96978 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98571 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
96979 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },98572 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
96980 .{ ._, ._l, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },98573 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
96981 .{ ._, ._r, .sa, .tmp1q, .uia(64, .dst0, .sub_bit_size), ._, ._ },98574 .{ ._, ._, .mov, .memd(.dst0q, 8), .si(0), ._, ._ },
96982 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
96983 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
96984 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
96985 } },98575 } },
96986 }, .{98576 }, .{
96987 .required_features = .{ .@"64bit", .bmi2, null, null },98577 .required_features = .{ .@"64bit", .f16c, null, null },
96988 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },98578 .src_constraints = .{ .{ .float = .word }, .any, .any },
96989 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },98579 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
96990 .patterns = &.{98580 .patterns = &.{
96991 .{ .src = .{ .to_mem, .none, .none } },98581 .{ .src = .{ .to_sse, .none, .none } },
96992 },98582 },
96993 .extra_temps = .{98583 .extra_temps = .{
96994 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98584 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
96995 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },98585 .{ .type = .i64, .kind = .{ .reg = .rax } },
96996 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98586 .{ .type = .usize, .kind = .{ .reg = .rdi } },
96997 .unused,98587 .{ .type = .u32, .kind = .{ .reg = .ecx } },
96998 .unused,98588 .unused,
96999 .unused,98589 .unused,
97000 .unused,98590 .unused,
...@@ -97006,25 +98596,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97006,25 +98596,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97006 .dst_temps = .{ .mem, .unused },98596 .dst_temps = .{ .mem, .unused },
97007 .clobbers = .{ .eflags = true },98597 .clobbers = .{ .eflags = true },
97008 .each = .{ .once = &.{98598 .each = .{ .once = &.{
97009 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98599 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
97010 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },98600 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
97011 .{ .@"0:", ._, .bzhi, .tmp2q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._ },98601 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
97012 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },98602 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
97013 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },98603 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
97014 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },98604 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98605 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
97015 } },98606 } },
97016 }, .{98607 }, .{
97017 .required_features = .{ .@"64bit", null, null, null },98608 .required_features = .{ .@"64bit", .f16c, null, null },
97018 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .yword, .is = .yword } }, .any, .any },98609 .src_constraints = .{ .{ .float = .word }, .any, .any },
97019 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },98610 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
97020 .patterns = &.{98611 .patterns = &.{
97021 .{ .src = .{ .to_mem, .none, .none } },98612 .{ .src = .{ .to_sse, .none, .none } },
97022 },98613 },
97023 .extra_temps = .{98614 .extra_temps = .{
97024 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98615 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
97025 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98616 .{ .type = .i64, .kind = .{ .reg = .rax } },
97026 .unused,98617 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97027 .unused,98618 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97028 .unused,98619 .unused,
97029 .unused,98620 .unused,
97030 .unused,98621 .unused,
...@@ -97036,24 +98627,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97036,24 +98627,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97036 .dst_temps = .{ .mem, .unused },98627 .dst_temps = .{ .mem, .unused },
97037 .clobbers = .{ .eflags = true },98628 .clobbers = .{ .eflags = true },
97038 .each = .{ .once = &.{98629 .each = .{ .once = &.{
97039 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98630 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },
97040 .{ .@"0:", ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ },98631 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
97041 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },98632 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
97042 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },98633 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97043 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },98634 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
97044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },98635 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98636 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
97045 } },98637 } },
97046 }, .{98638 }, .{
97047 .required_features = .{ .@"64bit", null, null, null },98639 .required_features = .{ .sse, null, null, null },
97048 .src_constraints = .{ .any_scalar_int, .any, .any },98640 .src_constraints = .{ .{ .float = .word }, .any, .any },
97049 .dst_constraints = .{ .{ .multiple_scalar_exact_int = .{ .of = .qword, .is = 64 } }, .any },98641 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
97050 .patterns = &.{98642 .patterns = &.{
97051 .{ .src = .{ .to_mem, .none, .none } },98643 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97052 },98644 },
98645 .call_frame = .{ .alignment = .@"16" },
97053 .extra_temps = .{98646 .extra_temps = .{
97054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97055 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98648 .unused,
97056 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98649 .unused,
97057 .unused,98650 .unused,
97058 .unused,98651 .unused,
97059 .unused,98652 .unused,
...@@ -97063,28 +98656,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97063,28 +98656,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97063 .unused,98656 .unused,
97064 .unused,98657 .unused,
97065 },98658 },
97066 .dst_temps = .{ .mem, .unused },98659 .dst_temps = .{ .{ .reg = .eax }, .unused },
97067 .clobbers = .{ .eflags = true },98660 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97068 .each = .{ .once = &.{98661 .each = .{ .once = &.{
97069 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98662 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
97076 } },98663 } },
97077 }, .{98664 }, .{
97078 .required_features = .{ .@"64bit", null, null, null },98665 .required_features = .{ .sse, null, null, null },
97079 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98666 .src_constraints = .{ .{ .float = .word }, .any, .any },
97080 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },98667 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
97081 .patterns = &.{98668 .patterns = &.{
97082 .{ .src = .{ .to_mem, .none, .none } },98669 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97083 },98670 },
98671 .call_frame = .{ .alignment = .@"16" },
97084 .extra_temps = .{98672 .extra_temps = .{
97085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98673 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
97086 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98674 .unused,
97087 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },98675 .unused,
97088 .unused,98676 .unused,
97089 .unused,98677 .unused,
97090 .unused,98678 .unused,
...@@ -97094,31 +98682,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97094,31 +98682,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97094 .unused,98682 .unused,
97095 .unused,98683 .unused,
97096 },98684 },
97097 .dst_temps = .{ .mem, .unused },98685 .dst_temps = .{ .{ .reg = .eax }, .unused },
97098 .clobbers = .{ .eflags = true },98686 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97099 .each = .{ .once = &.{98687 .each = .{ .once = &.{
97100 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98688 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
97109 } },98689 } },
97110 }, .{98690 }, .{
97111 .required_features = .{ .@"64bit", .bmi2, null, null },98691 .required_features = .{ .@"64bit", .sse, null, null },
97112 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },98692 .src_constraints = .{ .{ .float = .word }, .any, .any },
97113 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },98693 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
97114 .patterns = &.{98694 .patterns = &.{
97115 .{ .src = .{ .to_mem, .none, .none } },98695 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97116 },98696 },
98697 .call_frame = .{ .alignment = .@"16" },
97117 .extra_temps = .{98698 .extra_temps = .{
97118 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
97119 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98700 .unused,
97120 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },98701 .unused,
97121 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98702 .unused,
97122 .unused,98703 .unused,
97123 .unused,98704 .unused,
97124 .unused,98705 .unused,
...@@ -97127,29 +98708,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97127,29 +98708,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97127 .unused,98708 .unused,
97128 .unused,98709 .unused,
97129 },98710 },
97130 .dst_temps = .{ .mem, .unused },98711 .dst_temps = .{ .{ .reg = .rax }, .unused },
97131 .clobbers = .{ .eflags = true },98712 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97132 .each = .{ .once = &.{98713 .each = .{ .once = &.{
97133 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98714 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
97141 } },98715 } },
97142 }, .{98716 }, .{
97143 .required_features = .{ .@"64bit", null, null, null },98717 .required_features = .{ .@"64bit", .sse, null, null },
97144 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },98718 .src_constraints = .{ .{ .float = .word }, .any, .any },
97145 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },98719 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
97146 .patterns = &.{98720 .patterns = &.{
97147 .{ .src = .{ .to_mem, .none, .none } },98721 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97148 },98722 },
98723 .call_frame = .{ .alignment = .@"16" },
97149 .extra_temps = .{98724 .extra_temps = .{
97150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },98725 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
97151 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98726 .unused,
97152 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },98727 .unused,
97153 .unused,98728 .unused,
97154 .unused,98729 .unused,
97155 .unused,98730 .unused,
...@@ -97159,30 +98734,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97159,30 +98734,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97159 .unused,98734 .unused,
97160 .unused,98735 .unused,
97161 },98736 },
97162 .dst_temps = .{ .mem, .unused },98737 .dst_temps = .{ .{ .reg = .rax }, .unused },
97163 .clobbers = .{ .eflags = true },98738 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97164 .each = .{ .once = &.{98739 .each = .{ .once = &.{
97165 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98740 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
97173 } },98741 } },
97174 }, .{98742 }, .{
97175 .required_features = .{ .@"64bit", .slow_incdec, null, null },98743 .required_features = .{ .@"64bit", .sse, null, null },
97176 .src_constraints = .{ .any_scalar_int, .any, .any },98744 .src_constraints = .{ .{ .float = .word }, .any, .any },
97177 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },98745 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
97178 .patterns = &.{98746 .patterns = &.{
97179 .{ .src = .{ .to_mem, .none, .none } },98747 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97180 },98748 },
98749 .call_frame = .{ .alignment = .@"16" },
97181 .extra_temps = .{98750 .extra_temps = .{
97182 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98751 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
97183 .{ .type = .usize, .kind = .{ .reg = .rsi } },98752 .unused,
97184 .{ .type = .usize, .kind = .{ .reg = .rdi } },98753 .unused,
97185 .{ .type = .u32, .kind = .{ .reg = .ecx } },98754 .unused,
97186 .unused,98755 .unused,
97187 .unused,98756 .unused,
97188 .unused,98757 .unused,
...@@ -97191,30 +98760,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97191,30 +98760,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97191 .unused,98760 .unused,
97192 .unused,98761 .unused,
97193 },98762 },
97194 .dst_temps = .{ .mem, .unused },98763 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
97195 .clobbers = .{ .eflags = true },98764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97196 .each = .{ .once = &.{98765 .each = .{ .once = &.{
97197 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98766 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
97205 } },98767 } },
97206 }, .{98768 }, .{
97207 .required_features = .{ .@"64bit", null, null, null },98769 .required_features = .{ .@"64bit", .sse, null, null },
97208 .src_constraints = .{ .any_scalar_int, .any, .any },98770 .src_constraints = .{ .{ .float = .word }, .any, .any },
97209 .dst_constraints = .{ .{ .scalar_exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },98771 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
97210 .patterns = &.{98772 .patterns = &.{
97211 .{ .src = .{ .to_mem, .none, .none } },98773 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97212 },98774 },
98775 .call_frame = .{ .alignment = .@"16" },
97213 .extra_temps = .{98776 .extra_temps = .{
97214 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98777 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
97215 .{ .type = .usize, .kind = .{ .reg = .rsi } },98778 .unused,
97216 .{ .type = .usize, .kind = .{ .reg = .rdi } },98779 .unused,
97217 .{ .type = .u32, .kind = .{ .reg = .ecx } },98780 .unused,
97218 .unused,98781 .unused,
97219 .unused,98782 .unused,
97220 .unused,98783 .unused,
...@@ -97223,28 +98786,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97223,28 +98786,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97223 .unused,98786 .unused,
97224 .unused,98787 .unused,
97225 },98788 },
97226 .dst_temps = .{ .mem, .unused },98789 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
97227 .clobbers = .{ .eflags = true },98790 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97228 .each = .{ .once = &.{98791 .each = .{ .once = &.{
97229 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98792 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
97237 } },98793 } },
97238 }, .{98794 }, .{
97239 .required_features = .{ .@"64bit", .slow_incdec, null, null },98795 .required_features = .{ .@"64bit", .sse, null, null },
97240 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98796 .src_constraints = .{ .{ .float = .word }, .any, .any },
97241 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },98797 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
97242 .patterns = &.{98798 .patterns = &.{
97243 .{ .src = .{ .to_mem, .none, .none } },98799 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97244 },98800 },
98801 .call_frame = .{ .alignment = .@"16" },
97245 .extra_temps = .{98802 .extra_temps = .{
97246 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
97247 .{ .type = .usize, .kind = .{ .reg = .rsi } },98804 .{ .type = .i64, .kind = .{ .reg = .rax } },
97248 .{ .type = .usize, .kind = .{ .reg = .rdi } },98805 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97249 .{ .type = .u32, .kind = .{ .reg = .ecx } },98806 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97250 .unused,98807 .unused,
...@@ -97256,32 +98813,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97256,32 +98813,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97256 .unused,98813 .unused,
97257 },98814 },
97258 .dst_temps = .{ .mem, .unused },98815 .dst_temps = .{ .mem, .unused },
97259 .clobbers = .{ .eflags = true },98816 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97260 .each = .{ .once = &.{98817 .each = .{ .once = &.{
97261 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98818 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
97262 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },98819 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
97263 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },98820 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
97264 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },98821 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
97265 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },98822 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
97266 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },98823 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
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", ._, ._, ._ },
97274 } },98824 } },
97275 }, .{98825 }, .{
97276 .required_features = .{ .@"64bit", null, null, null },98826 .required_features = .{ .@"64bit", .sse, null, null },
97277 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98827 .src_constraints = .{ .{ .float = .word }, .any, .any },
97278 .dst_constraints = .{ .{ .scalar_exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },98828 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
97279 .patterns = &.{98829 .patterns = &.{
97280 .{ .src = .{ .to_mem, .none, .none } },98830 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
97281 },98831 },
98832 .call_frame = .{ .alignment = .@"16" },
97282 .extra_temps = .{98833 .extra_temps = .{
97283 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98834 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },
97284 .{ .type = .usize, .kind = .{ .reg = .rsi } },98835 .{ .type = .i64, .kind = .{ .reg = .rax } },
97285 .{ .type = .usize, .kind = .{ .reg = .rdi } },98836 .{ .type = .usize, .kind = .{ .reg = .rdi } },
97286 .{ .type = .u32, .kind = .{ .reg = .ecx } },98837 .{ .type = .u32, .kind = .{ .reg = .ecx } },
97287 .unused,98838 .unused,
...@@ -97293,34 +98844,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97293,34 +98844,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97293 .unused,98844 .unused,
97294 },98845 },
97295 .dst_temps = .{ .mem, .unused },98846 .dst_temps = .{ .mem, .unused },
97296 .clobbers = .{ .eflags = true },98847 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97297 .each = .{ .once = &.{98848 .each = .{ .once = &.{
97298 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98849 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
97299 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },98850 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
97300 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },98851 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
97301 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },98852 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
97302 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },98853 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
97303 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },98854 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
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", ._, ._, ._ },
97311 } },98855 } },
97312 }, .{98856 }, .{
97313 .required_features = .{ .@"64bit", .slow_incdec, null, null },98857 .required_features = .{ .f16c, null, null, null },
97314 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98858 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
97315 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },98859 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
97316 .patterns = &.{98860 .patterns = &.{
97317 .{ .src = .{ .to_mem, .none, .none } },98861 .{ .src = .{ .mem, .none, .none } },
98862 .{ .src = .{ .to_sse, .none, .none } },
97318 },98863 },
97319 .extra_temps = .{98864 .extra_temps = .{
97320 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
97321 .{ .type = .usize, .kind = .{ .reg = .rsi } },98866 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
97322 .{ .type = .usize, .kind = .{ .reg = .rdi } },98867 .unused,
97323 .{ .type = .u32, .kind = .{ .reg = .ecx } },98868 .unused,
97324 .unused,98869 .unused,
97325 .unused,98870 .unused,
97326 .unused,98871 .unused,
...@@ -97329,37 +98874,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97329,37 +98874,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97329 .unused,98874 .unused,
97330 .unused,98875 .unused,
97331 },98876 },
97332 .dst_temps = .{ .mem, .unused },98877 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
97333 .clobbers = .{ .eflags = true },
97334 .each = .{ .once = &.{98878 .each = .{ .once = &.{
97335 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98879 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
97336 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },98880 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
97337 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },98881 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
97338 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },98882 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
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", ._, ._, ._ },
97350 } },98883 } },
97351 }, .{98884 }, .{
97352 .required_features = .{ .@"64bit", null, null, null },98885 .required_features = .{ .f16c, null, null, null },
97353 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98886 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
97354 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },98887 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
97355 .patterns = &.{98888 .patterns = &.{
97356 .{ .src = .{ .to_mem, .none, .none } },98889 .{ .src = .{ .to_mem, .none, .none } },
97357 },98890 },
97358 .extra_temps = .{98891 .extra_temps = .{
97359 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97360 .{ .type = .usize, .kind = .{ .reg = .rsi } },98893 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
97361 .{ .type = .usize, .kind = .{ .reg = .rdi } },98894 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
97362 .{ .type = .u32, .kind = .{ .reg = .ecx } },98895 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
97363 .unused,98896 .unused,
97364 .unused,98897 .unused,
97365 .unused,98898 .unused,
...@@ -97369,37 +98902,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97369,37 +98902,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97369 .unused,98902 .unused,
97370 },98903 },
97371 .dst_temps = .{ .mem, .unused },98904 .dst_temps = .{ .mem, .unused },
97372 .clobbers = .{ .eflags = true },
97373 .each = .{ .once = &.{98905 .each = .{ .once = &.{
97374 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98906 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
97375 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },98907 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
97376 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },98908 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97377 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },98909 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
97378 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },98910 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
97379 .{ ._, ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },98911 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
97380 .{ ._, ._l, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },98912 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
97381 .{ ._, ._r, .sa, .tmp3q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },98913 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
97382 .{ ._, ._, .mov, .lea(.tmp2q), .tmp3q, ._, ._ },98914 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
97389 } },98915 } },
97390 }, .{98916 }, .{
97391 .required_features = .{ .@"64bit", .slow_incdec, null, null },98917 .required_features = .{ .avx, .slow_incdec, null, null },
97392 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98918 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97393 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },98919 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
97394 .patterns = &.{98920 .patterns = &.{
97395 .{ .src = .{ .to_mem, .none, .none } },98921 .{ .src = .{ .to_mem, .none, .none } },
97396 },98922 },
98923 .call_frame = .{ .alignment = .@"16" },
97397 .extra_temps = .{98924 .extra_temps = .{
97398 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97399 .{ .type = .usize, .kind = .{ .reg = .rsi } },98926 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97400 .{ .type = .usize, .kind = .{ .reg = .rdi } },98927 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97401 .{ .type = .u32, .kind = .{ .reg = .ecx } },98928 .{ .type = .i32, .kind = .{ .reg = .eax } },
97402 .{ .type = .u64, .kind = .{ .reg = .rax } },98929 .unused,
97403 .unused,98930 .unused,
97404 .unused,98931 .unused,
97405 .unused,98932 .unused,
...@@ -97408,34 +98935,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97408,34 +98935,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97408 .unused,98935 .unused,
97409 },98936 },
97410 .dst_temps = .{ .mem, .unused },98937 .dst_temps = .{ .mem, .unused },
97411 .clobbers = .{ .eflags = true },98938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97412 .each = .{ .once = &.{98939 .each = .{ .once = &.{
97413 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98940 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97414 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },98941 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
97415 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },98942 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
97416 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },98943 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
97417 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },98944 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
97418 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },98945 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
97419 .{ ._, ._l, .sa, .tmp4q, .uia(64, .dst0, .sub_bit_size_rem_64), ._, ._ },98946 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
97425 } },98947 } },
97426 }, .{98948 }, .{
97427 .required_features = .{ .@"64bit", null, null, null },98949 .required_features = .{ .avx, null, null, null },
97428 .src_constraints = .{ .any_scalar_signed_int, .any, .any },98950 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97429 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .xword, .is = .xword } }, .any },98951 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
97430 .patterns = &.{98952 .patterns = &.{
97431 .{ .src = .{ .to_mem, .none, .none } },98953 .{ .src = .{ .to_mem, .none, .none } },
97432 },98954 },
98955 .call_frame = .{ .alignment = .@"16" },
97433 .extra_temps = .{98956 .extra_temps = .{
97434 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97435 .{ .type = .usize, .kind = .{ .reg = .rsi } },98958 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97436 .{ .type = .usize, .kind = .{ .reg = .rdi } },98959 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97437 .{ .type = .u32, .kind = .{ .reg = .ecx } },98960 .{ .type = .i32, .kind = .{ .reg = .eax } },
97438 .{ .type = .u64, .kind = .{ .reg = .rax } },98961 .unused,
97439 .unused,98962 .unused,
97440 .unused,98963 .unused,
97441 .unused,98964 .unused,
...@@ -97444,34 +98967,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97444,34 +98967,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97444 .unused,98967 .unused,
97445 },98968 },
97446 .dst_temps = .{ .mem, .unused },98969 .dst_temps = .{ .mem, .unused },
97447 .clobbers = .{ .eflags = true },98970 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97448 .each = .{ .once = &.{98971 .each = .{ .once = &.{
97449 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },98972 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97450 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },98973 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
97451 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },98974 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },
97452 .{ .@"0:", ._, .mov, .tmp3d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },98975 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
97453 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },98976 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
97454 .{ ._, ._, .mov, .tmp4q, .lea(.tmp1q), ._, ._ },98977 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
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, ._, ._, ._ },
97460 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },98978 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
97461 } },98979 } },
97462 }, .{98980 }, .{
97463 .required_features = .{ .@"64bit", .slow_incdec, null, null },98981 .required_features = .{ .sse2, .slow_incdec, null, null },
97464 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },98982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97465 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },98983 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
97466 .patterns = &.{98984 .patterns = &.{
97467 .{ .src = .{ .to_mem, .none, .none } },98985 .{ .src = .{ .to_mem, .none, .none } },
97468 },98986 },
98987 .call_frame = .{ .alignment = .@"16" },
97469 .extra_temps = .{98988 .extra_temps = .{
97470 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },98989 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97471 .{ .type = .usize, .kind = .{ .reg = .rsi } },98990 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97472 .{ .type = .usize, .kind = .{ .reg = .rdi } },98991 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97473 .{ .type = .u64, .kind = .{ .reg = .rax } },98992 .{ .type = .i32, .kind = .{ .reg = .eax } },
97474 .{ .type = .u32, .kind = .{ .reg = .ecx } },98993 .unused,
97475 .unused,98994 .unused,
97476 .unused,98995 .unused,
97477 .unused,98996 .unused,
...@@ -97480,32 +98999,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97480,32 +98999,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97480 .unused,98999 .unused,
97481 },99000 },
97482 .dst_temps = .{ .mem, .unused },99001 .dst_temps = .{ .mem, .unused },
97483 .clobbers = .{ .eflags = true },99002 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97484 .each = .{ .once = &.{99003 .each = .{ .once = &.{
97485 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99004 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97486 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99005 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
97487 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99006 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
97488 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },99007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
97489 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },99008 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
97490 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99009 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
97491 .{ ._, ._sq, .sto, ._, ._, ._, ._ },99010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97492 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97493 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
97494 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
97495 } },99011 } },
97496 }, .{99012 }, .{
97497 .required_features = .{ .@"64bit", null, null, null },99013 .required_features = .{ .sse2, null, null, null },
97498 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99014 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97499 .dst_constraints = .{ .{ .scalar_exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },99015 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
97500 .patterns = &.{99016 .patterns = &.{
97501 .{ .src = .{ .to_mem, .none, .none } },99017 .{ .src = .{ .to_mem, .none, .none } },
97502 },99018 },
99019 .call_frame = .{ .alignment = .@"16" },
97503 .extra_temps = .{99020 .extra_temps = .{
97504 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97505 .{ .type = .usize, .kind = .{ .reg = .rsi } },99022 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97506 .{ .type = .usize, .kind = .{ .reg = .rdi } },99023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97507 .{ .type = .u64, .kind = .{ .reg = .rax } },99024 .{ .type = .i32, .kind = .{ .reg = .eax } },
97508 .{ .type = .u32, .kind = .{ .reg = .ecx } },99025 .unused,
97509 .unused,99026 .unused,
97510 .unused,99027 .unused,
97511 .unused,99028 .unused,
...@@ -97514,32 +99031,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97514,32 +99031,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97514 .unused,99031 .unused,
97515 },99032 },
97516 .dst_temps = .{ .mem, .unused },99033 .dst_temps = .{ .mem, .unused },
97517 .clobbers = .{ .eflags = true },99034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97518 .each = .{ .once = &.{99035 .each = .{ .once = &.{
97519 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99036 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97520 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99037 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
97521 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99038 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
97522 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },99039 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
97523 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },99040 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
97524 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99041 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
97525 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97526 .{ ._, ._, .add, .tmp1p, .sa2(.src0, .dst0, .add_delta_elem_size), ._, ._ },
97527 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97528 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },99042 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
97529 } },99043 } },
97530 }, .{99044 }, .{
97531 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },99045 .required_features = .{ .sse, .slow_incdec, null, null },
97532 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99046 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97533 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },99047 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
97534 .patterns = &.{99048 .patterns = &.{
97535 .{ .src = .{ .to_mem, .none, .none } },99049 .{ .src = .{ .to_mem, .none, .none } },
97536 },99050 },
99051 .call_frame = .{ .alignment = .@"16" },
97537 .extra_temps = .{99052 .extra_temps = .{
97538 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99053 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97539 .{ .type = .usize, .kind = .{ .reg = .rsi } },99054 .{ .type = .i32, .kind = .{ .reg = .eax } },
97540 .{ .type = .usize, .kind = .{ .reg = .rdi } },99055 .{ .type = .f32, .kind = .mem },
97541 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },99056 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97542 .{ .type = .u32, .kind = .{ .reg = .ecx } },99057 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97543 .unused,99058 .unused,
97544 .unused,99059 .unused,
97545 .unused,99060 .unused,
...@@ -97548,35 +99063,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97548,35 +99063,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97548 .unused,99063 .unused,
97549 },99064 },
97550 .dst_temps = .{ .mem, .unused },99065 .dst_temps = .{ .mem, .unused },
97551 .clobbers = .{ .eflags = true },99066 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97552 .each = .{ .once = &.{99067 .each = .{ .once = &.{
97553 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99068 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97554 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99069 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
97555 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99070 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
97556 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },99071 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
97557 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },99072 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
97558 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99073 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
97559 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },99074 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
97560 .{ ._, ._, .mov, .lea(.tmp2q), .tmp4q, ._, ._ },99075 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
97566 } },99076 } },
97567 }, .{99077 }, .{
97568 .required_features = .{ .@"64bit", .bmi2, null, null },99078 .required_features = .{ .sse, null, null, null },
97569 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99079 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97570 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },99080 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
97571 .patterns = &.{99081 .patterns = &.{
97572 .{ .src = .{ .to_mem, .none, .none } },99082 .{ .src = .{ .to_mem, .none, .none } },
97573 },99083 },
99084 .call_frame = .{ .alignment = .@"16" },
97574 .extra_temps = .{99085 .extra_temps = .{
97575 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99086 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97576 .{ .type = .usize, .kind = .{ .reg = .rsi } },99087 .{ .type = .i32, .kind = .{ .reg = .eax } },
97577 .{ .type = .usize, .kind = .{ .reg = .rdi } },99088 .{ .type = .f32, .kind = .mem },
97578 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },99089 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97579 .{ .type = .u32, .kind = .{ .reg = .ecx } },99090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97580 .unused,99091 .unused,
97581 .unused,99092 .unused,
97582 .unused,99093 .unused,
...@@ -97585,71 +99096,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97585,71 +99096,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97585 .unused,99096 .unused,
97586 },99097 },
97587 .dst_temps = .{ .mem, .unused },99098 .dst_temps = .{ .mem, .unused },
97588 .clobbers = .{ .eflags = true },99099 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97589 .each = .{ .once = &.{99100 .each = .{ .once = &.{
97590 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99101 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
97591 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99102 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
97592 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99103 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },
97593 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },99104 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },
97594 .{ .@"0:", ._, .mov, .tmp4d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },99105 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
97595 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99106 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
97596 .{ ._, ._, .bzhi, .tmp4q, .lea(.tmp1q), .tmp3q, ._ },99107 .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ },
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, ._, ._, ._ },
97602 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },99108 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
97603 } },99109 } },
97604 }, .{99110 }, .{
97605 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },99111 .required_features = .{ .f16c, null, null, null },
97606 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99112 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
97607 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },99113 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },
97608 .patterns = &.{99114 .patterns = &.{
97609 .{ .src = .{ .to_mem, .none, .none } },99115 .{ .src = .{ .mem, .none, .none } },
99116 .{ .src = .{ .to_sse, .none, .none } },
97610 },99117 },
97611 .extra_temps = .{99118 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
97612 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99119 .each = .{ .once = &.{
97613 .{ .type = .usize, .kind = .{ .reg = .rsi } },99120 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
97614 .{ .type = .usize, .kind = .{ .reg = .rdi } },99121 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
97615 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },99122 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
97616 .{ .type = .u32, .kind = .{ .reg = .ecx } },99123 } },
97617 .{ .type = .u64, .kind = .{ .reg = .rax } },99124 }, .{
97618 .unused,99125 .required_features = .{ .f16c, null, null, null },
97619 .unused,99126 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
97620 .unused,99127 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
97621 .unused,99128 .patterns = &.{
97622 .unused,99129 .{ .src = .{ .mem, .none, .none } },
99130 .{ .src = .{ .to_sse, .none, .none } },
97623 },99131 },
97624 .dst_temps = .{ .mem, .unused },99132 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
97625 .clobbers = .{ .eflags = true },
97626 .each = .{ .once = &.{99133 .each = .{ .once = &.{
97627 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99134 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
97628 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99135 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
97629 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99136 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
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", ._, ._, ._ },
97638 } },99137 } },
97639 }, .{99138 }, .{
97640 .required_features = .{ .@"64bit", .bmi2, null, null },99139 .required_features = .{ .f16c, null, null, null },
97641 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99140 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
97642 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },99141 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
97643 .patterns = &.{99142 .patterns = &.{
97644 .{ .src = .{ .to_mem, .none, .none } },99143 .{ .src = .{ .to_mem, .none, .none } },
97645 },99144 },
97646 .extra_temps = .{99145 .extra_temps = .{
97647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99146 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97648 .{ .type = .usize, .kind = .{ .reg = .rsi } },99147 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
97649 .{ .type = .usize, .kind = .{ .reg = .rdi } },99148 .unused,
97650 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },99149 .unused,
97651 .{ .type = .u32, .kind = .{ .reg = .ecx } },99150 .unused,
97652 .{ .type = .u64, .kind = .{ .reg = .rax } },99151 .unused,
97653 .unused,99152 .unused,
97654 .unused,99153 .unused,
97655 .unused,99154 .unused,
...@@ -97657,32 +99156,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97657,32 +99156,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97657 .unused,99156 .unused,
97658 },99157 },
97659 .dst_temps = .{ .mem, .unused },99158 .dst_temps = .{ .mem, .unused },
97660 .clobbers = .{ .eflags = true },
97661 .each = .{ .once = &.{99159 .each = .{ .once = &.{
97662 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
97663 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99161 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
97664 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99162 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
97665 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size_rem_64), ._, ._ },99163 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
97666 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },99164 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
97667 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99165 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97668 .{ ._, ._, .bzhi, .tmp5q, .lea(.tmp1q), .tmp3q, ._ },99166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
97669 .{ ._, ._sq, .sto, ._, ._, ._, ._ },
97670 .{ ._, ._, .add, .tmp1p, .sia2(8, .src0, .dst0, .add_delta_elem_size), ._, ._ },
97671 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
97672 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
97673 } },99167 } },
97674 }, .{99168 }, .{
97675 .required_features = .{ .@"64bit", .slow_incdec, null, null },99169 .required_features = .{ .f16c, null, null, null },
97676 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99170 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
97677 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },99171 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
97678 .patterns = &.{99172 .patterns = &.{
97679 .{ .src = .{ .to_mem, .none, .none } },99173 .{ .src = .{ .to_mem, .none, .none } },
97680 },99174 },
97681 .extra_temps = .{99175 .extra_temps = .{
97682 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97683 .{ .type = .usize, .kind = .{ .reg = .rsi } },99177 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
97684 .{ .type = .usize, .kind = .{ .reg = .rdi } },99178 .unused,
97685 .{ .type = .u32, .kind = .{ .reg = .ecx } },99179 .unused,
97686 .unused,99180 .unused,
97687 .unused,99181 .unused,
97688 .unused,99182 .unused,
...@@ -97692,34 +99186,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97692,34 +99186,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97692 .unused,99186 .unused,
97693 },99187 },
97694 .dst_temps = .{ .mem, .unused },99188 .dst_temps = .{ .mem, .unused },
97695 .clobbers = .{ .eflags = true },
97696 .each = .{ .once = &.{99189 .each = .{ .once = &.{
97697 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99190 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
97698 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99191 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
97699 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99192 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
97700 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },99193 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
97701 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99194 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
97702 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },99195 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
97703 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },99196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
97710 } },99197 } },
97711 }, .{99198 }, .{
97712 .required_features = .{ .@"64bit", null, null, null },99199 .required_features = .{ .avx, null, null, null },
97713 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99200 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97714 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },99201 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
97715 .patterns = &.{99202 .patterns = &.{
97716 .{ .src = .{ .to_mem, .none, .none } },99203 .{ .src = .{ .to_mem, .none, .none } },
97717 },99204 },
99205 .call_frame = .{ .alignment = .@"16" },
97718 .extra_temps = .{99206 .extra_temps = .{
97719 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97720 .{ .type = .usize, .kind = .{ .reg = .rsi } },99208 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97721 .{ .type = .usize, .kind = .{ .reg = .rdi } },99209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97722 .{ .type = .u32, .kind = .{ .reg = .ecx } },99210 .{ .type = .i32, .kind = .{ .reg = .eax } },
97723 .unused,99211 .unused,
97724 .unused,99212 .unused,
97725 .unused,99213 .unused,
...@@ -97729,35 +99217,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97729,35 +99217,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97729 .unused,99217 .unused,
97730 },99218 },
97731 .dst_temps = .{ .mem, .unused },99219 .dst_temps = .{ .mem, .unused },
97732 .clobbers = .{ .eflags = true },99220 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97733 .each = .{ .once = &.{99221 .each = .{ .once = &.{
97734 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
97735 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99223 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
97736 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99224 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
97737 .{ .@"0:", ._, .mov, .tmp3d, .sia(-2, .dst0, .add_elem_size_div_8), ._, ._ },99225 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
97738 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99226 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
97739 .{ ._, ._, .mov, .tmp3q, .ua(.dst0, .add_umax), ._, ._ },99227 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
97740 .{ ._, ._, .@"and", .tmp3q, .lea(.tmp1q), ._, ._ },99228 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
97747 } },99229 } },
97748 }, .{99230 }, .{
97749 .required_features = .{ .@"64bit", .slow_incdec, null, null },99231 .required_features = .{ .sse2, null, null, null },
97750 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99232 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97751 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },99233 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
97752 .patterns = &.{99234 .patterns = &.{
97753 .{ .src = .{ .to_mem, .none, .none } },99235 .{ .src = .{ .to_mem, .none, .none } },
97754 },99236 },
99237 .call_frame = .{ .alignment = .@"16" },
97755 .extra_temps = .{99238 .extra_temps = .{
97756 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97757 .{ .type = .usize, .kind = .{ .reg = .rsi } },99240 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97758 .{ .type = .usize, .kind = .{ .reg = .rdi } },99241 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97759 .{ .type = .u64, .kind = .{ .reg = .rax } },99242 .{ .type = .i32, .kind = .{ .reg = .eax } },
97760 .{ .type = .u32, .kind = .{ .reg = .ecx } },99243 .unused,
97761 .unused,99244 .unused,
97762 .unused,99245 .unused,
97763 .unused,99246 .unused,
...@@ -97766,858 +99249,1000 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -97766,858 +99249,1000 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
97766 .unused,99249 .unused,
97767 },99250 },
97768 .dst_temps = .{ .mem, .unused },99251 .dst_temps = .{ .mem, .unused },
97769 .clobbers = .{ .eflags = true },99252 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
97770 .each = .{ .once = &.{99253 .each = .{ .once = &.{
97771 .{ ._, ._, .mov, .tmp0d, .sa(.src0, .add_len), ._, ._ },99254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
97772 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },99255 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
97773 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },99256 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
97774 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },99257 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
97775 .{ .@"0:", ._, .mov, .tmp4d, .sia(-1, .dst0, .add_elem_size_div_8), ._, ._ },99258 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
97776 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },99259 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
97777 .{ ._, ._, .mov, .tmp4q, .ua(.dst0, .add_umax), ._, ._ },99260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
97783 } },99261 } },
97784 }, .{99262 }, .{
97785 .required_features = .{ .@"64bit", null, null, null },99263 .required_features = .{ .sse, null, null, null },
97786 .src_constraints = .{ .any_scalar_unsigned_int, .any, .any },99264 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
97787 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },99265 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
97788 .patterns = &.{99266 .patterns = &.{
97789 .{ .src = .{ .to_mem, .none, .none } },99267 .{ .src = .{ .to_mem, .none, .none } },
97790 },99268 },
99269 .call_frame = .{ .alignment = .@"16" },
97791 .extra_temps = .{99270 .extra_temps = .{
97792 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },99271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
97793 .{ .type = .usize, .kind = .{ .reg = .rsi } },99272 .{ .type = .i32, .kind = .{ .reg = .eax } },
97794 .{ .type = .usize, .kind = .{ .reg = .rdi } },99273 .{ .type = .f32, .kind = .mem },
97795 .{ .type = .u64, .kind = .{ .reg = .rax } },99274 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
97796 .{ .type = .u32, .kind = .{ .reg = .ecx } },99275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
97797 .unused,99276 .unused,
97798 .unused,99277 .unused,
97799 .unused,99278 .unused,
97800 .unused,99279 .unused,
97801 .unused,99280 .unused,
97802 .unused,99281 .unused,
97803 },99282 },
97804 .dst_temps = .{ .mem, .unused },99283 .dst_temps = .{ .mem, .unused },
97805 .clobbers = .{ .eflags = true },99284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
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 },
98085 .each = .{ .once = &.{99285 .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", ._, ._, ._ },
98087 } },99294 } },
98088 }, .{99295 }, .{
98089 .required_features = .{ .@"64bit", null, null, null },99296 .required_features = .{ .f16c, null, null, null },
98090 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },99297 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
99298 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
98091 .patterns = &.{99299 .patterns = &.{
98092 .{ .src = .{ .to_gpr, .imm32, .none } },99300 .{ .src = .{ .to_mem, .none, .none } },
98093 },99301 },
98094 .dst_temps = .{ .{ .cc = .c }, .unused },99302 .extra_temps = .{
98095 .clobbers = .{ .eflags = true },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 },
98096 .each = .{ .once = &.{99316 .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", ._, ._, ._ },
98098 } },99323 } },
98099 }, .{99324 }, .{
98100 .required_features = .{ .@"64bit", null, null, null },99325 .required_features = .{ .f16c, null, null, null },
98101 .src_constraints = .{ .{ .bool_vec = .qword }, .any, .any },99326 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99327 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
98102 .patterns = &.{99328 .patterns = &.{
98103 .{ .src = .{ .to_gpr, .to_gpr, .none } },99329 .{ .src = .{ .to_mem, .none, .none } },
98104 },99330 },
98105 .dst_temps = .{ .{ .cc = .c }, .unused },99331 .extra_temps = .{
98106 .clobbers = .{ .eflags = true },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 },
98107 .each = .{ .once = &.{99345 .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", ._, ._, ._ },
98109 } },99354 } },
98110 }, .{99355 }, .{
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 },
98112 .patterns = &.{99359 .patterns = &.{
98113 .{ .src = .{ .to_mem, .imm32, .none } },99360 .{ .src = .{ .to_mem, .none, .none } },
98114 },99361 },
98115 .dst_temps = .{ .{ .cc = .c }, .unused },99362 .call_frame = .{ .alignment = .@"16" },
98116 .clobbers = .{ .eflags = true },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 },
98117 .each = .{ .once = &.{99378 .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", ._, ._, ._ },
98119 } },99386 } },
98120 }, .{99387 }, .{
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 },
98122 .patterns = &.{99391 .patterns = &.{
98123 .{ .src = .{ .to_mem, .to_gpr, .none } },99392 .{ .src = .{ .to_mem, .none, .none } },
98124 },99393 },
98125 .dst_temps = .{ .{ .cc = .c }, .unused },99394 .call_frame = .{ .alignment = .@"16" },
98126 .clobbers = .{ .eflags = true },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 },
98127 .each = .{ .once = &.{99410 .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", ._, ._, ._ },
98129 } },99418 } },
98130 }, .{99419 }, .{
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 },
98132 .patterns = &.{99423 .patterns = &.{
98133 .{ .src = .{ .to_mem, .simm32, .none } },99424 .{ .src = .{ .to_mem, .none, .none } },
98134 },99425 },
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 },
98136 .each = .{ .once = &.{99442 .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", ._, ._, ._ },
98138 } },99450 } },
98139 }, .{99451 }, .{
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 },
98141 .patterns = &.{99455 .patterns = &.{
98142 .{ .src = .{ .to_mem, .to_gpr, .none } },99456 .{ .src = .{ .to_mem, .none, .none } },
98143 },99457 },
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 },
98145 .each = .{ .once = &.{99474 .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", ._, ._, ._ },
98147 } },99482 } },
98148 }, .{99483 }, .{
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 },
98150 .patterns = &.{99487 .patterns = &.{
98151 .{ .src = .{ .to_mem, .simm32, .none } },99488 .{ .src = .{ .to_mem, .none, .none } },
98152 },99489 },
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 },
98154 .each = .{ .once = &.{99506 .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", ._, ._, ._ },
98156 } },99515 } },
98157 }, .{99516 }, .{
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 },
98159 .patterns = &.{99520 .patterns = &.{
98160 .{ .src = .{ .to_mem, .to_gpr, .none } },99521 .{ .src = .{ .to_mem, .none, .none } },
98161 },99522 },
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 },
98163 .each = .{ .once = &.{99539 .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", ._, ._, ._ },
98165 } },99548 } },
98166 }, .{99549 }, .{
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 },
98168 .patterns = &.{99553 .patterns = &.{
98169 .{ .src = .{ .to_mem, .simm32, .none } },99554 .{ .src = .{ .to_mem, .none, .none } },
98170 },99555 },
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 },
98172 .each = .{ .once = &.{99570 .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", ._, ._, ._ },
98174 } },99579 } },
98175 }, .{99580 }, .{
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 },
98177 .patterns = &.{99584 .patterns = &.{
98178 .{ .src = .{ .to_mem, .to_gpr, .none } },99585 .{ .src = .{ .to_mem, .none, .none } },
98179 },99586 },
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 },
98181 .each = .{ .once = &.{99603 .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", ._, ._, ._ },
98183 } },99611 } },
98184 }, .{99612 }, .{
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 },
98186 .patterns = &.{99616 .patterns = &.{
98187 .{ .src = .{ .to_mem, .simm32, .none } },99617 .{ .src = .{ .to_mem, .none, .none } },
98188 },99618 },
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 },
98190 .each = .{ .once = &.{99635 .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", ._, ._, ._ },
98192 } },99643 } },
98193 }, .{99644 }, .{
98194 .required_features = .{ .@"64bit", null, null, null },99645 .required_features = .{ .sse2, null, null, null },
98195 .dst_constraints = .{ .{ .int = .qword }, .any },99646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99647 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98196 .patterns = &.{99648 .patterns = &.{
98197 .{ .src = .{ .to_mem, .to_gpr, .none } },99649 .{ .src = .{ .to_mem, .none, .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);
98251 },99650 },
98252 else => |e| return e,99651 .call_frame = .{ .alignment = .@"16" },
98253 };99652 .extra_temps = .{
98254 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);99653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98255 },99654 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
98256 .slice_elem_val, .ptr_elem_val => |air_tag| if (use_old) switch (air_tag) {99655 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
98257 else => unreachable,99656 .{ .type = .i64, .kind = .{ .reg = .rax } },
98258 .slice_elem_val => try cg.airSliceElemVal(inst),99657 .unused,
98259 .ptr_elem_val => try cg.airPtrElemVal(inst),99658 .unused,
98260 } else {99659 .unused,
98261 const bin_op = air_datas[@intFromEnum(inst)].bin_op;99660 .unused,
98262 const res_ty = cg.typeOf(bin_op.lhs).elemType2(zcu);99661 .unused,
98263 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });99662 .unused,
98264 try ops[0].toSlicePtr(cg);99663 .unused,
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 } },
98270 },99664 },
98271 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },99665 .dst_temps = .{ .mem, .unused },
99666 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98272 .each = .{ .once = &.{99667 .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", ._, ._, ._ },
98274 } },99675 } },
98275 }, .{99676 }, .{
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 },
98277 .patterns = &.{99680 .patterns = &.{
98278 .{ .src = .{ .to_gpr, .to_gpr, .none } },99681 .{ .src = .{ .to_mem, .none, .none } },
98279 },99682 },
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 },
98281 .each = .{ .once = &.{99699 .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", ._, ._, ._ },
98283 } },99707 } },
98284 }, .{99708 }, .{
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 },
98286 .patterns = &.{99712 .patterns = &.{
98287 .{ .src = .{ .to_gpr, .simm32, .none } },99713 .{ .src = .{ .to_mem, .none, .none } },
98288 },99714 },
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 },
98290 .each = .{ .once = &.{99731 .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", ._, ._, ._ },
98292 } },99740 } },
98293 }, .{99741 }, .{
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 },
98295 .patterns = &.{99745 .patterns = &.{
98296 .{ .src = .{ .to_gpr, .to_gpr, .none } },99746 .{ .src = .{ .to_mem, .none, .none } },
98297 },99747 },
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 },
98299 .each = .{ .once = &.{99764 .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", ._, ._, ._ },
98301 } },99773 } },
98302 }, .{99774 }, .{
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 },
98304 .patterns = &.{99778 .patterns = &.{
98305 .{ .src = .{ .to_gpr, .simm32, .none } },99779 .{ .src = .{ .to_mem, .none, .none } },
98306 },99780 },
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 },
98308 .each = .{ .once = &.{99797 .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", ._, ._, ._ },
98310 } },99806 } },
98311 }, .{99807 }, .{
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 },
98313 .patterns = &.{99811 .patterns = &.{
98314 .{ .src = .{ .to_gpr, .to_gpr, .none } },99812 .{ .src = .{ .to_mem, .none, .none } },
98315 },99813 },
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 },
98317 .each = .{ .once = &.{99830 .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", ._, ._, ._ },
98319 } },99839 } },
98320 }, .{99840 }, .{
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 },
98322 .patterns = &.{99844 .patterns = &.{
98323 .{ .src = .{ .to_gpr, .simm32, .none } },99845 .{ .src = .{ .to_mem, .none, .none } },
98324 },99846 },
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 },
98326 .each = .{ .once = &.{99863 .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", ._, ._, ._ },
98328 } },99872 } },
98329 }, .{99873 }, .{
98330 .required_features = .{ .@"64bit", null, null, null },99874 .required_features = .{ .sse2, null, null, null },
98331 .dst_constraints = .{ .{ .int = .qword }, .any },99875 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
99876 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
98332 .patterns = &.{99877 .patterns = &.{
98333 .{ .src = .{ .to_gpr, .to_gpr, .none } },99878 .{ .src = .{ .to_mem, .none, .none } },
98334 },99879 },
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 },
98336 .each = .{ .once = &.{99896 .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", ._, ._, ._ },
98338 } },99905 } },
98339 } }) catch |err| switch (err) {99906 }, .{
98340 error.SelectFailed => {99907 .required_features = .{ .sse, null, null, null },
98341 const elem_size = res_ty.abiSize(zcu);99908 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98342 while (true) for (&ops) |*op| {99909 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
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 },
98451 .patterns = &.{99910 .patterns = &.{
98452 .{ .src = .{ .to_sse, .none, .none } },99911 .{ .src = .{ .to_mem, .none, .none } },
98453 },99912 },
99913 .call_frame = .{ .alignment = .@"16" },
98454 .extra_temps = .{99914 .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 } },
98456 .unused,99921 .unused,
98457 .unused,99922 .unused,
98458 .unused,99923 .unused,
98459 .unused,99924 .unused,
98460 .unused,99925 .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 } },
98461 .unused,99955 .unused,
98462 .unused,99956 .unused,
98463 .unused,99957 .unused,
98464 .unused,99958 .unused,
98465 .unused,99959 .unused,
98466 },99960 },
98467 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },99961 .dst_temps = .{ .mem, .unused },
99962 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98468 .each = .{ .once = &.{99963 .each = .{ .once = &.{
98469 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },99964 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
98470 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },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", ._, ._, ._ },
98471 } },99973 } },
98472 }, .{99974 }, .{
98473 .required_features = .{ .@"64bit", .f16c, null, null },99975 .required_features = .{ .@"64bit", .avx, null, null },
98474 .src_constraints = .{ .{ .float = .word }, .any, .any },99976 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98475 .dst_constraints = .{ .{ .signed_int = .qword }, .any },99977 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
98476 .patterns = &.{99978 .patterns = &.{
98477 .{ .src = .{ .to_sse, .none, .none } },99979 .{ .src = .{ .to_mem, .none, .none } },
98478 },99980 },
99981 .call_frame = .{ .alignment = .@"16" },
98479 .extra_temps = .{99982 .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" } } },
98481 .unused,99989 .unused,
98482 .unused,99990 .unused,
98483 .unused,99991 .unused,
98484 .unused,99992 .unused,
98485 .unused,99993 .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" } } },
98486 .unused,100024 .unused,
98487 .unused,100025 .unused,
98488 .unused,100026 .unused,
98489 .unused,100027 .unused,
98490 .unused,100028 .unused,
98491 },100029 },
98492 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },100030 .dst_temps = .{ .mem, .unused },
100031 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98493 .each = .{ .once = &.{100032 .each = .{ .once = &.{
98494 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },100033 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
98495 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },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", ._, ._, ._ },
98496 } },100043 } },
98497 }, .{100044 }, .{
98498 .required_features = .{ .@"64bit", .f16c, null, null },100045 .required_features = .{ .@"64bit", .sse2, null, null },
98499 .src_constraints = .{ .{ .float = .word }, .any, .any },100046 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98500 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },100047 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
98501 .patterns = &.{100048 .patterns = &.{
98502 .{ .src = .{ .to_sse, .none, .none } },100049 .{ .src = .{ .to_mem, .none, .none } },
98503 },100050 },
100051 .call_frame = .{ .alignment = .@"16" },
98504 .extra_temps = .{100052 .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" } } },
98506 .unused,100059 .unused,
98507 .unused,100060 .unused,
98508 .unused,100061 .unused,
98509 .unused,100062 .unused,
98510 .unused,100063 .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" } } },
98511 .unused,100094 .unused,
98512 .unused,100095 .unused,
98513 .unused,100096 .unused,
98514 .unused,100097 .unused,
98515 .unused,100098 .unused,
98516 },100099 },
98517 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },100100 .dst_temps = .{ .mem, .unused },
100101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98518 .each = .{ .once = &.{100102 .each = .{ .once = &.{
98519 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },100103 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
98520 .{ ._, .v_, .cvttss2si, .dst0d, .tmp0d, ._, ._ },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", ._, ._, ._ },
98521 } },100113 } },
98522 }, .{100114 }, .{
98523 .required_features = .{ .@"64bit", .f16c, null, null },100115 .required_features = .{ .@"64bit", .sse, null, null },
98524 .src_constraints = .{ .{ .float = .word }, .any, .any },100116 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
98525 .dst_constraints = .{ .{ .signed_int = .xword }, .any },100117 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
98526 .patterns = &.{100118 .patterns = &.{
98527 .{ .src = .{ .to_sse, .none, .none } },100119 .{ .src = .{ .to_mem, .none, .none } },
98528 },100120 },
100121 .call_frame = .{ .alignment = .@"16" },
98529 .extra_temps = .{100122 .extra_temps = .{
98530 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },100123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98531 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },100124 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
98532 .unused,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" } } },
98533 .unused,100130 .unused,
98534 .unused,100131 .unused,
98535 .unused,100132 .unused,
98536 .unused,100133 .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" } } },
98537 .unused,100166 .unused,
98538 .unused,100167 .unused,
98539 .unused,100168 .unused,
98540 .unused,100169 .unused,
98541 },100170 },
98542 .dst_temps = .{ .mem, .unused },100171 .dst_temps = .{ .mem, .unused },
98543 .clobbers = .{ .eflags = true },100172 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98544 .each = .{ .once = &.{100173 .each = .{ .once = &.{
98545 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },100174 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
98546 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },100175 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
98547 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },100176 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
98548 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },100177 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
98549 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp1q, ._, ._ },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", ._, ._, ._ },
98550 } },100185 } },
98551 }, .{100186 }, .{
98552 .required_features = .{ .@"64bit", .f16c, null, null },100187 .required_features = .{ .avx, null, null, null },
98553 .src_constraints = .{ .{ .float = .word }, .any, .any },100188 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98554 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },100189 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
98555 .patterns = &.{100190 .patterns = &.{
100191 .{ .src = .{ .mem, .none, .none } },
98556 .{ .src = .{ .to_sse, .none, .none } },100192 .{ .src = .{ .to_sse, .none, .none } },
98557 },100193 },
98558 .extra_temps = .{100194 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98559 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },100195 .each = .{ .once = &.{
98560 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },100196 .{ ._, .v_, .cvttss2si, .dst0d, .src0d, ._, ._ },
98561 .unused,100197 } },
98562 .unused,100198 }, .{
98563 .unused,100199 .required_features = .{ .sse, null, null, null },
98564 .unused,100200 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98565 .unused,100201 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
98566 .unused,100202 .patterns = &.{
98567 .unused,100203 .{ .src = .{ .mem, .none, .none } },
98568 .unused,100204 .{ .src = .{ .to_sse, .none, .none } },
98569 .unused,
98570 },100205 },
98571 .dst_temps = .{ .mem, .unused },100206 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98572 .each = .{ .once = &.{100207 .each = .{ .once = &.{
98573 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },100208 .{ ._, ._, .cvttss2si, .dst0d, .src0d, ._, ._ },
98574 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },
98575 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98576 .{ ._, ._, .mov, .memd(.dst0q, 8), .si(0), ._, ._ },
98577 } },100209 } },
98578 }, .{100210 }, .{
98579 .required_features = .{ .@"64bit", .f16c, null, null },100211 .required_features = .{ .@"64bit", .avx, null, null },
98580 .src_constraints = .{ .{ .float = .word }, .any, .any },100212 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98581 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },100213 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
98582 .patterns = &.{100214 .patterns = &.{
100215 .{ .src = .{ .mem, .none, .none } },
98583 .{ .src = .{ .to_sse, .none, .none } },100216 .{ .src = .{ .to_sse, .none, .none } },
98584 },100217 },
98585 .extra_temps = .{100218 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98586 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },100219 .each = .{ .once = &.{
98587 .{ .type = .i64, .kind = .{ .reg = .rax } },100220 .{ ._, .v_, .cvttss2si, .dst0q, .src0d, ._, ._ },
98588 .{ .type = .usize, .kind = .{ .reg = .rdi } },100221 } },
98589 .{ .type = .u32, .kind = .{ .reg = .ecx } },100222 }, .{
98590 .unused,100223 .required_features = .{ .@"64bit", .sse, null, null },
98591 .unused,100224 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98592 .unused,100225 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
98593 .unused,100226 .patterns = &.{
98594 .unused,100227 .{ .src = .{ .mem, .none, .none } },
98595 .unused,100228 .{ .src = .{ .to_sse, .none, .none } },
98596 .unused,
98597 },100229 },
98598 .dst_temps = .{ .mem, .unused },100230 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98599 .clobbers = .{ .eflags = true },
98600 .each = .{ .once = &.{100231 .each = .{ .once = &.{
98601 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },100232 .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ },
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, ._, ._, ._, ._ },
98608 } },100233 } },
98609 }, .{100234 }, .{
98610 .required_features = .{ .@"64bit", .f16c, null, null },100235 .required_features = .{ .@"64bit", .avx, null, null },
98611 .src_constraints = .{ .{ .float = .word }, .any, .any },100236 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98612 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },100237 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
98613 .patterns = &.{100238 .patterns = &.{
98614 .{ .src = .{ .to_sse, .none, .none } },100239 .{ .src = .{ .to_sse, .none, .none } },
98615 },100240 },
98616 .extra_temps = .{100241 .extra_temps = .{
98617 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },100242 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
98618 .{ .type = .i64, .kind = .{ .reg = .rax } },100243 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98619 .{ .type = .usize, .kind = .{ .reg = .rdi } },100244 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98620 .{ .type = .u32, .kind = .{ .reg = .ecx } },100245 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
98621 .unused,100246 .unused,
98622 .unused,100247 .unused,
98623 .unused,100248 .unused,
...@@ -98626,29 +100251,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98626,29 +100251,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98626 .unused,100251 .unused,
98627 .unused,100252 .unused,
98628 },100253 },
98629 .dst_temps = .{ .mem, .unused },100254 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98630 .clobbers = .{ .eflags = true },100255 .clobbers = .{ .eflags = true },
98631 .each = .{ .once = &.{100256 .each = .{ .once = &.{
98632 .{ ._, .v_ps, .cvtph2, .tmp0x, .src0q, ._, ._ },100257 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
98633 .{ ._, .v_, .cvttss2si, .tmp1q, .tmp0d, ._, ._ },100258 .{ ._, .v_, .cvttss2si, .tmp2q, .src0d, ._, ._ },
98634 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },100259 .{ ._, .v_ss, .sub, .tmp0x, .src0x, .lea(.tmp1d), ._ },
98635 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },100260 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },
98636 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },100261 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },
98637 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },100262 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
98638 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },100263 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },
100264 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },
98639 } },100265 } },
98640 }, .{100266 }, .{
98641 .required_features = .{ .sse, null, null, null },100267 .required_features = .{ .@"64bit", .sse, null, null },
98642 .src_constraints = .{ .{ .float = .word }, .any, .any },100268 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98643 .dst_constraints = .{ .{ .signed_int = .dword }, .any },100269 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
98644 .patterns = &.{100270 .patterns = &.{
98645 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100271 .{ .src = .{ .to_mut_sse, .none, .none } },
98646 },100272 },
98647 .call_frame = .{ .alignment = .@"16" },
98648 .extra_temps = .{100273 .extra_temps = .{
98649 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100274 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98650 .unused,100275 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98651 .unused,100276 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },
98652 .unused,100277 .unused,
98653 .unused,100278 .unused,
98654 .unused,100279 .unused,
...@@ -98658,21 +100283,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98658,21 +100283,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98658 .unused,100283 .unused,
98659 .unused,100284 .unused,
98660 },100285 },
98661 .dst_temps = .{ .{ .reg = .eax }, .unused },100286 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
98662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100287 .clobbers = .{ .eflags = true },
98663 .each = .{ .once = &.{100288 .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, ._, ._ },
98665 } },100297 } },
98666 }, .{100298 }, .{
98667 .required_features = .{ .sse, null, null, null },100299 .required_features = .{ .@"64bit", .sse, null, null },
98668 .src_constraints = .{ .{ .float = .word }, .any, .any },100300 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98669 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },100301 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
98670 .patterns = &.{100302 .patterns = &.{
98671 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100303 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98672 },100304 },
98673 .call_frame = .{ .alignment = .@"16" },100305 .call_frame = .{ .alignment = .@"16" },
98674 .extra_temps = .{100306 .extra_temps = .{
98675 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },100307 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
98676 .unused,100308 .unused,
98677 .unused,100309 .unused,
98678 .unused,100310 .unused,
...@@ -98684,21 +100316,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98684,21 +100316,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98684 .unused,100316 .unused,
98685 .unused,100317 .unused,
98686 },100318 },
98687 .dst_temps = .{ .{ .reg = .eax }, .unused },100319 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
98688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98689 .each = .{ .once = &.{100321 .each = .{ .once = &.{
98690 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },100322 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98691 } },100323 } },
98692 }, .{100324 }, .{
98693 .required_features = .{ .@"64bit", .sse, null, null },100325 .required_features = .{ .@"64bit", .sse, null, null },
98694 .src_constraints = .{ .{ .float = .word }, .any, .any },100326 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98695 .dst_constraints = .{ .{ .signed_int = .qword }, .any },100327 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
98696 .patterns = &.{100328 .patterns = &.{
98697 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100329 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98698 },100330 },
98699 .call_frame = .{ .alignment = .@"16" },100331 .call_frame = .{ .alignment = .@"16" },
98700 .extra_temps = .{100332 .extra_temps = .{
98701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },100333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98702 .unused,100334 .unused,
98703 .unused,100335 .unused,
98704 .unused,100336 .unused,
...@@ -98710,100 +100342,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98710,100 +100342,146 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98710 .unused,100342 .unused,
98711 .unused,100343 .unused,
98712 },100344 },
98713 .dst_temps = .{ .{ .reg = .rax }, .unused },100345 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
98714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100346 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98715 .each = .{ .once = &.{100347 .each = .{ .once = &.{
98716 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },100348 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98717 } },100349 } },
98718 }, .{100350 }, .{
98719 .required_features = .{ .@"64bit", .sse, null, null },100351 .required_features = .{ .@"64bit", .avx, null, null },
98720 .src_constraints = .{ .{ .float = .word }, .any, .any },100352 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98721 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },100353 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98722 .patterns = &.{100354 .patterns = &.{
98723 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100355 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98724 },100356 },
98725 .call_frame = .{ .alignment = .@"16" },100357 .call_frame = .{ .alignment = .@"16" },
98726 .extra_temps = .{100358 .extra_temps = .{
98727 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },100359 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98728 .unused,100360 .{ .type = .i64, .kind = .{ .reg = .rax } },
98729 .unused,100361 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
98730 .unused,100362 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98731 .unused,100363 .{ .type = .i64, .kind = .{ .reg = .rdx } },
98732 .unused,100364 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98733 .unused,100365 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98734 .unused,100366 .unused,
98735 .unused,100367 .unused,
98736 .unused,100368 .unused,
98737 .unused,100369 .unused,
98738 },100370 },
98739 .dst_temps = .{ .{ .reg = .rax }, .unused },100371 .dst_temps = .{ .mem, .unused },
98740 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98741 .each = .{ .once = &.{100373 .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, ._, ._, ._, ._ },
98743 } },100390 } },
98744 }, .{100391 }, .{
98745 .required_features = .{ .@"64bit", .sse, null, null },100392 .required_features = .{ .@"64bit", .sse2, null, null },
98746 .src_constraints = .{ .{ .float = .word }, .any, .any },100393 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98747 .dst_constraints = .{ .{ .signed_int = .xword }, .any },100394 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98748 .patterns = &.{100395 .patterns = &.{
98749 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100396 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98750 },100397 },
98751 .call_frame = .{ .alignment = .@"16" },100398 .call_frame = .{ .alignment = .@"16" },
98752 .extra_temps = .{100399 .extra_temps = .{
98753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },100400 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
98754 .unused,100401 .{ .type = .i64, .kind = .{ .reg = .rax } },
98755 .unused,100402 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
98756 .unused,100403 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98757 .unused,100404 .{ .type = .i64, .kind = .{ .reg = .rdx } },
98758 .unused,100405 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98759 .unused,100406 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98760 .unused,100407 .unused,
98761 .unused,100408 .unused,
98762 .unused,100409 .unused,
98763 .unused,100410 .unused,
98764 },100411 },
98765 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },100412 .dst_temps = .{ .mem, .unused },
98766 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100413 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98767 .each = .{ .once = &.{100414 .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, ._, ._, ._, ._ },
98769 } },100431 } },
98770 }, .{100432 }, .{
98771 .required_features = .{ .@"64bit", .sse, null, null },100433 .required_features = .{ .@"64bit", .sse, null, null },
98772 .src_constraints = .{ .{ .float = .word }, .any, .any },100434 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98773 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },100435 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },
98774 .patterns = &.{100436 .patterns = &.{
98775 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100437 .{ .src = .{ .to_mem, .none, .none } },
98776 },100438 },
98777 .call_frame = .{ .alignment = .@"16" },100439 .call_frame = .{ .alignment = .@"16" },
98778 .extra_temps = .{100440 .extra_temps = .{
98779 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },100441 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
98780 .unused,100442 .{ .type = .i64, .kind = .{ .reg = .rax } },
98781 .unused,100443 .{ .type = .vector_4_f32, .kind = .{ .smax_mem = .{} } },
98782 .unused,100444 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98783 .unused,100445 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98784 .unused,100446 .{ .type = .i64, .kind = .{ .reg = .rdx } },
98785 .unused,100447 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98786 .unused,100448 .unused,
98787 .unused,100449 .unused,
98788 .unused,100450 .unused,
98789 .unused,100451 .unused,
98790 },100452 },
98791 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },100453 .dst_temps = .{ .mem, .unused },
98792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100454 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98793 .each = .{ .once = &.{100455 .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, ._, ._, ._, ._ },
98795 } },100472 } },
98796 }, .{100473 }, .{
98797 .required_features = .{ .@"64bit", .sse, null, null },100474 .required_features = .{ .@"64bit", .sse, null, null },
98798 .src_constraints = .{ .{ .float = .word }, .any, .any },100475 .src_constraints = .{ .{ .float = .dword }, .any, .any },
98799 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },100476 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
98800 .patterns = &.{100477 .patterns = &.{
98801 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100478 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
98802 },100479 },
98803 .call_frame = .{ .alignment = .@"16" },100480 .call_frame = .{ .alignment = .@"16" },
98804 .extra_temps = .{100481 .extra_temps = .{
98805 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },100482 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
98806 .{ .type = .i64, .kind = .{ .reg = .rax } },100483 .{ .type = .i64, .kind = .{ .reg = .rax } },
100484 .{ .type = .i64, .kind = .{ .reg = .rdx } },
98807 .{ .type = .usize, .kind = .{ .reg = .rdi } },100485 .{ .type = .usize, .kind = .{ .reg = .rdi } },
98808 .{ .type = .u32, .kind = .{ .reg = .ecx } },100486 .{ .type = .u32, .kind = .{ .reg = .ecx } },
98809 .unused,100487 .unused,
...@@ -98812,31 +100490,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98812,31 +100490,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98812 .unused,100490 .unused,
98813 .unused,100491 .unused,
98814 .unused,100492 .unused,
98815 .unused,
98816 },100493 },
98817 .dst_temps = .{ .mem, .unused },100494 .dst_temps = .{ .mem, .unused },
98818 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100495 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98819 .each = .{ .once = &.{100496 .each = .{ .once = &.{
98820 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },100497 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
98821 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },100498 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },
98822 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },100499 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ },
98823 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },100500 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
98824 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },100501 .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ },
100502 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
98825 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },100503 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
98826 } },100504 } },
98827 }, .{100505 }, .{
98828 .required_features = .{ .@"64bit", .sse, null, null },100506 .required_features = .{ .avx, null, null, null },
98829 .src_constraints = .{ .{ .float = .word }, .any, .any },100507 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
98830 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },100508 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
98831 .patterns = &.{100509 .patterns = &.{
98832 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },100510 .{ .src = .{ .mem, .none, .none } },
100511 .{ .src = .{ .to_sse, .none, .none } },
98833 },100512 },
98834 .call_frame = .{ .alignment = .@"16" },
98835 .extra_temps = .{100513 .extra_temps = .{
98836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },100514 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
98837 .{ .type = .i64, .kind = .{ .reg = .rax } },100515 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
98838 .{ .type = .usize, .kind = .{ .reg = .rdi } },100516 .unused,
98839 .{ .type = .u32, .kind = .{ .reg = .ecx } },100517 .unused,
98840 .unused,100518 .unused,
98841 .unused,100519 .unused,
98842 .unused,100520 .unused,
...@@ -98845,19 +100523,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98845,19 +100523,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98845 .unused,100523 .unused,
98846 .unused,100524 .unused,
98847 },100525 },
98848 .dst_temps = .{ .mem, .unused },100526 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98849 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98850 .each = .{ .once = &.{100527 .each = .{ .once = &.{
98851 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },100528 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98852 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },100529 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
98853 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },100530 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
98854 .{ ._, ._, .lea, .tmp2p, .memd(.dst0, 8), ._, ._ },
98855 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
98856 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
98857 } },100531 } },
98858 }, .{100532 }, .{
98859 .required_features = .{ .f16c, null, null, null },100533 .required_features = .{ .ssse3, null, null, null },
98860 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },100534 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
98861 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },100535 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
98862 .patterns = &.{100536 .patterns = &.{
98863 .{ .src = .{ .mem, .none, .none } },100537 .{ .src = .{ .mem, .none, .none } },
...@@ -98879,13 +100553,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98879,13 +100553,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98879 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },100553 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
98880 .each = .{ .once = &.{100554 .each = .{ .once = &.{
98881 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },100555 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98882 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },100556 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
98883 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },100557 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
98884 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
98885 } },100558 } },
98886 }, .{100559 }, .{
98887 .required_features = .{ .f16c, null, null, null },100560 .required_features = .{ .avx, null, null, null },
98888 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },100561 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
98889 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },100562 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
98890 .patterns = &.{100563 .patterns = &.{
98891 .{ .src = .{ .to_mem, .none, .none } },100564 .{ .src = .{ .to_mem, .none, .none } },
...@@ -98908,26 +100581,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98908,26 +100581,55 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98908 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },100581 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98909 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },100582 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
98910 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100583 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98911 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },100584 .{ .@"0:", .v_, .cvttps2dq, .tmp3x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
98912 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
98913 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },100585 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
98914 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },100586 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
98915 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },100587 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
98916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98917 } },100589 } },
98918 }, .{100590 }, .{
98919 .required_features = .{ .avx, .slow_incdec, null, null },100591 .required_features = .{ .ssse3, null, null, null },
98920 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },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 },
98921 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },100624 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
98922 .patterns = &.{100625 .patterns = &.{
98923 .{ .src = .{ .to_mem, .none, .none } },100626 .{ .src = .{ .to_mem, .none, .none } },
98924 },100627 },
98925 .call_frame = .{ .alignment = .@"16" },
98926 .extra_temps = .{100628 .extra_temps = .{
98927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98928 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100630 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
98929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100631 .unused,
98930 .{ .type = .i32, .kind = .{ .reg = .eax } },100632 .unused,
98931 .unused,100633 .unused,
98932 .unused,100634 .unused,
98933 .unused,100635 .unused,
...@@ -98937,29 +100639,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98937,29 +100639,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98937 .unused,100639 .unused,
98938 },100640 },
98939 .dst_temps = .{ .mem, .unused },100641 .dst_temps = .{ .mem, .unused },
98940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98941 .each = .{ .once = &.{100642 .each = .{ .once = &.{
98942 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100643 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98943 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },100644 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
98944 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },100645 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
98945 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
98946 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
98947 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },100646 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
98948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100647 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
98949 } },100648 } },
98950 }, .{100649 }, .{
98951 .required_features = .{ .avx, null, null, null },100650 .required_features = .{ .sse, null, null, null },
98952 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },100651 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
98953 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },100652 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
98954 .patterns = &.{100653 .patterns = &.{
98955 .{ .src = .{ .to_mem, .none, .none } },100654 .{ .src = .{ .to_mem, .none, .none } },
98956 },100655 },
98957 .call_frame = .{ .alignment = .@"16" },
98958 .extra_temps = .{100656 .extra_temps = .{
98959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100657 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98960 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100658 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
98961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100659 .unused,
98962 .{ .type = .i32, .kind = .{ .reg = .eax } },100660 .unused,
98963 .unused,100661 .unused,
98964 .unused,100662 .unused,
98965 .unused,100663 .unused,
...@@ -98969,19 +100667,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98969,19 +100667,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98969 .unused,100667 .unused,
98970 },100668 },
98971 .dst_temps = .{ .mem, .unused },100669 .dst_temps = .{ .mem, .unused },
98972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
98973 .each = .{ .once = &.{100670 .each = .{ .once = &.{
98974 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100671 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98975 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },100672 .{ .@"0:", ._, .cvttss2si, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
98976 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0) },100673 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
98977 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
98978 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
98979 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },100674 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
98980 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },100675 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
98981 } },100676 } },
98982 }, .{100677 }, .{
98983 .required_features = .{ .sse2, .slow_incdec, null, null },100678 .required_features = .{ .avx, .slow_incdec, null, null },
98984 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },100679 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
98985 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },100680 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
98986 .patterns = &.{100681 .patterns = &.{
98987 .{ .src = .{ .to_mem, .none, .none } },100682 .{ .src = .{ .to_mem, .none, .none } },
...@@ -98989,8 +100684,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98989,8 +100684,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98989 .call_frame = .{ .alignment = .@"16" },100684 .call_frame = .{ .alignment = .@"16" },
98990 .extra_temps = .{100685 .extra_temps = .{
98991 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100686 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
98992 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100687 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
98993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100688 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
98994 .{ .type = .i32, .kind = .{ .reg = .eax } },100689 .{ .type = .i32, .kind = .{ .reg = .eax } },
98995 .unused,100690 .unused,
98996 .unused,100691 .unused,
...@@ -99004,16 +100699,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99004,16 +100699,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99004 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100699 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99005 .each = .{ .once = &.{100700 .each = .{ .once = &.{
99006 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100701 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99007 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },100702 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
99008 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
99009 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },100703 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99010 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },100704 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99011 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },100705 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100706 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99013 } },100707 } },
99014 }, .{100708 }, .{
99015 .required_features = .{ .sse2, null, null, null },100709 .required_features = .{ .avx, null, null, null },
99016 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },100710 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99017 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },100711 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
99018 .patterns = &.{100712 .patterns = &.{
99019 .{ .src = .{ .to_mem, .none, .none } },100713 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99021,8 +100715,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99021,8 +100715,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99021 .call_frame = .{ .alignment = .@"16" },100715 .call_frame = .{ .alignment = .@"16" },
99022 .extra_temps = .{100716 .extra_temps = .{
99023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100717 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100718 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100719 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99026 .{ .type = .i32, .kind = .{ .reg = .eax } },100720 .{ .type = .i32, .kind = .{ .reg = .eax } },
99027 .unused,100721 .unused,
99028 .unused,100722 .unused,
...@@ -99036,8 +100730,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99036,8 +100730,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100730 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99037 .each = .{ .once = &.{100731 .each = .{ .once = &.{
99038 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100732 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99039 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },100733 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
99040 .{ ._, .p_w, .insr, .tmp1x, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), .ui(0), ._ },
99041 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },100734 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99042 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },100735 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99043 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },100736 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
...@@ -99045,7 +100738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99045,7 +100738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99045 } },100738 } },
99046 }, .{100739 }, .{
99047 .required_features = .{ .sse, .slow_incdec, null, null },100740 .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 },
99049 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },100742 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
99050 .patterns = &.{100743 .patterns = &.{
99051 .{ .src = .{ .to_mem, .none, .none } },100744 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99053,10 +100746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99053,10 +100746,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99053 .call_frame = .{ .alignment = .@"16" },100746 .call_frame = .{ .alignment = .@"16" },
99054 .extra_temps = .{100747 .extra_temps = .{
99055 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100748 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100749 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100750 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99056 .{ .type = .i32, .kind = .{ .reg = .eax } },100751 .{ .type = .i32, .kind = .{ .reg = .eax } },
99057 .{ .type = .f32, .kind = .mem },100752 .unused,
99058 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99060 .unused,100753 .unused,
99061 .unused,100754 .unused,
99062 .unused,100755 .unused,
...@@ -99068,17 +100761,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99068,17 +100761,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99068 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100761 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99069 .each = .{ .once = &.{100762 .each = .{ .once = &.{
99070 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100763 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99071 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },100764 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
99072 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },100765 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99073 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },100766 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99074 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99075 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99076 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },100767 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
99077 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100768 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99078 } },100769 } },
99079 }, .{100770 }, .{
99080 .required_features = .{ .sse, null, null, null },100771 .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 },
99082 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },100773 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
99083 .patterns = &.{100774 .patterns = &.{
99084 .{ .src = .{ .to_mem, .none, .none } },100775 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99086,10 +100777,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99086,10 +100777,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99086 .call_frame = .{ .alignment = .@"16" },100777 .call_frame = .{ .alignment = .@"16" },
99087 .extra_temps = .{100778 .extra_temps = .{
99088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100779 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100780 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99089 .{ .type = .i32, .kind = .{ .reg = .eax } },100782 .{ .type = .i32, .kind = .{ .reg = .eax } },
99090 .{ .type = .f32, .kind = .mem },100783 .unused,
99091 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99092 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99093 .unused,100784 .unused,
99094 .unused,100785 .unused,
99095 .unused,100786 .unused,
...@@ -99101,31 +100792,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99101,31 +100792,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100792 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99102 .each = .{ .once = &.{100793 .each = .{ .once = &.{
99103 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },100794 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99104 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_unaligned_size), ._, ._ },100795 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
99105 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },100796 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99106 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },100797 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
99107 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },100798 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
99108 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
99109 .{ ._, ._c, .in, .tmp0p, .si(1), ._, ._ },
99110 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },100799 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
99111 } },100800 } },
99112 }, .{100801 }, .{
99113 .required_features = .{ .f16c, null, null, null },100802 .required_features = .{ .avx, null, null, null },
99114 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },100803 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99115 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },100804 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
99116 .patterns = &.{100805 .patterns = &.{
99117 .{ .src = .{ .mem, .none, .none } },100806 .{ .src = .{ .mem, .none, .none } },
99118 .{ .src = .{ .to_sse, .none, .none } },100807 .{ .src = .{ .to_sse, .none, .none } },
99119 },100808 },
99120 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },100809 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99121 .each = .{ .once = &.{100810 .each = .{ .once = &.{
99122 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },100811 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
99123 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
99124 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },100812 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
99125 } },100813 } },
99126 }, .{100814 }, .{
99127 .required_features = .{ .f16c, null, null, null },100815 .required_features = .{ .sse2, null, null, null },
99128 .src_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },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 },
99129 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },100830 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99130 .patterns = &.{100831 .patterns = &.{
99131 .{ .src = .{ .mem, .none, .none } },100832 .{ .src = .{ .mem, .none, .none } },
...@@ -99133,13 +100834,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99133,13 +100834,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99133 },100834 },
99134 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },100835 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99135 .each = .{ .once = &.{100836 .each = .{ .once = &.{
99136 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },100837 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
99137 .{ ._, .v_, .cvttps2dq, .dst0x, .dst0x, ._, ._ },
99138 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },100838 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },
99139 } },100839 } },
99140 }, .{100840 }, .{
99141 .required_features = .{ .f16c, null, null, null },100841 .required_features = .{ .sse4_1, null, null, null },
99142 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },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 },
99143 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },100856 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
99144 .patterns = &.{100857 .patterns = &.{
99145 .{ .src = .{ .to_mem, .none, .none } },100858 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99159,24 +100872,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99159,24 +100872,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99159 },100872 },
99160 .dst_temps = .{ .mem, .unused },100873 .dst_temps = .{ .mem, .unused },
99161 .each = .{ .once = &.{100874 .each = .{ .once = &.{
99162 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },100875 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99163 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },100876 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99164 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },
99165 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },100877 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },
99166 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },100878 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99167 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },100879 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99169 } },100881 } },
99170 }, .{100882 }, .{
99171 .required_features = .{ .f16c, null, null, null },100883 .required_features = .{ .sse2, null, null, null },
99172 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },100884 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99173 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },100885 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },
99174 .patterns = &.{100886 .patterns = &.{
99175 .{ .src = .{ .to_mem, .none, .none } },100887 .{ .src = .{ .to_mem, .none, .none } },
99176 },100888 },
99177 .extra_temps = .{100889 .extra_temps = .{
99178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100890 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99179 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },100891 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },
99180 .unused,100892 .unused,
99181 .unused,100893 .unused,
99182 .unused,100894 .unused,
...@@ -99189,27 +100901,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99189,27 +100901,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99189 },100901 },
99190 .dst_temps = .{ .mem, .unused },100902 .dst_temps = .{ .mem, .unused },
99191 .each = .{ .once = &.{100903 .each = .{ .once = &.{
99192 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },100904 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99193 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },100905 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99194 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },100906 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },
99195 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },100907 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99196 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99197 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },100908 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99198 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99199 } },100910 } },
99200 }, .{100911 }, .{
99201 .required_features = .{ .avx, null, null, null },100912 .required_features = .{ .avx, null, null, null },
99202 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },100913 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99203 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },100914 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99204 .patterns = &.{100915 .patterns = &.{
99205 .{ .src = .{ .to_mem, .none, .none } },100916 .{ .src = .{ .to_mem, .none, .none } },
99206 },100917 },
99207 .call_frame = .{ .alignment = .@"16" },
99208 .extra_temps = .{100918 .extra_temps = .{
99209 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100919 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99210 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100920 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
99211 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100921 .unused,
99212 .{ .type = .i32, .kind = .{ .reg = .eax } },100922 .unused,
99213 .unused,100923 .unused,
99214 .unused,100924 .unused,
99215 .unused,100925 .unused,
...@@ -99219,29 +100929,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99219,29 +100929,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99219 .unused,100929 .unused,
99220 },100930 },
99221 .dst_temps = .{ .mem, .unused },100931 .dst_temps = .{ .mem, .unused },
99222 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99223 .each = .{ .once = &.{100932 .each = .{ .once = &.{
99224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },100933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99225 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },100934 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99226 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },100935 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },
99227 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },100936 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99228 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },100937 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99229 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99231 } },100939 } },
99232 }, .{100940 }, .{
99233 .required_features = .{ .sse2, null, null, null },100941 .required_features = .{ .sse4_1, null, null, null },
99234 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },100942 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99235 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },100943 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },
99236 .patterns = &.{100944 .patterns = &.{
99237 .{ .src = .{ .to_mem, .none, .none } },100945 .{ .src = .{ .to_mem, .none, .none } },
99238 },100946 },
99239 .call_frame = .{ .alignment = .@"16" },
99240 .extra_temps = .{100947 .extra_temps = .{
99241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100948 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99242 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },100949 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
99243 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },100950 .unused,
99244 .{ .type = .i32, .kind = .{ .reg = .eax } },100951 .unused,
99245 .unused,100952 .unused,
99246 .unused,100953 .unused,
99247 .unused,100954 .unused,
...@@ -99251,19 +100958,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99251,19 +100958,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99251 .unused,100958 .unused,
99252 },100959 },
99253 .dst_temps = .{ .mem, .unused },100960 .dst_temps = .{ .mem, .unused },
99254 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99255 .each = .{ .once = &.{100961 .each = .{ .once = &.{
99256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },100962 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99257 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },100963 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99258 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },100964 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },
99259 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },100965 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99260 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },100966 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
99261 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99262 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100967 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99263 } },100968 } },
99264 }, .{100969 }, .{
99265 .required_features = .{ .sse, null, null, null },100970 .required_features = .{ .avx, null, null, null },
99266 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },100971 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99267 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },100972 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
99268 .patterns = &.{100973 .patterns = &.{
99269 .{ .src = .{ .to_mem, .none, .none } },100974 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99271,10 +100976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99271,10 +100976,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99271 .call_frame = .{ .alignment = .@"16" },100976 .call_frame = .{ .alignment = .@"16" },
99272 .extra_temps = .{100977 .extra_temps = .{
99273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },100978 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100979 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100980 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99274 .{ .type = .i32, .kind = .{ .reg = .eax } },100981 .{ .type = .i32, .kind = .{ .reg = .eax } },
99275 .{ .type = .f32, .kind = .mem },100982 .unused,
99276 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99277 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99278 .unused,100983 .unused,
99279 .unused,100984 .unused,
99280 .unused,100985 .unused,
...@@ -99285,27 +100990,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99285,27 +100990,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99285 .dst_temps = .{ .mem, .unused },100990 .dst_temps = .{ .mem, .unused },
99286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },100991 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99287 .each = .{ .once = &.{100992 .each = .{ .once = &.{
99288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },100993 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99289 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },100994 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99290 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },100995 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99291 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },100996 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99292 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
99293 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
99294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },100997 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },100998 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99296 } },100999 } },
99297 }, .{101000 }, .{
99298 .required_features = .{ .f16c, null, null, null },101001 .required_features = .{ .sse, null, null, null },
99299 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },101002 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99300 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },101003 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
99301 .patterns = &.{101004 .patterns = &.{
99302 .{ .src = .{ .to_mem, .none, .none } },101005 .{ .src = .{ .to_mem, .none, .none } },
99303 },101006 },
101007 .call_frame = .{ .alignment = .@"16" },
99304 .extra_temps = .{101008 .extra_temps = .{
99305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99306 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },101010 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99307 .unused,101011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99308 .unused,101012 .{ .type = .i32, .kind = .{ .reg = .eax } },
99309 .unused,101013 .unused,
99310 .unused,101014 .unused,
99311 .unused,101015 .unused,
...@@ -99315,58 +101019,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99315,58 +101019,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99315 .unused,101019 .unused,
99316 },101020 },
99317 .dst_temps = .{ .mem, .unused },101021 .dst_temps = .{ .mem, .unused },
101022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99318 .each = .{ .once = &.{101023 .each = .{ .once = &.{
99319 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101024 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
99320 .{ .@"0:", .v_ps, .cvtph2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },101025 .{ .@"0:", ._ss, .mov, .tmp1x, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
99321 .{ ._, .v_, .cvttps2dq, .tmp1x, .tmp1x, ._, ._ },101026 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99322 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },101027 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
99323 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },101028 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99324 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101029 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99325 } },101030 } },
99326 }, .{101031 }, .{
99327 .required_features = .{ .f16c, null, null, null },101032 .required_features = .{ .avx, null, null, null },
99328 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101033 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99329 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101034 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99330 .patterns = &.{101035 .patterns = &.{
99331 .{ .src = .{ .to_mem, .none, .none } },101036 .{ .src = .{ .mem, .none, .none } },
101037 .{ .src = .{ .to_sse, .none, .none } },
99332 },101038 },
99333 .extra_temps = .{101039 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99334 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101040 .each = .{ .once = &.{
99335 .{ .type = .f32, .kind = .{ .rc = .sse } },101041 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },
99336 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },101042 } },
99337 .unused,101043 }, .{
99338 .unused,101044 .required_features = .{ .sse2, null, null, null },
99339 .unused,101045 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99340 .unused,101046 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99341 .unused,101047 .patterns = &.{
99342 .unused,101048 .{ .src = .{ .mem, .none, .none } },
99343 .unused,101049 .{ .src = .{ .to_sse, .none, .none } },
99344 .unused,
99345 },101050 },
99346 .dst_temps = .{ .mem, .unused },101051 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
99347 .each = .{ .once = &.{101052 .each = .{ .once = &.{
99348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101053 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },
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", ._, ._, ._ },
99356 } },101054 } },
99357 }, .{101055 }, .{
99358 .required_features = .{ .avx, null, null, null },101056 .required_features = .{ .avx, null, null, null },
99359 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101057 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99360 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },101058 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99361 .patterns = &.{101059 .patterns = &.{
99362 .{ .src = .{ .to_mem, .none, .none } },101060 .{ .src = .{ .to_mem, .none, .none } },
99363 },101061 },
99364 .call_frame = .{ .alignment = .@"16" },
99365 .extra_temps = .{101062 .extra_temps = .{
99366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99367 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101064 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
99368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },101065 .unused,
99369 .{ .type = .i32, .kind = .{ .reg = .eax } },101066 .unused,
99370 .unused,101067 .unused,
99371 .unused,101068 .unused,
99372 .unused,101069 .unused,
...@@ -99376,29 +101073,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99376,29 +101073,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99376 .unused,101073 .unused,
99377 },101074 },
99378 .dst_temps = .{ .mem, .unused },101075 .dst_temps = .{ .mem, .unused },
99379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99380 .each = .{ .once = &.{101076 .each = .{ .once = &.{
99381 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99382 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101078 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
99383 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },101079 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99384 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101080 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
99385 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99386 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99388 } },101082 } },
99389 }, .{101083 }, .{
99390 .required_features = .{ .avx, null, null, null },101084 .required_features = .{ .sse2, null, null, null },
99391 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101085 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
99392 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101086 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
99393 .patterns = &.{101087 .patterns = &.{
99394 .{ .src = .{ .to_mem, .none, .none } },101088 .{ .src = .{ .to_mem, .none, .none } },
99395 },101089 },
99396 .call_frame = .{ .alignment = .@"16" },
99397 .extra_temps = .{101090 .extra_temps = .{
99398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99399 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101092 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
99400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },101093 .unused,
99401 .{ .type = .u32, .kind = .{ .reg = .eax } },101094 .unused,
99402 .unused,101095 .unused,
99403 .unused,101096 .unused,
99404 .unused,101097 .unused,
...@@ -99408,19 +101101,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99408,19 +101101,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99408 .unused,101101 .unused,
99409 },101102 },
99410 .dst_temps = .{ .mem, .unused },101103 .dst_temps = .{ .mem, .unused },
99411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99412 .each = .{ .once = &.{101104 .each = .{ .once = &.{
99413 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99414 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101106 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
99415 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },101107 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
99416 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101108 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
99417 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99418 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99419 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101109 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99420 } },101110 } },
99421 }, .{101111 }, .{
99422 .required_features = .{ .sse2, null, null, null },101112 .required_features = .{ .avx, null, null, null },
99423 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101113 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99424 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },101114 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
99425 .patterns = &.{101115 .patterns = &.{
99426 .{ .src = .{ .to_mem, .none, .none } },101116 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99428,8 +101118,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99428,8 +101118,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99428 .call_frame = .{ .alignment = .@"16" },101118 .call_frame = .{ .alignment = .@"16" },
99429 .extra_temps = .{101119 .extra_temps = .{
99430 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101120 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99431 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101121 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },101122 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99433 .{ .type = .i32, .kind = .{ .reg = .eax } },101123 .{ .type = .i32, .kind = .{ .reg = .eax } },
99434 .unused,101124 .unused,
99435 .unused,101125 .unused,
...@@ -99443,16 +101133,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99443,16 +101133,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99443 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101133 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99444 .each = .{ .once = &.{101134 .each = .{ .once = &.{
99445 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101135 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99446 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101136 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99447 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99448 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101137 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99449 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },101138 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99450 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101139 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99451 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101140 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99452 } },101141 } },
99453 }, .{101142 }, .{
99454 .required_features = .{ .sse2, null, null, null },101143 .required_features = .{ .avx, null, null, null },
99455 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101144 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99456 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101145 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
99457 .patterns = &.{101146 .patterns = &.{
99458 .{ .src = .{ .to_mem, .none, .none } },101147 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99460,8 +101149,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99460,8 +101149,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99460 .call_frame = .{ .alignment = .@"16" },101149 .call_frame = .{ .alignment = .@"16" },
99461 .extra_temps = .{101150 .extra_temps = .{
99462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101151 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99463 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101152 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },101153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
99465 .{ .type = .u32, .kind = .{ .reg = .eax } },101154 .{ .type = .u32, .kind = .{ .reg = .eax } },
99466 .unused,101155 .unused,
99467 .unused,101156 .unused,
...@@ -99475,16 +101164,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99475,16 +101164,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99475 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101164 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99476 .each = .{ .once = &.{101165 .each = .{ .once = &.{
99477 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101166 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99478 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101167 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99479 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99480 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101168 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99481 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },101169 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99482 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101170 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99483 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99484 } },101172 } },
99485 }, .{101173 }, .{
99486 .required_features = .{ .sse, null, null, null },101174 .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 },
99488 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },101176 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
99489 .patterns = &.{101177 .patterns = &.{
99490 .{ .src = .{ .to_mem, .none, .none } },101178 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99492,10 +101180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99492,10 +101180,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99492 .call_frame = .{ .alignment = .@"16" },101180 .call_frame = .{ .alignment = .@"16" },
99493 .extra_temps = .{101181 .extra_temps = .{
99494 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101183 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101184 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },
99495 .{ .type = .i32, .kind = .{ .reg = .eax } },101185 .{ .type = .i32, .kind = .{ .reg = .eax } },
99496 .{ .type = .f32, .kind = .mem },101186 .unused,
99497 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99498 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfsi" } } },
99499 .unused,101187 .unused,
99500 .unused,101188 .unused,
99501 .unused,101189 .unused,
...@@ -99507,17 +101195,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99507,17 +101195,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99507 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99508 .each = .{ .once = &.{101196 .each = .{ .once = &.{
99509 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101197 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99510 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101198 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99511 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101199 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99512 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101200 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99513 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101201 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99514 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
99515 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101202 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99517 } },101203 } },
99518 }, .{101204 }, .{
99519 .required_features = .{ .sse, null, null, null },101205 .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 },
99521 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101207 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
99522 .patterns = &.{101208 .patterns = &.{
99523 .{ .src = .{ .to_mem, .none, .none } },101209 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99525,10 +101211,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99525,10 +101211,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99525 .call_frame = .{ .alignment = .@"16" },101211 .call_frame = .{ .alignment = .@"16" },
99526 .extra_temps = .{101212 .extra_temps = .{
99527 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101214 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101215 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },
99528 .{ .type = .u32, .kind = .{ .reg = .eax } },101216 .{ .type = .u32, .kind = .{ .reg = .eax } },
99529 .{ .type = .f32, .kind = .mem },101217 .unused,
99530 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99531 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfsi" } } },
99532 .unused,101218 .unused,
99533 .unused,101219 .unused,
99534 .unused,101220 .unused,
...@@ -99540,24 +101226,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99540,24 +101226,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99540 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101226 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99541 .each = .{ .once = &.{101227 .each = .{ .once = &.{
99542 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101228 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99543 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101229 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99544 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101230 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99545 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101231 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
99546 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101232 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99547 .{ ._, ._, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp1d, ._, ._ },
99548 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99549 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99550 } },101234 } },
99551 }, .{101235 }, .{
99552 .required_features = .{ .@"64bit", .f16c, null, null },101236 .required_features = .{ .@"64bit", .avx, null, null },
99553 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101237 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99554 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },101238 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99555 .patterns = &.{101239 .patterns = &.{
99556 .{ .src = .{ .to_mem, .none, .none } },101240 .{ .src = .{ .to_mem, .none, .none } },
99557 },101241 },
99558 .extra_temps = .{101242 .extra_temps = .{
99559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101243 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99560 .{ .type = .f32, .kind = .{ .rc = .sse } },
99561 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101244 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
99562 .unused,101245 .unused,
99563 .unused,101246 .unused,
...@@ -99567,63 +101250,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99567,63 +101250,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99567 .unused,101250 .unused,
99568 .unused,101251 .unused,
99569 .unused,101252 .unused,
101253 .unused,
99570 },101254 },
99571 .dst_temps = .{ .mem, .unused },101255 .dst_temps = .{ .mem, .unused },
99572 .each = .{ .once = &.{101256 .each = .{ .once = &.{
99573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101257 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99574 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101258 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99575 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },101259 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99576 .{ ._, .v_ps, .cvtph2, .tmp1x, .tmp1q, ._, ._ },101260 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99577 .{ ._, .v_, .cvttss2si, .tmp2q, .tmp1x, ._, ._ },
99578 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp2q, ._, ._ },
99579 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99581 } },101262 } },
99582 }, .{101263 }, .{
99583 .required_features = .{ .avx, null, null, null },101264 .required_features = .{ .@"64bit", .sse, null, null },
99584 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101265 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99585 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },101266 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99586 .patterns = &.{101267 .patterns = &.{
99587 .{ .src = .{ .to_mem, .none, .none } },101268 .{ .src = .{ .to_mem, .none, .none } },
99588 },101269 },
99589 .call_frame = .{ .alignment = .@"16" },
99590 .extra_temps = .{101270 .extra_temps = .{
99591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99592 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101272 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
99593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99594 .{ .type = .i64, .kind = .{ .reg = .rax } },
99595 .unused,
99596 .unused,
99597 .unused,
99598 .unused,
99599 .unused,
99600 .unused,101273 .unused,
99601 .unused,101274 .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 } },
99627 .unused,101275 .unused,
99628 .unused,101276 .unused,
99629 .unused,101277 .unused,
...@@ -99633,19 +101281,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99633,19 +101281,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99633 .unused,101281 .unused,
99634 },101282 },
99635 .dst_temps = .{ .mem, .unused },101283 .dst_temps = .{ .mem, .unused },
99636 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99637 .each = .{ .once = &.{101284 .each = .{ .once = &.{
99638 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99639 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101286 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99640 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },101287 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99641 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101288 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99642 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99643 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99644 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99645 } },101290 } },
99646 }, .{101291 }, .{
99647 .required_features = .{ .sse2, null, null, null },101292 .required_features = .{ .avx, null, null, null },
99648 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101293 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99649 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },101294 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99650 .patterns = &.{101295 .patterns = &.{
99651 .{ .src = .{ .to_mem, .none, .none } },101296 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99653,8 +101298,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99653,8 +101298,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99653 .call_frame = .{ .alignment = .@"16" },101298 .call_frame = .{ .alignment = .@"16" },
99654 .extra_temps = .{101299 .extra_temps = .{
99655 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101300 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99656 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101301 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99657 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },101302 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
99658 .{ .type = .i64, .kind = .{ .reg = .rax } },101303 .{ .type = .i64, .kind = .{ .reg = .rax } },
99659 .unused,101304 .unused,
99660 .unused,101305 .unused,
...@@ -99668,16 +101313,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99668,16 +101313,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99668 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101313 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99669 .each = .{ .once = &.{101314 .each = .{ .once = &.{
99670 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101315 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99671 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101316 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99672 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99673 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101317 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99674 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },101318 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99675 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101319 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99676 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101320 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99677 } },101321 } },
99678 }, .{101322 }, .{
99679 .required_features = .{ .sse2, null, null, null },101323 .required_features = .{ .avx, null, null, null },
99680 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101324 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99681 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },101325 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99682 .patterns = &.{101326 .patterns = &.{
99683 .{ .src = .{ .to_mem, .none, .none } },101327 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99685,8 +101329,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99685,8 +101329,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99685 .call_frame = .{ .alignment = .@"16" },101329 .call_frame = .{ .alignment = .@"16" },
99686 .extra_temps = .{101330 .extra_temps = .{
99687 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101331 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99688 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101332 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99689 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfdi" } } },101333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
99690 .{ .type = .u64, .kind = .{ .reg = .rax } },101334 .{ .type = .u64, .kind = .{ .reg = .rax } },
99691 .unused,101335 .unused,
99692 .unused,101336 .unused,
...@@ -99700,16 +101344,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99700,16 +101344,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99700 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101344 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99701 .each = .{ .once = &.{101345 .each = .{ .once = &.{
99702 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101346 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99703 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101347 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99704 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99705 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101348 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99706 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },101349 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99707 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101350 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101351 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99709 } },101352 } },
99710 }, .{101353 }, .{
99711 .required_features = .{ .sse, null, null, null },101354 .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 },
99713 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },101356 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
99714 .patterns = &.{101357 .patterns = &.{
99715 .{ .src = .{ .to_mem, .none, .none } },101358 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99717,10 +101360,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99717,10 +101360,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99717 .call_frame = .{ .alignment = .@"16" },101360 .call_frame = .{ .alignment = .@"16" },
99718 .extra_temps = .{101361 .extra_temps = .{
99719 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101363 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },
99720 .{ .type = .i64, .kind = .{ .reg = .rax } },101365 .{ .type = .i64, .kind = .{ .reg = .rax } },
99721 .{ .type = .f32, .kind = .mem },101366 .unused,
99722 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99723 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfdi" } } },
99724 .unused,101367 .unused,
99725 .unused,101368 .unused,
99726 .unused,101369 .unused,
...@@ -99732,17 +101375,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99732,17 +101375,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99732 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99733 .each = .{ .once = &.{101376 .each = .{ .once = &.{
99734 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101377 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99735 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101378 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99736 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101379 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99737 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101380 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99738 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101381 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99739 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
99740 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99741 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99742 } },101383 } },
99743 }, .{101384 }, .{
99744 .required_features = .{ .sse, null, null, null },101385 .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 },
99746 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },101387 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
99747 .patterns = &.{101388 .patterns = &.{
99748 .{ .src = .{ .to_mem, .none, .none } },101389 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99750,47 +101391,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99750,47 +101391,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99750 .call_frame = .{ .alignment = .@"16" },101391 .call_frame = .{ .alignment = .@"16" },
99751 .extra_temps = .{101392 .extra_temps = .{
99752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101394 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101395 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },
99753 .{ .type = .u64, .kind = .{ .reg = .rax } },101396 .{ .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,
99758 .unused,101397 .unused,
99759 .unused,101398 .unused,
99760 .unused,101399 .unused,
99761 .unused,101400 .unused,
99762 .unused,101401 .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,
99794 .unused,101402 .unused,
99795 .unused,101403 .unused,
99796 },101404 },
...@@ -99798,50 +101406,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99798,50 +101406,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99798 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99799 .each = .{ .once = &.{101407 .each = .{ .once = &.{
99800 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99801 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },101409 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99802 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
99803 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101410 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99804 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },101411 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99805 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },101412 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99806 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99807 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99808 } },101414 } },
99809 }, .{101415 }, .{
99810 .required_features = .{ .avx, null, null, null },101416 .required_features = .{ .avx, null, null, null },
99811 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101417 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .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 },
99845 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },101418 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
99846 .patterns = &.{101419 .patterns = &.{
99847 .{ .src = .{ .to_mem, .none, .none } },101420 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99849,8 +101422,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99849,8 +101422,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99849 .call_frame = .{ .alignment = .@"16" },101422 .call_frame = .{ .alignment = .@"16" },
99850 .extra_temps = .{101423 .extra_temps = .{
99851 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99852 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101425 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99853 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },101426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
99854 .{ .type = .u64, .kind = .{ .reg = .rax } },101427 .{ .type = .u64, .kind = .{ .reg = .rax } },
99855 .{ .type = .i64, .kind = .{ .reg = .rdx } },101428 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99856 .unused,101429 .unused,
...@@ -99864,17 +101437,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99864,17 +101437,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99864 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99865 .each = .{ .once = &.{101438 .each = .{ .once = &.{
99866 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101439 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99867 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101440 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99868 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99869 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99870 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },101442 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99871 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },101443 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99872 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101444 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101445 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99874 } },101446 } },
99875 }, .{101447 }, .{
99876 .required_features = .{ .sse2, null, null, null },101448 .required_features = .{ .avx, null, null, null },
99877 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101449 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
99878 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },101450 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99879 .patterns = &.{101451 .patterns = &.{
99880 .{ .src = .{ .to_mem, .none, .none } },101452 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99882,8 +101454,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99882,8 +101454,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99882 .call_frame = .{ .alignment = .@"16" },101454 .call_frame = .{ .alignment = .@"16" },
99883 .extra_temps = .{101455 .extra_temps = .{
99884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101456 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
99885 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101457 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },101458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
99887 .{ .type = .u64, .kind = .{ .reg = .rax } },101459 .{ .type = .u64, .kind = .{ .reg = .rax } },
99888 .{ .type = .u64, .kind = .{ .reg = .rdx } },101460 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99889 .unused,101461 .unused,
...@@ -99897,17 +101469,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99897,17 +101469,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99897 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101469 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99898 .each = .{ .once = &.{101470 .each = .{ .once = &.{
99899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101471 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99900 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },101472 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99901 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
99902 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },101473 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99903 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },101474 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99904 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },101475 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99905 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101476 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99906 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99907 } },101478 } },
99908 }, .{101479 }, .{
99909 .required_features = .{ .sse, null, null, null },101480 .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 },
99911 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },101482 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
99912 .patterns = &.{101483 .patterns = &.{
99913 .{ .src = .{ .to_mem, .none, .none } },101484 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99915,33 +101486,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99915,33 +101486,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99915 .call_frame = .{ .alignment = .@"16" },101486 .call_frame = .{ .alignment = .@"16" },
99916 .extra_temps = .{101487 .extra_temps = .{
99917 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101489 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },
99918 .{ .type = .u64, .kind = .{ .reg = .rax } },101491 .{ .type = .u64, .kind = .{ .reg = .rax } },
99919 .{ .type = .f32, .kind = .mem },
99920 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfti" } } },
99922 .{ .type = .i64, .kind = .{ .reg = .rdx } },101492 .{ .type = .i64, .kind = .{ .reg = .rdx } },
99923 .unused,101493 .unused,
99924 .unused,101494 .unused,
99925 .unused,101495 .unused,
99926 .unused,101496 .unused,
99927 .unused,101497 .unused,
101498 .unused,
99928 },101499 },
99929 .dst_temps = .{ .mem, .unused },101500 .dst_temps = .{ .mem, .unused },
99930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99931 .each = .{ .once = &.{101502 .each = .{ .once = &.{
99932 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99933 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101504 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99934 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101505 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99935 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101506 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99936 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101507 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99937 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },101508 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99938 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
99939 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99940 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101509 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99941 } },101510 } },
99942 }, .{101511 }, .{
99943 .required_features = .{ .sse, null, null, null },101512 .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 },
99945 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },101514 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
99946 .patterns = &.{101515 .patterns = &.{
99947 .{ .src = .{ .to_mem, .none, .none } },101516 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99949,33 +101518,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99949,33 +101518,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99949 .call_frame = .{ .alignment = .@"16" },101518 .call_frame = .{ .alignment = .@"16" },
99950 .extra_temps = .{101519 .extra_temps = .{
99951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101520 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101521 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
101522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },
99952 .{ .type = .u64, .kind = .{ .reg = .rax } },101523 .{ .type = .u64, .kind = .{ .reg = .rax } },
99953 .{ .type = .f32, .kind = .mem },
99954 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
99955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfti" } } },
99956 .{ .type = .u64, .kind = .{ .reg = .rdx } },101524 .{ .type = .u64, .kind = .{ .reg = .rdx } },
99957 .unused,101525 .unused,
99958 .unused,101526 .unused,
99959 .unused,101527 .unused,
99960 .unused,101528 .unused,
99961 .unused,101529 .unused,
101530 .unused,
99962 },101531 },
99963 .dst_temps = .{ .mem, .unused },101532 .dst_temps = .{ .mem, .unused },
99964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },101533 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
99965 .each = .{ .once = &.{101534 .each = .{ .once = &.{
99966 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101535 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
99967 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101536 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
99968 .{ ._, ._, .mov, .tmp2d, .tmp1d, ._, ._ },101537 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
99969 .{ ._, ._ss, .mov, .tmp3x, .tmp2d, ._, ._ },101538 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
99970 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },101539 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
99971 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },101540 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
99972 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
99973 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
99974 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101541 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
99975 } },101542 } },
99976 }, .{101543 }, .{
99977 .required_features = .{ .@"64bit", .avx, null, null },101544 .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 },
99979 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },101546 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
99980 .patterns = &.{101547 .patterns = &.{
99981 .{ .src = .{ .to_mem, .none, .none } },101548 .{ .src = .{ .to_mem, .none, .none } },
...@@ -99986,8 +101553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99986,8 +101553,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99986 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },101553 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
99987 .{ .type = .usize, .kind = .{ .reg = .rdi } },101554 .{ .type = .usize, .kind = .{ .reg = .rdi } },
99988 .{ .type = .usize, .kind = .{ .reg = .rsi } },101555 .{ .type = .usize, .kind = .{ .reg = .rsi } },
99989 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101556 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
99990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },101557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
99991 .unused,101558 .unused,
99992 .unused,101559 .unused,
99993 .unused,101560 .unused,
...@@ -99999,18 +101566,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -99999,18 +101566,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
99999 .each = .{ .once = &.{101566 .each = .{ .once = &.{
100000 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101567 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100001 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },101568 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100002 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },101569 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100003 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100004 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },101570 .{ ._, ._, .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), ._, ._ },
100006 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },101572 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100007 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },101573 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100008 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101574 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100009 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101575 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100010 } },101576 } },
100011 }, .{101577 }, .{
100012 .required_features = .{ .@"64bit", .avx, null, null },101578 .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 },
100014 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101580 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100015 .patterns = &.{101581 .patterns = &.{
100016 .{ .src = .{ .to_mem, .none, .none } },101582 .{ .src = .{ .to_mem, .none, .none } },
...@@ -100021,8 +101587,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100021,8 +101587,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100021 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },101587 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100022 .{ .type = .usize, .kind = .{ .reg = .rdi } },101588 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100023 .{ .type = .usize, .kind = .{ .reg = .rsi } },101589 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100024 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101590 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },101591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
100026 .unused,101592 .unused,
100027 .unused,101593 .unused,
100028 .unused,101594 .unused,
...@@ -100034,18 +101600,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100034,18 +101600,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100034 .each = .{ .once = &.{101600 .each = .{ .once = &.{
100035 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101601 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100036 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },101602 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100037 .{ .@"0:", .v_ps, .xor, .tmp4x, .tmp4x, .tmp4x, ._ },101603 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100038 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100039 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },101604 .{ ._, ._, .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), ._, ._ },
100041 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },101606 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100042 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },101607 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100043 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101608 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100044 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100045 } },101610 } },
100046 }, .{101611 }, .{
100047 .required_features = .{ .@"64bit", .sse2, null, null },101612 .required_features = .{ .@"64bit", .sse, null, null },
100048 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101613 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100049 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },101614 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100050 .patterns = &.{101615 .patterns = &.{
100051 .{ .src = .{ .to_mem, .none, .none } },101616 .{ .src = .{ .to_mem, .none, .none } },
...@@ -100056,8 +101621,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100056,8 +101621,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100056 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },101621 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100057 .{ .type = .usize, .kind = .{ .reg = .rdi } },101622 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100058 .{ .type = .usize, .kind = .{ .reg = .rsi } },101623 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100059 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101624 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100060 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },101625 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },
100061 .unused,101626 .unused,
100062 .unused,101627 .unused,
100063 .unused,101628 .unused,
...@@ -100069,18 +101634,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100069,18 +101634,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100069 .each = .{ .once = &.{101634 .each = .{ .once = &.{
100070 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100071 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },101636 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100072 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },101637 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100073 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100074 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },101638 .{ ._, ._, .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), ._, ._ },
100076 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },101640 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100077 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },101641 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100078 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101642 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100079 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101643 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100080 } },101644 } },
100081 }, .{101645 }, .{
100082 .required_features = .{ .@"64bit", .sse2, null, null },101646 .required_features = .{ .@"64bit", .sse, null, null },
100083 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101647 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
100084 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101648 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100085 .patterns = &.{101649 .patterns = &.{
100086 .{ .src = .{ .to_mem, .none, .none } },101650 .{ .src = .{ .to_mem, .none, .none } },
...@@ -100091,8 +101655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100091,8 +101655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100091 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },101655 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100092 .{ .type = .usize, .kind = .{ .reg = .rdi } },101656 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100093 .{ .type = .usize, .kind = .{ .reg = .rsi } },101657 .{ .type = .usize, .kind = .{ .reg = .rsi } },
100094 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101658 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
100095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },101659 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },
100096 .unused,101660 .unused,
100097 .unused,101661 .unused,
100098 .unused,101662 .unused,
...@@ -100104,114 +101668,143 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100104,114 +101668,143 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100104 .each = .{ .once = &.{101668 .each = .{ .once = &.{
100105 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101669 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
100106 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },101670 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
100107 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },101671 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100108 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
100109 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },101672 .{ ._, ._, .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), ._, ._ },
100111 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },101674 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
100112 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },101675 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
100113 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },101676 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100114 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },101677 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100115 } },101678 } },
100116 }, .{101679 }, .{
100117 .required_features = .{ .@"64bit", .sse, null, null },101680 .required_features = .{ .avx, null, null, null },
100118 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101681 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100119 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .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 },
100120 .patterns = &.{101707 .patterns = &.{
100121 .{ .src = .{ .to_mem, .none, .none } },101708 .{ .src = .{ .to_mem, .none, .none } },
100122 },101709 },
100123 .call_frame = .{ .alignment = .@"16" },
100124 .extra_temps = .{101710 .extra_temps = .{
100125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101711 .{ .type = .f64, .kind = .{ .reg = .st7 } },
100126 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },101712 .{ .type = .i16, .kind = .mem },
100127 .{ .type = .usize, .kind = .{ .reg = .rdi } },101713 .unused,
100128 .{ .type = .usize, .kind = .{ .reg = .rsi } },101714 .unused,
100129 .{ .type = .f32, .kind = .mem },101715 .unused,
100130 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101716 .unused,
100131 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixhfei" } } },101717 .unused,
100132 .unused,101718 .unused,
100133 .unused,101719 .unused,
100134 .unused,101720 .unused,
100135 .unused,101721 .unused,
100136 },101722 },
100137 .dst_temps = .{ .mem, .unused },101723 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100139 .each = .{ .once = &.{101724 .each = .{ .once = &.{
100140 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101725 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
100141 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },101726 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
100142 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101727 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
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", ._, ._, ._ },
100151 } },101728 } },
100152 }, .{101729 }, .{
100153 .required_features = .{ .@"64bit", .sse, null, null },101730 .required_features = .{ .x87, null, null, null },
100154 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },101731 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100155 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },101732 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
100156 .patterns = &.{101733 .patterns = &.{
100157 .{ .src = .{ .to_mem, .none, .none } },101734 .{ .src = .{ .to_mem, .none, .none } },
100158 },101735 },
100159 .call_frame = .{ .alignment = .@"16" },
100160 .extra_temps = .{101736 .extra_temps = .{
100161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },101737 .{ .type = .f64, .kind = .{ .reg = .st7 } },
100162 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },101738 .{ .type = .i16, .kind = .mem },
100163 .{ .type = .usize, .kind = .{ .reg = .rdi } },101739 .unused,
100164 .{ .type = .usize, .kind = .{ .reg = .rsi } },101740 .unused,
100165 .{ .type = .f32, .kind = .mem },101741 .unused,
100166 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },101742 .unused,
100167 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunshfei" } } },101743 .unused,
100168 .unused,101744 .unused,
100169 .unused,101745 .unused,
100170 .unused,101746 .unused,
100171 .unused,101747 .unused,
100172 },101748 },
100173 .dst_temps = .{ .mem, .unused },101749 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100174 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100175 .each = .{ .once = &.{101750 .each = .{ .once = &.{
100176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },101751 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
100177 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },101752 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
100178 .{ .@"0:", ._, .movzx, .tmp3d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },101753 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
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", ._, ._, ._ },
100187 } },101754 } },
100188 }, .{101755 }, .{
100189 .required_features = .{ .avx, null, null, null },101756 .required_features = .{ .x87, null, null, null },
100190 .src_constraints = .{ .{ .float = .dword }, .any, .any },101757 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100191 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },101758 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },
100192 .patterns = &.{101759 .patterns = &.{
100193 .{ .src = .{ .mem, .none, .none } },101760 .{ .src = .{ .to_mem, .none, .none } },
100194 .{ .src = .{ .to_sse, .none, .none } },
100195 },101761 },
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 },
100197 .each = .{ .once = &.{101776 .each = .{ .once = &.{
100198 .{ ._, .v_, .cvttss2si, .dst0d, .src0d, ._, ._ },101777 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101778 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },
100199 } },101779 } },
100200 }, .{101780 }, .{
100201 .required_features = .{ .sse, null, null, null },101781 .required_features = .{ .x87, null, null, null },
100202 .src_constraints = .{ .{ .float = .dword }, .any, .any },101782 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100203 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },101783 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
100204 .patterns = &.{101784 .patterns = &.{
100205 .{ .src = .{ .mem, .none, .none } },101785 .{ .src = .{ .to_mem, .none, .none } },
100206 .{ .src = .{ .to_sse, .none, .none } },
100207 },101786 },
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 },
100209 .each = .{ .once = &.{101801 .each = .{ .once = &.{
100210 .{ ._, ._, .cvttss2si, .dst0d, .src0d, ._, ._ },101802 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101803 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },
100211 } },101804 } },
100212 }, .{101805 }, .{
100213 .required_features = .{ .@"64bit", .avx, null, null },101806 .required_features = .{ .@"64bit", .avx, null, null },
100214 .src_constraints = .{ .{ .float = .dword }, .any, .any },101807 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100215 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },101808 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
100216 .patterns = &.{101809 .patterns = &.{
100217 .{ .src = .{ .mem, .none, .none } },101810 .{ .src = .{ .mem, .none, .none } },
...@@ -100219,11 +101812,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100219,11 +101812,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100219 },101812 },
100220 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },101813 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100221 .each = .{ .once = &.{101814 .each = .{ .once = &.{
100222 .{ ._, .v_, .cvttss2si, .dst0q, .src0d, ._, ._ },101815 .{ ._, .v_, .cvttsd2si, .dst0q, .src0q, ._, ._ },
100223 } },101816 } },
100224 }, .{101817 }, .{
100225 .required_features = .{ .@"64bit", .sse, null, null },101818 .required_features = .{ .@"64bit", .sse2, null, null },
100226 .src_constraints = .{ .{ .float = .dword }, .any, .any },101819 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100227 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },101820 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
100228 .patterns = &.{101821 .patterns = &.{
100229 .{ .src = .{ .mem, .none, .none } },101822 .{ .src = .{ .mem, .none, .none } },
...@@ -100231,20 +101824,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100231,20 +101824,45 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100231 },101824 },
100232 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },101825 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
100233 .each = .{ .once = &.{101826 .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, ._, ._, ._ },
100235 } },101853 } },
100236 }, .{101854 }, .{
100237 .required_features = .{ .@"64bit", .avx, null, null },101855 .required_features = .{ .@"64bit", .avx, null, null },
100238 .src_constraints = .{ .{ .float = .dword }, .any, .any },101856 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100239 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },101857 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
100240 .patterns = &.{101858 .patterns = &.{
100241 .{ .src = .{ .to_sse, .none, .none } },101859 .{ .src = .{ .to_sse, .none, .none } },
100242 },101860 },
100243 .extra_temps = .{101861 .extra_temps = .{
100244 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },101862 .{ .type = .f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
100245 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101863 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100246 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101864 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100247 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },101865 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },
100248 .unused,101866 .unused,
100249 .unused,101867 .unused,
100250 .unused,101868 .unused,
...@@ -100257,17 +101875,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100257,17 +101875,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100257 .clobbers = .{ .eflags = true },101875 .clobbers = .{ .eflags = true },
100258 .each = .{ .once = &.{101876 .each = .{ .once = &.{
100259 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },101877 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
100260 .{ ._, .v_, .cvttss2si, .tmp2q, .src0d, ._, ._ },101878 .{ ._, .v_, .cvttsd2si, .tmp2q, .src0d, ._, ._ },
100261 .{ ._, .v_ss, .sub, .tmp0x, .src0x, .lea(.tmp1d), ._ },101879 .{ ._, .v_sd, .sub, .tmp0x, .src0x, .lea(.tmp1q), ._ },
100262 .{ ._, .v_, .cvttss2si, .dst0q, .tmp0d, ._, ._ },101880 .{ ._, .v_, .cvttsd2si, .dst0q, .tmp0d, ._, ._ },
100263 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },101881 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },
100264 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },101882 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
100265 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },101883 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },
100266 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },101884 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },
100267 } },101885 } },
100268 }, .{101886 }, .{
100269 .required_features = .{ .@"64bit", .sse, null, null },101887 .required_features = .{ .@"64bit", .sse2, null, null },
100270 .src_constraints = .{ .{ .float = .dword }, .any, .any },101888 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100271 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },101889 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },
100272 .patterns = &.{101890 .patterns = &.{
100273 .{ .src = .{ .to_mut_sse, .none, .none } },101891 .{ .src = .{ .to_mut_sse, .none, .none } },
...@@ -100275,7 +101893,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100275,7 +101893,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100275 .extra_temps = .{101893 .extra_temps = .{
100276 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101894 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100277 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },101895 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
100278 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },101896 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },
100279 .unused,101897 .unused,
100280 .unused,101898 .unused,
100281 .unused,101899 .unused,
...@@ -100289,24 +101907,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100289,24 +101907,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100289 .clobbers = .{ .eflags = true },101907 .clobbers = .{ .eflags = true },
100290 .each = .{ .once = &.{101908 .each = .{ .once = &.{
100291 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },101909 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
100292 .{ ._, ._, .cvttss2si, .tmp1q, .src0d, ._, ._ },101910 .{ ._, ._, .cvttsd2si, .tmp1q, .src0d, ._, ._ },
100293 .{ ._, ._ss, .sub, .src0x, .lea(.tmp0d), ._, ._ },101911 .{ ._, ._sd, .sub, .src0x, .lea(.tmp0q), ._, ._ },
100294 .{ ._, ._, .cvttss2si, .dst0q, .src0d, ._, ._ },101912 .{ ._, ._, .cvttsd2si, .dst0q, .src0d, ._, ._ },
100295 .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },101913 .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },
100296 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },101914 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
100297 .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ },101915 .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ },
100298 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },101916 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
100299 } },101917 } },
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 } },
100300 }, .{101953 }, .{
100301 .required_features = .{ .@"64bit", .sse, null, null },101954 .required_features = .{ .@"64bit", .sse, null, null },
100302 .src_constraints = .{ .{ .float = .dword }, .any, .any },101955 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100303 .dst_constraints = .{ .{ .signed_int = .xword }, .any },101956 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
100304 .patterns = &.{101957 .patterns = &.{
100305 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101958 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100306 },101959 },
100307 .call_frame = .{ .alignment = .@"16" },101960 .call_frame = .{ .alignment = .@"16" },
100308 .extra_temps = .{101961 .extra_temps = .{
100309 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },101962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
100310 .unused,101963 .unused,
100311 .unused,101964 .unused,
100312 .unused,101965 .unused,
...@@ -100325,14 +101978,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100325,14 +101978,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100325 } },101978 } },
100326 }, .{101979 }, .{
100327 .required_features = .{ .@"64bit", .sse, null, null },101980 .required_features = .{ .@"64bit", .sse, null, null },
100328 .src_constraints = .{ .{ .float = .dword }, .any, .any },101981 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100329 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },101982 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
100330 .patterns = &.{101983 .patterns = &.{
100331 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },101984 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100332 },101985 },
100333 .call_frame = .{ .alignment = .@"16" },101986 .call_frame = .{ .alignment = .@"16" },
100334 .extra_temps = .{101987 .extra_temps = .{
100335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },101988 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
100336 .unused,101989 .unused,
100337 .unused,101990 .unused,
100338 .unused,101991 .unused,
...@@ -100350,62 +102003,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100350,62 +102003,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100350 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },102003 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
100351 } },102004 } },
100352 }, .{102005 }, .{
100353 .required_features = .{ .@"64bit", .avx, null, null },102006 .required_features = .{ .@"64bit", .sse, null, null },
100354 .src_constraints = .{ .{ .float = .dword }, .any, .any },102007 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100355 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },102008 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100356 .patterns = &.{102009 .patterns = &.{
100357 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },102010 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100358 },102011 },
100359 .call_frame = .{ .alignment = .@"16" },102012 .call_frame = .{ .alignment = .@"16" },
100360 .extra_temps = .{102013 .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 } },
100366 .{ .type = .usize, .kind = .{ .reg = .rdi } },102014 .{ .type = .usize, .kind = .{ .reg = .rdi } },
100367 .{ .type = .u32, .kind = .{ .reg = .ecx } },102015 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102016 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
100368 .unused,102017 .unused,
100369 .unused,102018 .unused,
100370 .unused,102019 .unused,
100371 .unused,102020 .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 } },
100409 .unused,102021 .unused,
100410 .unused,102022 .unused,
100411 .unused,102023 .unused,
...@@ -100414,39 +102026,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100414,39 +102026,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100414 .dst_temps = .{ .mem, .unused },102026 .dst_temps = .{ .mem, .unused },
100415 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100416 .each = .{ .once = &.{102028 .each = .{ .once = &.{
100417 .{ ._, ._d, .mov, .tmp0d, .src0x, ._, ._ },102029 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
100418 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },102030 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
100419 .{ ._, ._d, .movsx, .tmp0q, .tmp0d, ._, ._ },102031 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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, ._, ._, ._, ._ },
100433 } },102032 } },
100434 }, .{102033 }, .{
100435 .required_features = .{ .@"64bit", .sse, null, null },102034 .required_features = .{ .@"64bit", .sse, null, null },
100436 .src_constraints = .{ .{ .float = .dword }, .any, .any },102035 .src_constraints = .{ .{ .float = .qword }, .any, .any },
100437 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, .any },102036 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100438 .patterns = &.{102037 .patterns = &.{
100439 .{ .src = .{ .to_mem, .none, .none } },102038 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
100440 },102039 },
100441 .call_frame = .{ .alignment = .@"16" },102040 .call_frame = .{ .alignment = .@"16" },
100442 .extra_temps = .{102041 .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 } },
100449 .{ .type = .usize, .kind = .{ .reg = .rdi } },102042 .{ .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,
100450 .unused,102049 .unused,
100451 .unused,102050 .unused,
100452 .unused,102051 .unused,
...@@ -100455,37 +102054,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100455,37 +102054,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100455 .dst_temps = .{ .mem, .unused },102054 .dst_temps = .{ .mem, .unused },
100456 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102055 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100457 .each = .{ .once = &.{102056 .each = .{ .once = &.{
100458 .{ ._, ._ss, .mov, .tmp0x, .src0d, ._, ._ },102057 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
100459 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },102058 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
100460 .{ ._, ._ps, .@"and", .tmp0x, .lea(.tmp1x), ._, ._ },102059 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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, ._, ._, ._, ._ },
100474 } },102060 } },
100475 }, .{102061 }, .{
100476 .required_features = .{ .@"64bit", .sse, null, null },102062 .required_features = .{ .avx, null, null, null },
100477 .src_constraints = .{ .{ .float = .dword }, .any, .any },102063 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
100478 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },102064 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
100479 .patterns = &.{102065 .patterns = &.{
100480 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },102066 .{ .src = .{ .mem, .none, .none } },
102067 .{ .src = .{ .to_sse, .none, .none } },
100481 },102068 },
100482 .call_frame = .{ .alignment = .@"16" },
100483 .extra_temps = .{102069 .extra_temps = .{
100484 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },102070 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
100485 .{ .type = .i64, .kind = .{ .reg = .rax } },102071 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },
100486 .{ .type = .i64, .kind = .{ .reg = .rdx } },102072 .unused,
100487 .{ .type = .usize, .kind = .{ .reg = .rdi } },102073 .unused,
100488 .{ .type = .u32, .kind = .{ .reg = .ecx } },102074 .unused,
100489 .unused,102075 .unused,
100490 .unused,102076 .unused,
100491 .unused,102077 .unused,
...@@ -100493,21 +102079,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100493,21 +102079,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100493 .unused,102079 .unused,
100494 .unused,102080 .unused,
100495 },102081 },
100496 .dst_temps = .{ .mem, .unused },102082 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100497 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100498 .each = .{ .once = &.{102083 .each = .{ .once = &.{
100499 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },102084 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100500 .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ },102085 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
100501 .{ ._, ._, .mov, .memd(.dst0q, 8), .tmp2q, ._, ._ },102086 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
100502 .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ },
100503 .{ ._, ._, .lea, .tmp3p, .memd(.dst0, 16), ._, ._ },
100504 .{ ._, ._, .mov, .tmp4d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
100505 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
100506 } },102087 } },
100507 }, .{102088 }, .{
100508 .required_features = .{ .avx, null, null, null },102089 .required_features = .{ .ssse3, null, null, null },
100509 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102090 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
100510 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },102091 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },
100511 .patterns = &.{102092 .patterns = &.{
100512 .{ .src = .{ .mem, .none, .none } },102093 .{ .src = .{ .mem, .none, .none } },
100513 .{ .src = .{ .to_sse, .none, .none } },102094 .{ .src = .{ .to_sse, .none, .none } },
...@@ -100528,12 +102109,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100528,12 +102109,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100528 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },102109 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100529 .each = .{ .once = &.{102110 .each = .{ .once = &.{
100530 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },102111 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100531 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },102112 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
100532 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },102113 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
100533 } },102114 } },
100534 }, .{102115 }, .{
100535 .required_features = .{ .ssse3, null, null, null },102116 .required_features = .{ .avx, null, null, null },
100536 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102117 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
100537 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },102118 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },
100538 .patterns = &.{102119 .patterns = &.{
100539 .{ .src = .{ .mem, .none, .none } },102120 .{ .src = .{ .mem, .none, .none } },
...@@ -100555,12 +102136,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100555,12 +102136,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100555 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },102136 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100556 .each = .{ .once = &.{102137 .each = .{ .once = &.{
100557 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },102138 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100558 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },102139 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
100559 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },102140 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
100560 } },102141 } },
100561 }, .{102142 }, .{
100562 .required_features = .{ .avx, null, null, null },102143 .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 },
100564 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },102145 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },
100565 .patterns = &.{102146 .patterns = &.{
100566 .{ .src = .{ .to_mem, .none, .none } },102147 .{ .src = .{ .to_mem, .none, .none } },
...@@ -100579,11 +102160,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100579,11 +102160,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100579 .unused,102160 .unused,
100580 },102161 },
100581 .dst_temps = .{ .mem, .unused },102162 .dst_temps = .{ .mem, .unused },
102163 .clobbers = .{ .eflags = true },
100582 .each = .{ .once = &.{102164 .each = .{ .once = &.{
100583 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },102165 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100584 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },102166 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
100585 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102167 .{ ._, ._, .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), ._, ._ },
100587 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },102169 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },
100588 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },102170 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
100589 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },102171 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
...@@ -100591,8 +102173,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100591,8 +102173,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100591 } },102173 } },
100592 }, .{102174 }, .{
100593 .required_features = .{ .ssse3, null, null, null },102175 .required_features = .{ .ssse3, null, null, null },
100594 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102176 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
100595 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },102177 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },
100596 .patterns = &.{102178 .patterns = &.{
100597 .{ .src = .{ .to_mem, .none, .none } },102179 .{ .src = .{ .to_mem, .none, .none } },
100598 },102180 },
...@@ -100610,19 +102192,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100610,19 +102192,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100610 .unused,102192 .unused,
100611 },102193 },
100612 .dst_temps = .{ .mem, .unused },102194 .dst_temps = .{ .mem, .unused },
102195 .clobbers = .{ .eflags = true },
100613 .each = .{ .once = &.{102196 .each = .{ .once = &.{
100614 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },102197 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
100615 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },102198 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
100616 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102199 .{ ._, ._, .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), ._, ._ },
100618 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },102201 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },
100619 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },102202 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
100620 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },102203 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100621 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100622 } },102205 } },
100623 }, .{102206 }, .{
100624 .required_features = .{ .sse, .slow_incdec, null, null },102207 .required_features = .{ .sse2, .slow_incdec, null, null },
100625 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },102208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100626 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },102209 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
100627 .patterns = &.{102210 .patterns = &.{
100628 .{ .src = .{ .to_mem, .none, .none } },102211 .{ .src = .{ .to_mem, .none, .none } },
...@@ -100641,16 +102224,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100641,16 +102224,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100641 .unused,102224 .unused,
100642 },102225 },
100643 .dst_temps = .{ .mem, .unused },102226 .dst_temps = .{ .mem, .unused },
102227 .clobbers = .{ .eflags = true },
100644 .each = .{ .once = &.{102228 .each = .{ .once = &.{
100645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102229 .{ ._, ._, .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), ._, ._ },
100647 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },102231 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
100648 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },102232 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
100649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102233 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100650 } },102234 } },
100651 }, .{102235 }, .{
100652 .required_features = .{ .sse, null, null, null },102236 .required_features = .{ .sse2, null, null, null },
100653 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },102237 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100654 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },102238 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
100655 .patterns = &.{102239 .patterns = &.{
100656 .{ .src = .{ .to_mem, .none, .none } },102240 .{ .src = .{ .to_mem, .none, .none } },
...@@ -100669,26 +102253,529 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100669,26 +102253,529 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100669 .unused,102253 .unused,
100670 },102254 },
100671 .dst_temps = .{ .mem, .unused },102255 .dst_temps = .{ .mem, .unused },
102256 .clobbers = .{ .eflags = true },
100672 .each = .{ .once = &.{102257 .each = .{ .once = &.{
100673 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102258 .{ ._, ._, .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), ._, ._ },
100675 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },102260 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
100676 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },102261 .{ ._, ._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, ._, ._, ._ },
100677 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },102322 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
100678 } },102323 } },
100679 }, .{102324 }, .{
100680 .required_features = .{ .avx, .slow_incdec, null, null },102325 .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 },
100682 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },102483 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
100683 .patterns = &.{102484 .patterns = &.{
100684 .{ .src = .{ .to_mem, .none, .none } },102485 .{ .src = .{ .to_mem, .none, .none } },
100685 },102486 },
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 },
100687 .extra_temps = .{102774 .extra_temps = .{
100688 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100689 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102776 .{ .type = .f64, .kind = .{ .reg = .st7 } },
100690 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },102777 .{ .type = .i32, .kind = .mem },
100691 .{ .type = .i32, .kind = .{ .reg = .eax } },102778 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
100692 .unused,102779 .unused,
100693 .unused,102780 .unused,
100694 .unused,102781 .unused,
...@@ -100698,27 +102785,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100698,27 +102785,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100698 .unused,102785 .unused,
100699 },102786 },
100700 .dst_temps = .{ .mem, .unused },102787 .dst_temps = .{ .mem, .unused },
100701 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100702 .each = .{ .once = &.{102788 .each = .{ .once = &.{
100703 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102789 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100704 .{ .@"0:", .v_ss, .mov, .tmp1x, .memsia(.src0d, .@"4", .tmp0, .add_unaligned_size), ._, ._ },102790 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
100705 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102791 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },
100706 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },102792 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
100707 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },102793 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
102794 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100708 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102795 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100709 } },102796 } },
100710 }, .{102797 }, .{
100711 .required_features = .{ .avx, null, null, null },102798 .required_features = .{ .avx, null, null, null },
100712 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },102799 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100713 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },102800 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100714 .patterns = &.{102801 .patterns = &.{
100715 .{ .src = .{ .to_mem, .none, .none } },102802 .{ .src = .{ .to_mem, .none, .none } },
100716 },102803 },
100717 .call_frame = .{ .alignment = .@"16" },102804 .call_frame = .{ .alignment = .@"16" },
100718 .extra_temps = .{102805 .extra_temps = .{
100719 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102806 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100720 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102807 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
100721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },102808 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100722 .{ .type = .i32, .kind = .{ .reg = .eax } },102809 .{ .type = .i32, .kind = .{ .reg = .eax } },
100723 .unused,102810 .unused,
100724 .unused,102811 .unused,
...@@ -100732,24 +102819,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100732,24 +102819,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100732 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102819 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100733 .each = .{ .once = &.{102820 .each = .{ .once = &.{
100734 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102821 .{ ._, ._, .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), ._, ._ },
100736 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102823 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100737 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },102824 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
100738 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },102825 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100739 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },102826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100740 } },102827 } },
100741 }, .{102828 }, .{
100742 .required_features = .{ .sse, .slow_incdec, null, null },102829 .required_features = .{ .sse2, null, null, null },
100743 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },102830 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100744 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },102831 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100745 .patterns = &.{102832 .patterns = &.{
100746 .{ .src = .{ .to_mem, .none, .none } },102833 .{ .src = .{ .to_mem, .none, .none } },
100747 },102834 },
100748 .call_frame = .{ .alignment = .@"16" },102835 .call_frame = .{ .alignment = .@"16" },
100749 .extra_temps = .{102836 .extra_temps = .{
100750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100751 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102838 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
100752 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },102839 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100753 .{ .type = .i32, .kind = .{ .reg = .eax } },102840 .{ .type = .i32, .kind = .{ .reg = .eax } },
100754 .unused,102841 .unused,
100755 .unused,102842 .unused,
...@@ -100763,24 +102850,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100763,24 +102850,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100763 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102850 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100764 .each = .{ .once = &.{102851 .each = .{ .once = &.{
100765 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102852 .{ ._, ._, .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), ._, ._ },
100767 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102854 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100768 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },102855 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
100769 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },102856 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100770 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102857 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100771 } },102858 } },
100772 }, .{102859 }, .{
100773 .required_features = .{ .sse, null, null, null },102860 .required_features = .{ .sse, null, null, null },
100774 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },102861 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100775 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },102862 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
100776 .patterns = &.{102863 .patterns = &.{
100777 .{ .src = .{ .to_mem, .none, .none } },102864 .{ .src = .{ .to_mem, .none, .none } },
100778 },102865 },
100779 .call_frame = .{ .alignment = .@"16" },102866 .call_frame = .{ .alignment = .@"16" },
100780 .extra_temps = .{102867 .extra_temps = .{
100781 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102868 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100782 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },102869 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
100783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },102870 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100784 .{ .type = .i32, .kind = .{ .reg = .eax } },102871 .{ .type = .i32, .kind = .{ .reg = .eax } },
100785 .unused,102872 .unused,
100786 .unused,102873 .unused,
...@@ -100794,74 +102881,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100794,74 +102881,59 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100794 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },102881 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100795 .each = .{ .once = &.{102882 .each = .{ .once = &.{
100796 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102883 .{ ._, ._, .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), ._, ._ },
100798 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },102886 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100799 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },102887 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
100800 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },102888 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
100801 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },102889 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100802 } },102890 } },
100803 }, .{102891 }, .{
100804 .required_features = .{ .avx, null, null, null },102892 .required_features = .{ .avx, null, null, null },
100805 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102893 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
100806 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },102894 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
100807 .patterns = &.{102895 .patterns = &.{
100808 .{ .src = .{ .mem, .none, .none } },102896 .{ .src = .{ .mem, .none, .none } },
100809 .{ .src = .{ .to_sse, .none, .none } },102897 .{ .src = .{ .to_sse, .none, .none } },
100810 },102898 },
100811 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },102899 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100812 .each = .{ .once = &.{102900 .each = .{ .once = &.{
100813 .{ ._, .v_, .cvttps2dq, .dst0x, .src0x, ._, ._ },102901 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
100814 .{ ._, .vp_w, .ackssd, .dst0x, .dst0x, .dst0x, ._ },
100815 } },102902 } },
100816 }, .{102903 }, .{
100817 .required_features = .{ .sse2, null, null, null },102904 .required_features = .{ .sse2, null, null, null },
100818 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102905 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
100819 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },102906 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
100820 .patterns = &.{102907 .patterns = &.{
100821 .{ .src = .{ .mem, .none, .none } },102908 .{ .src = .{ .mem, .none, .none } },
100822 .{ .src = .{ .to_sse, .none, .none } },102909 .{ .src = .{ .to_sse, .none, .none } },
100823 },102910 },
100824 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },102911 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100825 .each = .{ .once = &.{102912 .each = .{ .once = &.{
100826 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },102913 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },
100827 .{ ._, .p_w, .ackssd, .dst0x, .dst0x, ._, ._ },
100828 } },102914 } },
100829 }, .{102915 }, .{
100830 .required_features = .{ .avx, null, null, null },102916 .required_features = .{ .avx, null, null, null },
100831 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102917 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
100832 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },102918 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .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 },
100846 .patterns = &.{102919 .patterns = &.{
100847 .{ .src = .{ .mem, .none, .none } },102920 .{ .src = .{ .mem, .none, .none } },
100848 .{ .src = .{ .to_sse, .none, .none } },102921 .{ .src = .{ .to_sse, .none, .none } },
100849 },102922 },
100850 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },102923 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
100851 .each = .{ .once = &.{102924 .each = .{ .once = &.{
100852 .{ ._, ._, .cvttps2dq, .dst0x, .src0x, ._, ._ },102925 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },
100853 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },
100854 } },102926 } },
100855 }, .{102927 }, .{
100856 .required_features = .{ .avx, null, null, null },102928 .required_features = .{ .avx, null, null, null },
100857 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102929 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
100858 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },102930 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },
100859 .patterns = &.{102931 .patterns = &.{
100860 .{ .src = .{ .to_mem, .none, .none } },102932 .{ .src = .{ .to_mem, .none, .none } },
100861 },102933 },
100862 .extra_temps = .{102934 .extra_temps = .{
100863 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100864 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },102936 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
100865 .unused,102937 .unused,
100866 .unused,102938 .unused,
100867 .unused,102939 .unused,
...@@ -100873,24 +102945,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100873,24 +102945,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100873 .unused,102945 .unused,
100874 },102946 },
100875 .dst_temps = .{ .mem, .unused },102947 .dst_temps = .{ .mem, .unused },
102948 .clobbers = .{ .eflags = true },
100876 .each = .{ .once = &.{102949 .each = .{ .once = &.{
100877 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100878 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },102951 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100879 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },102952 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100880 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },102953 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
100881 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
100882 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102954 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100883 } },102955 } },
100884 }, .{102956 }, .{
100885 .required_features = .{ .sse2, null, null, null },102957 .required_features = .{ .sse2, null, null, null },
100886 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102958 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
100887 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },102959 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },
100888 .patterns = &.{102960 .patterns = &.{
100889 .{ .src = .{ .to_mem, .none, .none } },102961 .{ .src = .{ .to_mem, .none, .none } },
100890 },102962 },
100891 .extra_temps = .{102963 .extra_temps = .{
100892 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102964 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100893 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },102965 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
100894 .unused,102966 .unused,
100895 .unused,102967 .unused,
100896 .unused,102968 .unused,
...@@ -100902,24 +102974,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100902,24 +102974,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100902 .unused,102974 .unused,
100903 },102975 },
100904 .dst_temps = .{ .mem, .unused },102976 .dst_temps = .{ .mem, .unused },
102977 .clobbers = .{ .eflags = true },
100905 .each = .{ .once = &.{102978 .each = .{ .once = &.{
100906 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102979 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100907 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },102980 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
100908 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },102981 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
100909 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
100910 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },102982 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
100911 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },102983 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100912 } },102984 } },
100913 }, .{102985 }, .{
100914 .required_features = .{ .avx, null, null, null },102986 .required_features = .{ .x87, null, null, null },
100915 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },102987 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100916 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },102988 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100917 .patterns = &.{102989 .patterns = &.{
100918 .{ .src = .{ .to_mem, .none, .none } },102990 .{ .src = .{ .to_mem, .none, .none } },
100919 },102991 },
100920 .extra_temps = .{102992 .extra_temps = .{
100921 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },102993 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100922 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },102994 .{ .type = .f64, .kind = .{ .reg = .st7 } },
100923 .unused,102995 .unused,
100924 .unused,102996 .unused,
100925 .unused,102997 .unused,
...@@ -100933,24 +103005,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100933,24 +103005,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100933 .dst_temps = .{ .mem, .unused },103005 .dst_temps = .{ .mem, .unused },
100934 .each = .{ .once = &.{103006 .each = .{ .once = &.{
100935 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103007 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100936 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },103008 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
100937 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },103009 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
100938 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },103010 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100939 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
100940 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103011 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100941 } },103012 } },
100942 }, .{103013 }, .{
100943 .required_features = .{ .sse4_1, null, null, null },103014 .required_features = .{ .x87, null, null, null },
100944 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },103015 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100945 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },103016 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
100946 .patterns = &.{103017 .patterns = &.{
100947 .{ .src = .{ .to_mem, .none, .none } },103018 .{ .src = .{ .to_mem, .none, .none } },
100948 },103019 },
100949 .extra_temps = .{103020 .extra_temps = .{
100950 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100951 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },103022 .{ .type = .f64, .kind = .{ .reg = .st7 } },
100952 .unused,103023 .{ .type = .i64, .kind = .mem },
100953 .unused,103024 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
100954 .unused,103025 .unused,
100955 .unused,103026 .unused,
100956 .unused,103027 .unused,
...@@ -100962,24 +103033,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100962,24 +103033,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100962 .dst_temps = .{ .mem, .unused },103033 .dst_temps = .{ .mem, .unused },
100963 .each = .{ .once = &.{103034 .each = .{ .once = &.{
100964 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103035 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
100965 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },103036 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
100966 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },103037 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
100967 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },103038 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
100968 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },103039 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103040 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
100969 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
100970 } },103042 } },
100971 }, .{103043 }, .{
100972 .required_features = .{ .avx, null, null, null },103044 .required_features = .{ .avx, null, null, null },
100973 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103045 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
100974 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },103046 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
100975 .patterns = &.{103047 .patterns = &.{
100976 .{ .src = .{ .to_mem, .none, .none } },103048 .{ .src = .{ .to_mem, .none, .none } },
100977 },103049 },
100978 .call_frame = .{ .alignment = .@"16" },103050 .call_frame = .{ .alignment = .@"16" },
100979 .extra_temps = .{103051 .extra_temps = .{
100980 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
100981 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103053 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
100982 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },103054 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
100983 .{ .type = .i32, .kind = .{ .reg = .eax } },103055 .{ .type = .i32, .kind = .{ .reg = .eax } },
100984 .unused,103056 .unused,
100985 .unused,103057 .unused,
...@@ -100993,25 +103065,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -100993,25 +103065,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
100993 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103065 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
100994 .each = .{ .once = &.{103066 .each = .{ .once = &.{
100995 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103067 .{ ._, ._, .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), ._, ._ },
100997 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103069 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
100998 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },103070 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
100999 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103071 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101000 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101001 } },103073 } },
101002 }, .{103074 }, .{
101003 .required_features = .{ .sse, null, null, null },103075 .required_features = .{ .avx, null, null, null },
101004 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103076 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101005 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },103077 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101006 .patterns = &.{103078 .patterns = &.{
101007 .{ .src = .{ .to_mem, .none, .none } },103079 .{ .src = .{ .to_mem, .none, .none } },
101008 },103080 },
101009 .call_frame = .{ .alignment = .@"16" },103081 .call_frame = .{ .alignment = .@"16" },
101010 .extra_temps = .{103082 .extra_temps = .{
101011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101012 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103084 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },103085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
101014 .{ .type = .i32, .kind = .{ .reg = .eax } },103086 .{ .type = .u32, .kind = .{ .reg = .eax } },
101015 .unused,103087 .unused,
101016 .unused,103088 .unused,
101017 .unused,103089 .unused,
...@@ -101024,48 +103096,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101024,48 +103096,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101024 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103096 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101025 .each = .{ .once = &.{103097 .each = .{ .once = &.{
101026 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103098 .{ ._, ._, .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), ._, ._ },
101028 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103100 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101029 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },103101 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101030 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },103102 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101031 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103103 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101032 } },103104 } },
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 } },
101045 }, .{103105 }, .{
101046 .required_features = .{ .sse2, null, null, null },103106 .required_features = .{ .sse2, null, null, null },
101047 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },103107 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101048 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },103108 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .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 },
101061 .patterns = &.{103109 .patterns = &.{
101062 .{ .src = .{ .to_mem, .none, .none } },103110 .{ .src = .{ .to_mem, .none, .none } },
101063 },103111 },
103112 .call_frame = .{ .alignment = .@"16" },
101064 .extra_temps = .{103113 .extra_temps = .{
101065 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101066 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },103115 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101067 .unused,103116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
101068 .unused,103117 .{ .type = .i32, .kind = .{ .reg = .eax } },
101069 .unused,103118 .unused,
101070 .unused,103119 .unused,
101071 .unused,103120 .unused,
...@@ -101075,25 +103124,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101075,25 +103124,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101075 .unused,103124 .unused,
101076 },103125 },
101077 .dst_temps = .{ .mem, .unused },103126 .dst_temps = .{ .mem, .unused },
103127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101078 .each = .{ .once = &.{103128 .each = .{ .once = &.{
101079 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103129 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101080 .{ .@"0:", .v_, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },103130 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101081 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },103131 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101082 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },103132 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103133 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101083 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101084 } },103135 } },
101085 }, .{103136 }, .{
101086 .required_features = .{ .sse2, null, null, null },103137 .required_features = .{ .sse2, null, null, null },
101087 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },103138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101088 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },103139 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101089 .patterns = &.{103140 .patterns = &.{
101090 .{ .src = .{ .to_mem, .none, .none } },103141 .{ .src = .{ .to_mem, .none, .none } },
101091 },103142 },
103143 .call_frame = .{ .alignment = .@"16" },
101092 .extra_temps = .{103144 .extra_temps = .{
101093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101094 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },103146 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101095 .unused,103147 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
101096 .unused,103148 .{ .type = .u32, .kind = .{ .reg = .eax } },
101097 .unused,103149 .unused,
101098 .unused,103150 .unused,
101099 .unused,103151 .unused,
...@@ -101103,16 +103155,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101103,16 +103155,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101103 .unused,103155 .unused,
101104 },103156 },
101105 .dst_temps = .{ .mem, .unused },103157 .dst_temps = .{ .mem, .unused },
103158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101106 .each = .{ .once = &.{103159 .each = .{ .once = &.{
101107 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103160 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101108 .{ .@"0:", ._, .cvttps2dq, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },103161 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101109 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },103162 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101110 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },103163 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103164 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101111 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101112 } },103166 } },
101113 }, .{103167 }, .{
101114 .required_features = .{ .avx, null, null, null },103168 .required_features = .{ .sse, null, null, null },
101115 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103169 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101116 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },103170 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101117 .patterns = &.{103171 .patterns = &.{
101118 .{ .src = .{ .to_mem, .none, .none } },103172 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101120,8 +103174,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101120,8 +103174,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101120 .call_frame = .{ .alignment = .@"16" },103174 .call_frame = .{ .alignment = .@"16" },
101121 .extra_temps = .{103175 .extra_temps = .{
101122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101123 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103177 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },103178 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },
101125 .{ .type = .i32, .kind = .{ .reg = .eax } },103179 .{ .type = .i32, .kind = .{ .reg = .eax } },
101126 .unused,103180 .unused,
101127 .unused,103181 .unused,
...@@ -101134,16 +103188,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101134,16 +103188,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101134 .dst_temps = .{ .mem, .unused },103188 .dst_temps = .{ .mem, .unused },
101135 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101136 .each = .{ .once = &.{103190 .each = .{ .once = &.{
101137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103191 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101138 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },103192 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103193 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101139 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103194 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101140 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },103195 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101141 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103196 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103197 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101143 } },103198 } },
101144 }, .{103199 }, .{
101145 .required_features = .{ .avx, null, null, null },103200 .required_features = .{ .sse, null, null, null },
101146 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103201 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101147 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },103202 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101148 .patterns = &.{103203 .patterns = &.{
101149 .{ .src = .{ .to_mem, .none, .none } },103204 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101151,8 +103206,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101151,8 +103206,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101151 .call_frame = .{ .alignment = .@"16" },103206 .call_frame = .{ .alignment = .@"16" },
101152 .extra_temps = .{103207 .extra_temps = .{
101153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103208 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101154 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103209 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },103210 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },
101156 .{ .type = .u32, .kind = .{ .reg = .eax } },103211 .{ .type = .u32, .kind = .{ .reg = .eax } },
101157 .unused,103212 .unused,
101158 .unused,103213 .unused,
...@@ -101165,26 +103220,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101165,26 +103220,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101165 .dst_temps = .{ .mem, .unused },103220 .dst_temps = .{ .mem, .unused },
101166 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103221 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101167 .each = .{ .once = &.{103222 .each = .{ .once = &.{
101168 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103223 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101169 .{ .@"0:", .v_ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },103224 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
103225 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
101170 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103226 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101171 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },103227 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
101172 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103228 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101173 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101174 } },103230 } },
101175 }, .{103231 }, .{
101176 .required_features = .{ .sse, null, null, null },103232 .required_features = .{ .@"64bit", .avx, null, null },
101177 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103233 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101178 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },103234 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101179 .patterns = &.{103235 .patterns = &.{
101180 .{ .src = .{ .to_mem, .none, .none } },103236 .{ .src = .{ .to_mem, .none, .none } },
101181 },103237 },
101182 .call_frame = .{ .alignment = .@"16" },
101183 .extra_temps = .{103238 .extra_temps = .{
101184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103239 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101185 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103240 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },103241 .unused,
101187 .{ .type = .i32, .kind = .{ .reg = .eax } },103242 .unused,
101188 .unused,103243 .unused,
101189 .unused,103244 .unused,
101190 .unused,103245 .unused,
...@@ -101194,28 +103249,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101194,28 +103249,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101194 .unused,103249 .unused,
101195 },103250 },
101196 .dst_temps = .{ .mem, .unused },103251 .dst_temps = .{ .mem, .unused },
101197 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103252 .clobbers = .{ .eflags = true },
101198 .each = .{ .once = &.{103253 .each = .{ .once = &.{
101199 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101200 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },103255 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101201 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103256 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101202 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },103257 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101203 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101205 } },103259 } },
101206 }, .{103260 }, .{
101207 .required_features = .{ .sse, null, null, null },103261 .required_features = .{ .@"64bit", .sse2, null, null },
101208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103262 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101209 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },103263 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101210 .patterns = &.{103264 .patterns = &.{
101211 .{ .src = .{ .to_mem, .none, .none } },103265 .{ .src = .{ .to_mem, .none, .none } },
101212 },103266 },
101213 .call_frame = .{ .alignment = .@"16" },
101214 .extra_temps = .{103267 .extra_temps = .{
101215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103268 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101216 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103269 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
101217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfsi" } } },103270 .unused,
101218 .{ .type = .u32, .kind = .{ .reg = .eax } },103271 .unused,
101219 .unused,103272 .unused,
101220 .unused,103273 .unused,
101221 .unused,103274 .unused,
...@@ -101225,25 +103278,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101225,25 +103278,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101225 .unused,103278 .unused,
101226 },103279 },
101227 .dst_temps = .{ .mem, .unused },103280 .dst_temps = .{ .mem, .unused },
101228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103281 .clobbers = .{ .eflags = true },
101229 .each = .{ .once = &.{103282 .each = .{ .once = &.{
101230 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103283 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101231 .{ .@"0:", ._ss, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },103284 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101232 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103285 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },
101233 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },103286 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101234 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
101235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103287 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101236 } },103288 } },
101237 }, .{103289 }, .{
101238 .required_features = .{ .@"64bit", .avx, null, null },103290 .required_features = .{ .x87, null, null, null },
101239 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103291 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101240 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },103292 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101241 .patterns = &.{103293 .patterns = &.{
101242 .{ .src = .{ .to_mem, .none, .none } },103294 .{ .src = .{ .to_mem, .none, .none } },
101243 },103295 },
101244 .extra_temps = .{103296 .extra_temps = .{
101245 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103297 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101246 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },103298 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101247 .unused,103299 .unused,
101248 .unused,103300 .unused,
101249 .unused,103301 .unused,
...@@ -101257,21 +103309,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101257,21 +103309,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101257 .dst_temps = .{ .mem, .unused },103309 .dst_temps = .{ .mem, .unused },
101258 .each = .{ .once = &.{103310 .each = .{ .once = &.{
101259 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103311 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101260 .{ .@"0:", .v_, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },103312 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
101261 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },103313 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
101262 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103314 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101263 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103315 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101264 } },103316 } },
101265 }, .{103317 }, .{
101266 .required_features = .{ .@"64bit", .sse, null, null },103318 .required_features = .{ .avx, null, null, null },
101267 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103319 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101268 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },103320 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101269 .patterns = &.{103321 .patterns = &.{
101270 .{ .src = .{ .to_mem, .none, .none } },103322 .{ .src = .{ .to_mem, .none, .none } },
101271 },103323 },
103324 .call_frame = .{ .alignment = .@"16" },
101272 .extra_temps = .{103325 .extra_temps = .{
101273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103326 .{ .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 } },
101275 .unused,103330 .unused,
101276 .unused,103331 .unused,
101277 .unused,103332 .unused,
...@@ -101279,20 +103334,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101279,20 +103334,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101279 .unused,103334 .unused,
101280 .unused,103335 .unused,
101281 .unused,103336 .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,
101282 .unused,103366 .unused,
101283 .unused,103367 .unused,
101284 },103368 },
101285 .dst_temps = .{ .mem, .unused },103369 .dst_temps = .{ .mem, .unused },
103370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101286 .each = .{ .once = &.{103371 .each = .{ .once = &.{
101287 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103372 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101288 .{ .@"0:", ._, .cvttss2si, .tmp1q, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },103373 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
101289 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },103374 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101290 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103375 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103376 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101291 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103377 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101292 } },103378 } },
101293 }, .{103379 }, .{
101294 .required_features = .{ .avx, null, null, null },103380 .required_features = .{ .sse2, null, null, null },
101295 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103381 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101296 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },103382 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101297 .patterns = &.{103383 .patterns = &.{
101298 .{ .src = .{ .to_mem, .none, .none } },103384 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101300,8 +103386,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101300,8 +103386,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101300 .call_frame = .{ .alignment = .@"16" },103386 .call_frame = .{ .alignment = .@"16" },
101301 .extra_temps = .{103387 .extra_temps = .{
101302 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103388 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101303 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103389 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101304 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },103390 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
101305 .{ .type = .i64, .kind = .{ .reg = .rax } },103391 .{ .type = .i64, .kind = .{ .reg = .rax } },
101306 .unused,103392 .unused,
101307 .unused,103393 .unused,
...@@ -101315,15 +103401,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101315,15 +103401,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101315 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101316 .each = .{ .once = &.{103402 .each = .{ .once = &.{
101317 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103403 .{ ._, ._, .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), ._, ._ },
101319 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103405 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101320 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103406 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101321 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103407 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101322 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103408 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101323 } },103409 } },
101324 }, .{103410 }, .{
101325 .required_features = .{ .avx, null, null, null },103411 .required_features = .{ .sse2, null, null, null },
101326 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103412 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101327 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },103413 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
101328 .patterns = &.{103414 .patterns = &.{
101329 .{ .src = .{ .to_mem, .none, .none } },103415 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101331,8 +103417,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101331,8 +103417,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101331 .call_frame = .{ .alignment = .@"16" },103417 .call_frame = .{ .alignment = .@"16" },
101332 .extra_temps = .{103418 .extra_temps = .{
101333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103419 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101334 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103420 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },103421 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
101336 .{ .type = .u64, .kind = .{ .reg = .rax } },103422 .{ .type = .u64, .kind = .{ .reg = .rax } },
101337 .unused,103423 .unused,
101338 .unused,103424 .unused,
...@@ -101346,15 +103432,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101346,15 +103432,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101346 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101347 .each = .{ .once = &.{103433 .each = .{ .once = &.{
101348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103434 .{ ._, ._, .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), ._, ._ },
101350 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103436 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101351 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103437 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101352 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103438 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101353 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103439 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101354 } },103440 } },
101355 }, .{103441 }, .{
101356 .required_features = .{ .sse, null, null, null },103442 .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 },
101358 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },103444 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
101359 .patterns = &.{103445 .patterns = &.{
101360 .{ .src = .{ .to_mem, .none, .none } },103446 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101362,8 +103448,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101362,8 +103448,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101362 .call_frame = .{ .alignment = .@"16" },103448 .call_frame = .{ .alignment = .@"16" },
101363 .extra_temps = .{103449 .extra_temps = .{
101364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103450 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101365 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103451 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfdi" } } },103452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },
101367 .{ .type = .i64, .kind = .{ .reg = .rax } },103453 .{ .type = .i64, .kind = .{ .reg = .rax } },
101368 .unused,103454 .unused,
101369 .unused,103455 .unused,
...@@ -101377,15 +103463,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101377,15 +103463,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101377 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103463 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101378 .each = .{ .once = &.{103464 .each = .{ .once = &.{
101379 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103465 .{ ._, ._, .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), ._, ._ },
101381 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103468 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101382 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103469 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101383 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103470 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103471 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101385 } },103472 } },
101386 }, .{103473 }, .{
101387 .required_features = .{ .sse, null, null, null },103474 .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 },
101389 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },103476 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
101390 .patterns = &.{103477 .patterns = &.{
101391 .{ .src = .{ .to_mem, .none, .none } },103478 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101393,8 +103480,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101393,8 +103480,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101393 .call_frame = .{ .alignment = .@"16" },103480 .call_frame = .{ .alignment = .@"16" },
101394 .extra_temps = .{103481 .extra_temps = .{
101395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103482 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101396 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103483 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfdi" } } },103484 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },
101398 .{ .type = .u64, .kind = .{ .reg = .rax } },103485 .{ .type = .u64, .kind = .{ .reg = .rax } },
101399 .unused,103486 .unused,
101400 .unused,103487 .unused,
...@@ -101408,15 +103495,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101408,15 +103495,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103495 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101409 .each = .{ .once = &.{103496 .each = .{ .once = &.{
101410 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103497 .{ ._, ._, .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), ._, ._ },
101412 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103500 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101413 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103501 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101414 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103502 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103503 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101416 } },103504 } },
101417 }, .{103505 }, .{
101418 .required_features = .{ .avx, null, null, null },103506 .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 },
101420 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },103508 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
101421 .patterns = &.{103509 .patterns = &.{
101422 .{ .src = .{ .to_mem, .none, .none } },103510 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101424,8 +103512,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101424,8 +103512,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101424 .call_frame = .{ .alignment = .@"16" },103512 .call_frame = .{ .alignment = .@"16" },
101425 .extra_temps = .{103513 .extra_temps = .{
101426 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103514 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101427 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103515 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },103516 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
101429 .{ .type = .u64, .kind = .{ .reg = .rax } },103517 .{ .type = .u64, .kind = .{ .reg = .rax } },
101430 .{ .type = .i64, .kind = .{ .reg = .rdx } },103518 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101431 .unused,103519 .unused,
...@@ -101439,16 +103527,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101439,16 +103527,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103527 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101440 .each = .{ .once = &.{103528 .each = .{ .once = &.{
101441 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103529 .{ ._, ._, .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), ._, ._ },
101443 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103531 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101444 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103532 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101445 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },103533 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101446 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103534 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101447 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103535 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101448 } },103536 } },
101449 }, .{103537 }, .{
101450 .required_features = .{ .avx, null, null, null },103538 .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 },
101452 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },103540 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
101453 .patterns = &.{103541 .patterns = &.{
101454 .{ .src = .{ .to_mem, .none, .none } },103542 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101456,8 +103544,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101456,8 +103544,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101456 .call_frame = .{ .alignment = .@"16" },103544 .call_frame = .{ .alignment = .@"16" },
101457 .extra_temps = .{103545 .extra_temps = .{
101458 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103546 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101459 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103547 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },103548 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
101461 .{ .type = .u64, .kind = .{ .reg = .rax } },103549 .{ .type = .u64, .kind = .{ .reg = .rax } },
101462 .{ .type = .u64, .kind = .{ .reg = .rdx } },103550 .{ .type = .u64, .kind = .{ .reg = .rdx } },
101463 .unused,103551 .unused,
...@@ -101471,16 +103559,80 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101471,16 +103559,80 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101471 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103559 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101472 .each = .{ .once = &.{103560 .each = .{ .once = &.{
101473 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103561 .{ ._, ._, .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), ._, ._ },
101475 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103563 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101476 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103564 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101477 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },103565 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101478 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
101479 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103631 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101480 } },103632 } },
101481 }, .{103633 }, .{
101482 .required_features = .{ .sse, null, null, null },103634 .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 },
101484 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },103636 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
101485 .patterns = &.{103637 .patterns = &.{
101486 .{ .src = .{ .to_mem, .none, .none } },103638 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101488,8 +103640,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101488,8 +103640,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101488 .call_frame = .{ .alignment = .@"16" },103640 .call_frame = .{ .alignment = .@"16" },
101489 .extra_temps = .{103641 .extra_temps = .{
101490 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103642 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101491 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103643 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfti" } } },103644 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },
101493 .{ .type = .u64, .kind = .{ .reg = .rax } },103645 .{ .type = .u64, .kind = .{ .reg = .rax } },
101494 .{ .type = .i64, .kind = .{ .reg = .rdx } },103646 .{ .type = .i64, .kind = .{ .reg = .rdx } },
101495 .unused,103647 .unused,
...@@ -101503,16 +103655,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101503,16 +103655,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101503 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103655 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101504 .each = .{ .once = &.{103656 .each = .{ .once = &.{
101505 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103657 .{ ._, ._, .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), ._, ._ },
101507 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103660 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101508 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103661 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101509 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },103662 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101510 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103663 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101511 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103664 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101512 } },103665 } },
101513 }, .{103666 }, .{
101514 .required_features = .{ .sse, null, null, null },103667 .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 },
101516 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },103669 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
101517 .patterns = &.{103670 .patterns = &.{
101518 .{ .src = .{ .to_mem, .none, .none } },103671 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101520,8 +103673,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101520,8 +103673,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101520 .call_frame = .{ .alignment = .@"16" },103673 .call_frame = .{ .alignment = .@"16" },
101521 .extra_temps = .{103674 .extra_temps = .{
101522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },103675 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101523 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103676 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfti" } } },103677 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },
101525 .{ .type = .u64, .kind = .{ .reg = .rax } },103678 .{ .type = .u64, .kind = .{ .reg = .rax } },
101526 .{ .type = .u64, .kind = .{ .reg = .rdx } },103679 .{ .type = .u64, .kind = .{ .reg = .rdx } },
101527 .unused,103680 .unused,
...@@ -101535,16 +103688,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101535,16 +103688,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },103688 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101536 .each = .{ .once = &.{103689 .each = .{ .once = &.{
101537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },103690 .{ ._, ._, .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), ._, ._ },
101539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },103693 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
101540 .{ ._, ._, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },103694 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
101541 .{ ._, ._, .mov, .memsiad(.dst0q, .@"4", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },103695 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
101542 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103696 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101543 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103697 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101544 } },103698 } },
101545 }, .{103699 }, .{
101546 .required_features = .{ .@"64bit", .avx, null, null },103700 .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 },
101548 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },103702 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101549 .patterns = &.{103703 .patterns = &.{
101550 .{ .src = .{ .to_mem, .none, .none } },103704 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101555,8 +103709,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101555,8 +103709,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101555 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103709 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101556 .{ .type = .usize, .kind = .{ .reg = .rdi } },103710 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101557 .{ .type = .usize, .kind = .{ .reg = .rsi } },103711 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101558 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103712 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101559 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },103713 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
101560 .unused,103714 .unused,
101561 .unused,103715 .unused,
101562 .unused,103716 .unused,
...@@ -101570,15 +103724,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101570,15 +103724,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101570 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103724 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101571 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },103725 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101572 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103726 .{ ._, ._, .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), ._, ._ },
101574 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103728 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101575 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103729 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101576 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103730 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101577 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101578 } },103732 } },
101579 }, .{103733 }, .{
101580 .required_features = .{ .@"64bit", .avx, null, null },103734 .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 },
101582 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },103736 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101583 .patterns = &.{103737 .patterns = &.{
101584 .{ .src = .{ .to_mem, .none, .none } },103738 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101589,8 +103743,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101589,8 +103743,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101589 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103743 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101590 .{ .type = .usize, .kind = .{ .reg = .rdi } },103744 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101591 .{ .type = .usize, .kind = .{ .reg = .rsi } },103745 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101592 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103746 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },103747 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
101594 .unused,103748 .unused,
101595 .unused,103749 .unused,
101596 .unused,103750 .unused,
...@@ -101604,15 +103758,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101604,15 +103758,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101604 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103758 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101605 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },103759 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101606 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103760 .{ ._, ._, .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), ._, ._ },
101608 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103762 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101609 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103763 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101610 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103764 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101611 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103765 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101612 } },103766 } },
101613 }, .{103767 }, .{
101614 .required_features = .{ .@"64bit", .sse, null, null },103768 .required_features = .{ .@"64bit", .sse2, null, null },
101615 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103769 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101616 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },103770 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
101617 .patterns = &.{103771 .patterns = &.{
101618 .{ .src = .{ .to_mem, .none, .none } },103772 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101623,8 +103777,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101623,8 +103777,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101623 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103777 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101624 .{ .type = .usize, .kind = .{ .reg = .rdi } },103778 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101625 .{ .type = .usize, .kind = .{ .reg = .rsi } },103779 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101626 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103780 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101627 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfei" } } },103781 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
101628 .unused,103782 .unused,
101629 .unused,103783 .unused,
101630 .unused,103784 .unused,
...@@ -101638,15 +103792,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101638,15 +103792,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101638 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103792 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101639 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },103793 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101640 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103794 .{ ._, ._, .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), ._, ._ },
101642 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103796 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101643 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103797 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101644 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103798 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101645 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103799 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101646 } },103800 } },
101647 }, .{103801 }, .{
101648 .required_features = .{ .@"64bit", .sse, null, null },103802 .required_features = .{ .@"64bit", .sse2, null, null },
101649 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },103803 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101650 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },103804 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101651 .patterns = &.{103805 .patterns = &.{
101652 .{ .src = .{ .to_mem, .none, .none } },103806 .{ .src = .{ .to_mem, .none, .none } },
...@@ -101657,8 +103811,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101657,8 +103811,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101657 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },103811 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101658 .{ .type = .usize, .kind = .{ .reg = .rdi } },103812 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101659 .{ .type = .usize, .kind = .{ .reg = .rsi } },103813 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101660 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },103814 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunssfei" } } },103815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
101662 .unused,103816 .unused,
101663 .unused,103817 .unused,
101664 .unused,103818 .unused,
...@@ -101672,98 +103826,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101672,98 +103826,93 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101672 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },103826 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101673 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },103827 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
101674 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },103828 .{ ._, ._, .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), ._, ._ },
101676 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },103830 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
101677 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },103831 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
101678 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },103832 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
101679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },103833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101680 } },103834 } },
101681 }, .{103835 }, .{
101682 .required_features = .{ .avx, null, null, null },103836 .required_features = .{ .@"64bit", .sse, null, null },
101683 .src_constraints = .{ .{ .float = .qword }, .any, .any },103837 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101684 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },103838 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .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 },
101709 .patterns = &.{103839 .patterns = &.{
101710 .{ .src = .{ .to_mem, .none, .none } },103840 .{ .src = .{ .to_mem, .none, .none } },
101711 },103841 },
103842 .call_frame = .{ .alignment = .@"16" },
101712 .extra_temps = .{103843 .extra_temps = .{
101713 .{ .type = .f64, .kind = .{ .reg = .st7 } },103844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101714 .{ .type = .i16, .kind = .mem },103845 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101715 .unused,103846 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101716 .unused,103847 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101717 .unused,103848 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101718 .unused,103849 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },
101719 .unused,103850 .unused,
101720 .unused,103851 .unused,
101721 .unused,103852 .unused,
101722 .unused,103853 .unused,
101723 .unused,103854 .unused,
101724 },103855 },
101725 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },103856 .dst_temps = .{ .mem, .unused },
103857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101726 .each = .{ .once = &.{103858 .each = .{ .once = &.{
101727 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },103859 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101728 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },103860 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101729 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },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", ._, ._, ._ },
101730 } },103869 } },
101731 }, .{103870 }, .{
101732 .required_features = .{ .x87, null, null, null },103871 .required_features = .{ .@"64bit", .sse, null, null },
101733 .src_constraints = .{ .{ .float = .qword }, .any, .any },103872 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
101734 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },103873 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
101735 .patterns = &.{103874 .patterns = &.{
101736 .{ .src = .{ .to_mem, .none, .none } },103875 .{ .src = .{ .to_mem, .none, .none } },
101737 },103876 },
103877 .call_frame = .{ .alignment = .@"16" },
101738 .extra_temps = .{103878 .extra_temps = .{
101739 .{ .type = .f64, .kind = .{ .reg = .st7 } },103879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101740 .{ .type = .i16, .kind = .mem },103880 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101741 .unused,103881 .{ .type = .usize, .kind = .{ .reg = .rdi } },
101742 .unused,103882 .{ .type = .usize, .kind = .{ .reg = .rsi } },
101743 .unused,103883 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
101744 .unused,103884 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },
101745 .unused,103885 .unused,
101746 .unused,103886 .unused,
101747 .unused,103887 .unused,
101748 .unused,103888 .unused,
101749 .unused,103889 .unused,
101750 },103890 },
101751 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },103891 .dst_temps = .{ .mem, .unused },
103892 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
101752 .each = .{ .once = &.{103893 .each = .{ .once = &.{
101753 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },103894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
101754 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },103895 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
101755 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },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", ._, ._, ._ },
101756 } },103904 } },
101757 }, .{103905 }, .{
101758 .required_features = .{ .x87, null, null, null },103906 .required_features = .{ .x87, null, null, null },
101759 .src_constraints = .{ .{ .float = .qword }, .any, .any },103907 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
101760 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },103908 .dst_constraints = .{ .{ .signed_int = .byte }, .any },
101761 .patterns = &.{103909 .patterns = &.{
101762 .{ .src = .{ .to_mem, .none, .none } },103910 .{ .src = .{ .mem, .none, .none } },
103911 .{ .src = .{ .to_x87, .none, .none } },
101763 },103912 },
101764 .extra_temps = .{103913 .extra_temps = .{
101765 .{ .type = .f64, .kind = .{ .reg = .st7 } },103914 .{ .type = .f64, .kind = .{ .reg = .st7 } },
101766 .unused,103915 .{ .type = .i16, .kind = .mem },
101767 .unused,103916 .unused,
101768 .unused,103917 .unused,
101769 .unused,103918 .unused,
...@@ -101774,20 +103923,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101774,20 +103923,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101774 .unused,103923 .unused,
101775 .unused,103924 .unused,
101776 },103925 },
101777 .dst_temps = .{ .mem, .unused },103926 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101778 .each = .{ .once = &.{103927 .each = .{ .once = &.{
101779 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },103928 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
101780 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },103929 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103930 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
101781 } },103931 } },
101782 }, .{103932 }, .{
101783 .required_features = .{ .x87, null, null, null },103933 .required_features = .{ .x87, null, null, null },
101784 .src_constraints = .{ .{ .float = .qword }, .any, .any },103934 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
101785 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },103935 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },
101786 .patterns = &.{103936 .patterns = &.{
101787 .{ .src = .{ .to_mem, .none, .none } },103937 .{ .src = .{ .mem, .none, .none } },
103938 .{ .src = .{ .to_x87, .none, .none } },
101788 },103939 },
101789 .extra_temps = .{103940 .extra_temps = .{
101790 .{ .type = .f64, .kind = .{ .reg = .st7 } },103941 .{ .type = .f64, .kind = .{ .reg = .st7 } },
103942 .{ .type = .i16, .kind = .mem },
101791 .unused,103943 .unused,
101792 .unused,103944 .unused,
101793 .unused,103945 .unused,
...@@ -101797,50 +103949,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101797,50 +103949,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101797 .unused,103949 .unused,
101798 .unused,103950 .unused,
101799 .unused,103951 .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 } },
101826 },103952 },
101827 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },103953 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
101828 .each = .{ .once = &.{103954 .each = .{ .once = &.{
101829 .{ ._, ._, .cvttsd2si, .dst0q, .src0q, ._, ._ },103955 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
103956 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103957 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
101830 } },103958 } },
101831 }, .{103959 }, .{
101832 .required_features = .{ .x87, null, null, null },103960 .required_features = .{ .x87, .slow_incdec, null, null },
101833 .src_constraints = .{ .{ .float = .qword }, .any, .any },103961 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
101834 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },103962 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
101835 .patterns = &.{103963 .patterns = &.{
101836 .{ .src = .{ .to_mem, .none, .none } },103964 .{ .src = .{ .to_mem, .none, .none } },
101837 },103965 },
101838 .extra_temps = .{103966 .extra_temps = .{
101839 .{ .type = .f64, .kind = .{ .reg = .st7 } },103967 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101840 .unused,103968 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101841 .unused,103969 .{ .type = .f80, .kind = .{ .reg = .st7 } },
101842 .unused,103970 .{ .type = .i16, .kind = .mem },
101843 .unused,103971 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101844 .unused,103972 .unused,
101845 .unused,103973 .unused,
101846 .unused,103974 .unused,
...@@ -101849,55 +103977,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101849,55 +103977,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101849 .unused,103977 .unused,
101850 },103978 },
101851 .dst_temps = .{ .mem, .unused },103979 .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 },
101877 .clobbers = .{ .eflags = true },103980 .clobbers = .{ .eflags = true },
101878 .each = .{ .once = &.{103981 .each = .{ .once = &.{
101879 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },103982 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
101880 .{ ._, .v_, .cvttsd2si, .tmp2q, .src0d, ._, ._ },103983 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101881 .{ ._, .v_sd, .sub, .tmp0x, .src0x, .lea(.tmp1q), ._ },103984 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
101882 .{ ._, .v_, .cvttsd2si, .dst0q, .tmp0d, ._, ._ },103985 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
101883 .{ ._, ._, .mov, .tmp1q, .tmp2q, ._, ._ },103986 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
101884 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },103987 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
101885 .{ ._, ._, .@"and", .dst0q, .tmp2q, ._, ._ },103988 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
101886 .{ ._, ._, .@"or", .dst0q, .tmp1q, ._, ._ },103989 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103990 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
101887 } },103991 } },
101888 }, .{103992 }, .{
101889 .required_features = .{ .@"64bit", .sse2, null, null },103993 .required_features = .{ .x87, null, null, null },
101890 .src_constraints = .{ .{ .float = .qword }, .any, .any },103994 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
101891 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },103995 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },
101892 .patterns = &.{103996 .patterns = &.{
101893 .{ .src = .{ .to_mut_sse, .none, .none } },103997 .{ .src = .{ .to_mem, .none, .none } },
101894 },103998 },
101895 .extra_temps = .{103999 .extra_temps = .{
101896 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },104000 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101897 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },104001 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101898 .{ .type = .f64, .kind = .{ .@"0x1p63_mem" = .{} } },104002 .{ .type = .f80, .kind = .{ .reg = .st7 } },
101899 .unused,104003 .{ .type = .i16, .kind = .mem },
101900 .unused,104004 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101901 .unused,104005 .unused,
101902 .unused,104006 .unused,
101903 .unused,104007 .unused,
...@@ -101905,31 +104009,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101905,31 +104009,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101905 .unused,104009 .unused,
101906 .unused,104010 .unused,
101907 },104011 },
101908 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },104012 .dst_temps = .{ .mem, .unused },
101909 .clobbers = .{ .eflags = true },104013 .clobbers = .{ .eflags = true },
101910 .each = .{ .once = &.{104014 .each = .{ .once = &.{
101911 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },104015 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
101912 .{ ._, ._, .cvttsd2si, .tmp1q, .src0d, ._, ._ },104016 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101913 .{ ._, ._sd, .sub, .src0x, .lea(.tmp0q), ._, ._ },104017 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
101914 .{ ._, ._, .cvttsd2si, .dst0q, .src0d, ._, ._ },104018 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
101915 .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ },104019 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },
101916 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },104020 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
101917 .{ ._, ._, .@"and", .dst0q, .tmp1q, ._, ._ },104021 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
101918 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },104022 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104023 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
101919 } },104024 } },
101920 }, .{104025 }, .{
101921 .required_features = .{ .@"64bit", .x87, null, null },104026 .required_features = .{ .x87, .slow_incdec, null, null },
101922 .src_constraints = .{ .{ .float = .qword }, .any, .any },104027 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
101923 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },104028 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
101924 .patterns = &.{104029 .patterns = &.{
101925 .{ .src = .{ .to_mem, .none, .none } },104030 .{ .src = .{ .to_mem, .none, .none } },
101926 },104031 },
101927 .extra_temps = .{104032 .extra_temps = .{
101928 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },104033 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101929 .{ .type = .f32, .kind = .{ .@"0x1p63_mem" = .{} } },104034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101930 .{ .type = .f64, .kind = .{ .reg = .st6 } },104035 .{ .type = .f80, .kind = .{ .reg = .st7 } },
101931 .{ .type = .f64, .kind = .{ .reg = .st7 } },104036 .{ .type = .i16, .kind = .mem },
101932 .{ .type = .i64, .kind = .mem },104037 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101933 .unused,104038 .unused,
101934 .unused,104039 .unused,
101935 .unused,104040 .unused,
...@@ -101937,61 +104042,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101937,61 +104042,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101937 .unused,104042 .unused,
101938 .unused,104043 .unused,
101939 },104044 },
101940 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },104045 .dst_temps = .{ .mem, .unused },
101941 .clobbers = .{ .eflags = true },104046 .clobbers = .{ .eflags = true },
101942 .each = .{ .once = &.{104047 .each = .{ .once = &.{
101943 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },104048 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
101944 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },104049 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
101945 .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ },104050 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
101946 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },104051 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },
101947 .{ ._, ._, .mov, .dst0q, .tmp4q, ._, ._ },104052 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },
101948 .{ ._, .f_, .sub, .lea(.tmp0d), ._, ._, ._ },104053 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
101949 .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ },104054 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
101950 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },104055 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
101951 .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ },104056 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._, ._ },
101980 } },104057 } },
101981 }, .{104058 }, .{
101982 .required_features = .{ .@"64bit", .sse, null, null },104059 .required_features = .{ .x87, null, null, null },
101983 .src_constraints = .{ .{ .float = .qword }, .any, .any },104060 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
101984 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },104061 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },
101985 .patterns = &.{104062 .patterns = &.{
101986 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },104063 .{ .src = .{ .to_mem, .none, .none } },
101987 },104064 },
101988 .call_frame = .{ .alignment = .@"16" },
101989 .extra_temps = .{104065 .extra_temps = .{
101990 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },104066 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
101991 .unused,104067 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
101992 .unused,104068 .{ .type = .f80, .kind = .{ .reg = .st7 } },
101993 .unused,104069 .{ .type = .i16, .kind = .mem },
101994 .unused,104070 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
101995 .unused,104071 .unused,
101996 .unused,104072 .unused,
101997 .unused,104073 .unused,
...@@ -101999,51 +104075,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101999,51 +104075,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101999 .unused,104075 .unused,
102000 .unused,104076 .unused,
102001 },104077 },
102002 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },104078 .dst_temps = .{ .mem, .unused },
102003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104079 .clobbers = .{ .eflags = true },
102004 .each = .{ .once = &.{104080 .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", ._, ._, ._ },
102006 } },104090 } },
102007 }, .{104091 }, .{
102008 .required_features = .{ .@"64bit", .sse, null, null },104092 .required_features = .{ .x87, null, null, null },
102009 .src_constraints = .{ .{ .float = .qword }, .any, .any },104093 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102010 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },104094 .dst_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any },
102011 .patterns = &.{104095 .patterns = &.{
102012 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },104096 .{ .src = .{ .mem, .none, .none } },
104097 .{ .src = .{ .to_x87, .none, .none } },
102013 },104098 },
102014 .call_frame = .{ .alignment = .@"16" },
102015 .extra_temps = .{104099 .extra_temps = .{
102016 .{ .type = .usize, .kind = .{ .reg = .rdi } },104100 .{ .type = .f80, .kind = .{ .reg = .st7 } },
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,
102025 .unused,104101 .unused,
102026 .unused,104102 .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" } } },
102047 .unused,104103 .unused,
102048 .unused,104104 .unused,
102049 .unused,104105 .unused,
...@@ -102054,23 +104110,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102054,23 +104110,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102054 .unused,104110 .unused,
102055 },104111 },
102056 .dst_temps = .{ .mem, .unused },104112 .dst_temps = .{ .mem, .unused },
102057 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102058 .each = .{ .once = &.{104113 .each = .{ .once = &.{
102059 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },104114 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
102060 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },104115 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },
102061 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102062 } },104116 } },
102063 }, .{104117 }, .{
102064 .required_features = .{ .avx, null, null, null },104118 .required_features = .{ .x87, null, null, null },
102065 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104119 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102066 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },104120 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },
102067 .patterns = &.{104121 .patterns = &.{
102068 .{ .src = .{ .mem, .none, .none } },104122 .{ .src = .{ .to_mem, .none, .none } },
102069 .{ .src = .{ .to_sse, .none, .none } },
102070 },104123 },
102071 .extra_temps = .{104124 .extra_temps = .{
102072 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },104125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102073 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },104126 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102074 .unused,104127 .unused,
102075 .unused,104128 .unused,
102076 .unused,104129 .unused,
...@@ -102081,25 +104134,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102081,25 +104134,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102081 .unused,104134 .unused,
102082 .unused,104135 .unused,
102083 },104136 },
102084 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },104137 .dst_temps = .{ .mem, .unused },
104138 .clobbers = .{ .eflags = true },
102085 .each = .{ .once = &.{104139 .each = .{ .once = &.{
102086 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },104140 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102087 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },104141 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102088 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },104142 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
104143 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
104144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102089 } },104145 } },
102090 }, .{104146 }, .{
102091 .required_features = .{ .ssse3, null, null, null },104147 .required_features = .{ .x87, null, null, null },
102092 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104148 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102093 .dst_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any },104149 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },
102094 .patterns = &.{104150 .patterns = &.{
102095 .{ .src = .{ .mem, .none, .none } },104151 .{ .src = .{ .to_mem, .none, .none } },
102096 .{ .src = .{ .to_sse, .none, .none } },
102097 },104152 },
102098 .extra_temps = .{104153 .extra_temps = .{
102099 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },104154 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102100 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },104155 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102101 .unused,104156 .{ .type = .i32, .kind = .mem },
102102 .unused,104157 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
102103 .unused,104158 .unused,
102104 .unused,104159 .unused,
102105 .unused,104160 .unused,
...@@ -102108,23 +104163,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102108,23 +104163,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102108 .unused,104163 .unused,
102109 .unused,104164 .unused,
102110 },104165 },
102111 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },104166 .dst_temps = .{ .mem, .unused },
104167 .clobbers = .{ .eflags = true },
102112 .each = .{ .once = &.{104168 .each = .{ .once = &.{
102113 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },104169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102114 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },104170 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102115 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },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", ._, ._, ._ },
102116 } },104176 } },
102117 }, .{104177 }, .{
102118 .required_features = .{ .avx, null, null, null },104178 .required_features = .{ .x87, null, null, null },
102119 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104179 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102120 .dst_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .byte } }, .any },104180 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },
102121 .patterns = &.{104181 .patterns = &.{
102122 .{ .src = .{ .mem, .none, .none } },104182 .{ .src = .{ .mem, .none, .none } },
102123 .{ .src = .{ .to_sse, .none, .none } },104183 .{ .src = .{ .to_x87, .none, .none } },
102124 },104184 },
102125 .extra_temps = .{104185 .extra_temps = .{
102126 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },104186 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102127 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },104187 .unused,
102128 .unused,104188 .unused,
102129 .unused,104189 .unused,
102130 .unused,104190 .unused,
...@@ -102135,24 +104195,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102135,24 +104195,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102135 .unused,104195 .unused,
102136 .unused,104196 .unused,
102137 },104197 },
102138 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },104198 .dst_temps = .{ .mem, .unused },
102139 .each = .{ .once = &.{104199 .each = .{ .once = &.{
102140 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },104200 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
102141 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },104201 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },
102142 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .lea(.tmp0x), ._ },
102143 } },104202 } },
102144 }, .{104203 }, .{
102145 .required_features = .{ .avx, null, null, null },104204 .required_features = .{ .x87, null, null, null },
102146 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104205 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102147 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .byte } }, .any },104206 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102148 .patterns = &.{104207 .patterns = &.{
102149 .{ .src = .{ .to_mem, .none, .none } },104208 .{ .src = .{ .to_mem, .none, .none } },
102150 },104209 },
102151 .extra_temps = .{104210 .extra_temps = .{
102152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102153 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },104212 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102154 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },104213 .unused,
102155 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },104214 .unused,
102156 .unused,104215 .unused,
102157 .unused,104216 .unused,
102158 .unused,104217 .unused,
...@@ -102164,27 +104223,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102164,27 +104223,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102164 .dst_temps = .{ .mem, .unused },104223 .dst_temps = .{ .mem, .unused },
102165 .clobbers = .{ .eflags = true },104224 .clobbers = .{ .eflags = true },
102166 .each = .{ .once = &.{104225 .each = .{ .once = &.{
102167 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102168 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102169 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104226 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102170 .{ .@"0:", .v_, .cvttpd2dq, .tmp3x, .memsia(.src0y, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104227 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102171 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp2x, ._ },104228 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
102172 .{ ._, .v_d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
102173 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104229 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102174 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104230 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102175 } },104231 } },
102176 }, .{104232 }, .{
102177 .required_features = .{ .ssse3, null, null, null },104233 .required_features = .{ .x87, null, null, null },
102178 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104234 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102179 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .byte } }, .any },104235 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102180 .patterns = &.{104236 .patterns = &.{
102181 .{ .src = .{ .to_mem, .none, .none } },104237 .{ .src = .{ .to_mem, .none, .none } },
102182 },104238 },
102183 .extra_temps = .{104239 .extra_temps = .{
102184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102185 .{ .type = .vector_16_u8, .kind = .{ .pshufb_trunc_mem = .{ .from = .dword, .to = .byte } } },104241 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102186 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },104242 .{ .type = .i64, .kind = .mem },
102187 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },104243 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
102188 .unused,104244 .unused,
102189 .unused,104245 .unused,
102190 .unused,104246 .unused,
...@@ -102196,25 +104252,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102196,25 +104252,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102196 .dst_temps = .{ .mem, .unused },104252 .dst_temps = .{ .mem, .unused },
102197 .clobbers = .{ .eflags = true },104253 .clobbers = .{ .eflags = true },
102198 .each = .{ .once = &.{104254 .each = .{ .once = &.{
102199 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102200 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
102201 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104255 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102202 .{ .@"0:", ._, .cvttpd2dq, .tmp3x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104256 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102203 .{ ._, .p_b, .shuf, .tmp3x, .tmp2x, ._, ._ },104257 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },
102204 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },104258 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },
102205 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },104259 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
104260 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
102206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102207 } },104262 } },
102208 }, .{104263 }, .{
102209 .required_features = .{ .sse2, .slow_incdec, null, null },104264 .required_features = .{ .x87, null, null, null },
102210 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104265 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102211 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104266 .dst_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any },
102212 .patterns = &.{104267 .patterns = &.{
102213 .{ .src = .{ .to_mem, .none, .none } },104268 .{ .src = .{ .mem, .none, .none } },
104269 .{ .src = .{ .to_x87, .none, .none } },
102214 },104270 },
102215 .extra_temps = .{104271 .extra_temps = .{
102216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104272 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102217 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },104273 .unused,
102218 .unused,104274 .unused,
102219 .unused,104275 .unused,
102220 .unused,104276 .unused,
...@@ -102226,24 +104282,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102226,24 +104282,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102226 .unused,104282 .unused,
102227 },104283 },
102228 .dst_temps = .{ .mem, .unused },104284 .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 },
102229 .clobbers = .{ .eflags = true },104311 .clobbers = .{ .eflags = true },
102230 .each = .{ .once = &.{104312 .each = .{ .once = &.{
102231 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104313 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
102232 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104314 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
102233 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },104315 .{ ._, .f_, .ld, .tmp3t, ._, ._, ._ },
102234 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },104316 .{ ._, .fi_p, .stt, .tmp4q, ._, ._, ._ },
102235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
102236 } },104324 } },
102237 }, .{104325 }, .{
102238 .required_features = .{ .sse2, null, null, null },104326 .required_features = .{ .x87, null, null, null },
102239 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104327 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102240 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104328 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
102241 .patterns = &.{104329 .patterns = &.{
102242 .{ .src = .{ .to_mem, .none, .none } },104330 .{ .src = .{ .to_mem, .none, .none } },
102243 },104331 },
102244 .extra_temps = .{104332 .extra_temps = .{
102245 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102246 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },104334 .{ .type = .f80, .kind = .{ .reg = .st7 } },
102247 .unused,104335 .unused,
102248 .unused,104336 .unused,
102249 .unused,104337 .unused,
...@@ -102258,24 +104346,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102258,24 +104346,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102258 .clobbers = .{ .eflags = true },104346 .clobbers = .{ .eflags = true },
102259 .each = .{ .once = &.{104347 .each = .{ .once = &.{
102260 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104348 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102261 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104349 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
102262 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },104350 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
102263 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },104351 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102264 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104352 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102265 } },104353 } },
102266 }, .{104354 }, .{
102267 .required_features = .{ .x87, .slow_incdec, null, null },104355 .required_features = .{ .@"64bit", .avx, null, null },
102268 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104356 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102269 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104357 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102270 .patterns = &.{104358 .patterns = &.{
102271 .{ .src = .{ .to_mem, .none, .none } },104359 .{ .src = .{ .to_mem, .none, .none } },
102272 },104360 },
104361 .call_frame = .{ .size = 16, .alignment = .@"16" },
102273 .extra_temps = .{104362 .extra_temps = .{
102274 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104363 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102275 .{ .type = .f64, .kind = .{ .reg = .st7 } },104364 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102276 .{ .type = .i16, .kind = .mem },104365 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102277 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },104366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102278 .unused,104367 .{ .type = .u64, .kind = .{ .reg = .rax } },
102279 .unused,104368 .unused,
102280 .unused,104369 .unused,
102281 .unused,104370 .unused,
...@@ -102284,28 +104373,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102284,28 +104373,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102284 .unused,104373 .unused,
102285 },104374 },
102286 .dst_temps = .{ .mem, .unused },104375 .dst_temps = .{ .mem, .unused },
104376 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102287 .each = .{ .once = &.{104377 .each = .{ .once = &.{
102288 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104378 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102289 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },104379 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102290 .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ },104380 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
102291 .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ },104381 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102292 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104382 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
102293 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },104383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102294 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102295 } },104385 } },
102296 }, .{104386 }, .{
102297 .required_features = .{ .x87, null, null, null },104387 .required_features = .{ .@"64bit", .sse2, null, null },
102298 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104388 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102299 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104389 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102300 .patterns = &.{104390 .patterns = &.{
102301 .{ .src = .{ .to_mem, .none, .none } },104391 .{ .src = .{ .to_mem, .none, .none } },
102302 },104392 },
104393 .call_frame = .{ .size = 16, .alignment = .@"16" },
102303 .extra_temps = .{104394 .extra_temps = .{
102304 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102305 .{ .type = .f64, .kind = .{ .reg = .st7 } },104396 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102306 .{ .type = .i16, .kind = .mem },104397 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102307 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },104398 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102308 .unused,104399 .{ .type = .u64, .kind = .{ .reg = .rax } },
102309 .unused,104400 .unused,
102310 .unused,104401 .unused,
102311 .unused,104402 .unused,
...@@ -102314,29 +104405,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102314,29 +104405,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102314 .unused,104405 .unused,
102315 },104406 },
102316 .dst_temps = .{ .mem, .unused },104407 .dst_temps = .{ .mem, .unused },
104408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102317 .each = .{ .once = &.{104409 .each = .{ .once = &.{
102318 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104410 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102319 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },104411 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102320 .{ ._, .fi_p, .stt, .tmp2w, ._, ._, ._ },104412 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
102321 .{ ._, ._, .movzx, .tmp3d, .tmp2b, ._, ._ },104413 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102322 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104414 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
102323 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },104415 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102324 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },104416 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102325 } },104417 } },
102326 }, .{104418 }, .{
102327 .required_features = .{ .avx, .slow_incdec, null, null },104419 .required_features = .{ .@"64bit", .sse, null, null },
102328 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104420 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102329 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104421 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
102330 .patterns = &.{104422 .patterns = &.{
102331 .{ .src = .{ .to_mem, .none, .none } },104423 .{ .src = .{ .to_mem, .none, .none } },
102332 },104424 },
102333 .call_frame = .{ .alignment = .@"16" },104425 .call_frame = .{ .size = 16, .alignment = .@"16" },
102334 .extra_temps = .{104426 .extra_temps = .{
102335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104427 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102336 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104428 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102337 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104429 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102338 .{ .type = .i32, .kind = .{ .reg = .eax } },104430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102339 .unused,104431 .{ .type = .u64, .kind = .{ .reg = .rax } },
102340 .unused,104432 .unused,
102341 .unused,104433 .unused,
102342 .unused,104434 .unused,
...@@ -102348,25 +104440,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102348,25 +104440,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102348 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104440 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102349 .each = .{ .once = &.{104441 .each = .{ .once = &.{
102350 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104442 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102351 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104443 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
102352 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104444 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
102353 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },104445 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102354 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },104446 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104447 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
102355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104448 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102356 } },104449 } },
102357 }, .{104450 }, .{
102358 .required_features = .{ .avx, null, null, null },104451 .required_features = .{ .@"64bit", .avx, null, null },
102359 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104452 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102360 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104453 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102361 .patterns = &.{104454 .patterns = &.{
102362 .{ .src = .{ .to_mem, .none, .none } },104455 .{ .src = .{ .to_mem, .none, .none } },
102363 },104456 },
102364 .call_frame = .{ .alignment = .@"16" },104457 .call_frame = .{ .size = 16, .alignment = .@"16" },
102365 .extra_temps = .{104458 .extra_temps = .{
102366 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104459 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102367 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104460 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104461 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
102369 .{ .type = .i32, .kind = .{ .reg = .eax } },104462 .unused,
102370 .unused,104463 .unused,
102371 .unused,104464 .unused,
102372 .unused,104465 .unused,
...@@ -102375,29 +104468,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102375,29 +104468,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102375 .unused,104468 .unused,
102376 .unused,104469 .unused,
102377 },104470 },
102378 .dst_temps = .{ .mem, .unused },104471 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102379 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104472 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102380 .each = .{ .once = &.{104473 .each = .{ .once = &.{
102381 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104474 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
102382 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104475 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102383 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104476 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102384 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102385 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102386 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102387 } },104477 } },
102388 }, .{104478 }, .{
102389 .required_features = .{ .sse2, .slow_incdec, null, null },104479 .required_features = .{ .@"64bit", .avx, null, null },
102390 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104480 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102391 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104481 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102392 .patterns = &.{104482 .patterns = &.{
102393 .{ .src = .{ .to_mem, .none, .none } },104483 .{ .src = .{ .to_mem, .none, .none } },
102394 },104484 },
102395 .call_frame = .{ .alignment = .@"16" },104485 .call_frame = .{ .size = 16, .alignment = .@"16" },
102396 .extra_temps = .{104486 .extra_temps = .{
102397 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104487 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102398 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104488 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102399 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102400 .{ .type = .i32, .kind = .{ .reg = .eax } },104490 .unused,
102401 .unused,104491 .unused,
102402 .unused,104492 .unused,
102403 .unused,104493 .unused,
...@@ -102406,29 +104496,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102406,29 +104496,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102406 .unused,104496 .unused,
102407 .unused,104497 .unused,
102408 },104498 },
102409 .dst_temps = .{ .mem, .unused },104499 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102410 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102411 .each = .{ .once = &.{104501 .each = .{ .once = &.{
102412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104502 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },
102413 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104503 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102414 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104504 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102415 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102416 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102417 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102418 } },104505 } },
102419 }, .{104506 }, .{
102420 .required_features = .{ .sse2, null, null, null },104507 .required_features = .{ .@"64bit", .sse2, null, null },
102421 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104508 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102422 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104509 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102423 .patterns = &.{104510 .patterns = &.{
102424 .{ .src = .{ .to_mem, .none, .none } },104511 .{ .src = .{ .to_mem, .none, .none } },
102425 },104512 },
102426 .call_frame = .{ .alignment = .@"16" },104513 .call_frame = .{ .size = 16, .alignment = .@"16" },
102427 .extra_temps = .{104514 .extra_temps = .{
102428 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104515 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102429 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104516 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102430 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },104517 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
102431 .{ .type = .i32, .kind = .{ .reg = .eax } },104518 .unused,
102432 .unused,104519 .unused,
102433 .unused,104520 .unused,
102434 .unused,104521 .unused,
...@@ -102437,29 +104524,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102437,29 +104524,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102437 .unused,104524 .unused,
102438 .unused,104525 .unused,
102439 },104526 },
102440 .dst_temps = .{ .mem, .unused },104527 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102441 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104528 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102442 .each = .{ .once = &.{104529 .each = .{ .once = &.{
102443 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104530 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
102444 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },104531 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102445 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104532 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102446 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102447 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
102448 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
102449 } },104533 } },
102450 }, .{104534 }, .{
102451 .required_features = .{ .sse, .slow_incdec, null, null },104535 .required_features = .{ .@"64bit", .sse2, null, null },
102452 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104536 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102453 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104537 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
102454 .patterns = &.{104538 .patterns = &.{
102455 .{ .src = .{ .to_mem, .none, .none } },104539 .{ .src = .{ .to_mem, .none, .none } },
102456 },104540 },
102457 .call_frame = .{ .alignment = .@"16" },104541 .call_frame = .{ .size = 16, .alignment = .@"16" },
102458 .extra_temps = .{104542 .extra_temps = .{
102459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104543 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102460 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104544 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102461 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104545 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102462 .{ .type = .i32, .kind = .{ .reg = .eax } },104546 .unused,
102463 .unused,104547 .unused,
102464 .unused,104548 .unused,
102465 .unused,104549 .unused,
...@@ -102468,30 +104552,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102468,30 +104552,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102468 .unused,104552 .unused,
102469 .unused,104553 .unused,
102470 },104554 },
102471 .dst_temps = .{ .mem, .unused },104555 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102472 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104556 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102473 .each = .{ .once = &.{104557 .each = .{ .once = &.{
102474 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104558 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },
102475 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },104559 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },
102476 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102477 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104560 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102478 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp3b, ._, ._ },
102479 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
102480 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102481 } },104561 } },
102482 }, .{104562 }, .{
102483 .required_features = .{ .sse, null, null, null },104563 .required_features = .{ .@"64bit", .sse, null, null },
102484 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104564 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102485 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },104565 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
102486 .patterns = &.{104566 .patterns = &.{
102487 .{ .src = .{ .to_mem, .none, .none } },104567 .{ .src = .{ .to_mem, .none, .none } },
102488 },104568 },
102489 .call_frame = .{ .alignment = .@"16" },104569 .call_frame = .{ .size = 16, .alignment = .@"16" },
102490 .extra_temps = .{104570 .extra_temps = .{
102491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104571 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102492 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104572 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixsfsi" } } },104573 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
102494 .{ .type = .i32, .kind = .{ .reg = .eax } },104574 .unused,
102495 .unused,104575 .unused,
102496 .unused,104576 .unused,
102497 .unused,104577 .unused,
...@@ -102500,109 +104580,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102500,109 +104580,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102500 .unused,104580 .unused,
102501 .unused,104581 .unused,
102502 },104582 },
102503 .dst_temps = .{ .mem, .unused },104583 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
102504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104584 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102505 .each = .{ .once = &.{104585 .each = .{ .once = &.{
102506 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104586 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
102507 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },104587 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },
102508 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
102509 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104588 .{ ._, ._, .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, ._ },
102552 } },104589 } },
102553 }, .{104590 }, .{
102554 .required_features = .{ .avx, null, null, null },104591 .required_features = .{ .@"64bit", .sse, null, null },
102555 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104592 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102556 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },104593 .dst_constraints = .{ .{ .unsigned_int = .xword }, .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 },
102570 .patterns = &.{104594 .patterns = &.{
102571 .{ .src = .{ .mem, .none, .none } },104595 .{ .src = .{ .to_mem, .none, .none } },
102572 .{ .src = .{ .to_sse, .none, .none } },
102573 },104596 },
102574 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },104597 .call_frame = .{ .size = 16, .alignment = .@"16" },
102575 .each = .{ .once = &.{104598 .extra_temps = .{
102576 .{ ._, ._, .cvttpd2dq, .dst0x, .src0x, ._, ._ },104599 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102577 .{ ._, .p_w, .ackusd, .dst0x, .dst0x, ._, ._ },104600 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102578 } },104601 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102579 }, .{104602 .unused,
102580 .required_features = .{ .avx, null, null, null },104603 .unused,
102581 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104604 .unused,
102582 .dst_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },104605 .unused,
102583 .patterns = &.{104606 .unused,
102584 .{ .src = .{ .mem, .none, .none } },104607 .unused,
102585 .{ .src = .{ .to_sse, .none, .none } },104608 .unused,
104609 .unused,
102586 },104610 },
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 },
102588 .each = .{ .once = &.{104613 .each = .{ .once = &.{
102589 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0y, ._, ._ },104614 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
102590 .{ ._, .vp_w, .ackusd, .dst0x, .dst0x, .dst0x, ._ },104615 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },
104616 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
102591 } },104617 } },
102592 }, .{104618 }, .{
102593 .required_features = .{ .avx, null, null, null },104619 .required_features = .{ .@"64bit", .avx, null, null },
102594 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104620 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102595 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any },104621 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102596 .patterns = &.{104622 .patterns = &.{
102597 .{ .src = .{ .to_mem, .none, .none } },104623 .{ .src = .{ .to_mem, .none, .none } },
102598 },104624 },
104625 .call_frame = .{ .size = 16, .alignment = .@"16" },
102599 .extra_temps = .{104626 .extra_temps = .{
102600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104627 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102601 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },104628 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102602 .unused,104629 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102603 .unused,104630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
102604 .unused,104631 .{ .type = .u64, .kind = .{ .reg = .rax } },
102605 .unused,104632 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102606 .unused,104633 .unused,
102607 .unused,104634 .unused,
102608 .unused,104635 .unused,
...@@ -102610,29 +104637,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102610,29 +104637,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102610 .unused,104637 .unused,
102611 },104638 },
102612 .dst_temps = .{ .mem, .unused },104639 .dst_temps = .{ .mem, .unused },
102613 .clobbers = .{ .eflags = true },104640 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102614 .each = .{ .once = &.{104641 .each = .{ .once = &.{
102615 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104642 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102616 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104643 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102617 .{ ._, .vp_w, .ackssd, .tmp1x, .tmp1x, .tmp1x, ._ },104644 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
102618 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104645 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102619 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },104646 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104647 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104648 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102620 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102621 } },104650 } },
102622 }, .{104651 }, .{
102623 .required_features = .{ .sse2, null, null, null },104652 .required_features = .{ .@"64bit", .avx, null, null },
102624 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104653 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102625 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any },104654 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102626 .patterns = &.{104655 .patterns = &.{
102627 .{ .src = .{ .to_mem, .none, .none } },104656 .{ .src = .{ .to_mem, .none, .none } },
102628 },104657 },
104658 .call_frame = .{ .size = 16, .alignment = .@"16" },
102629 .extra_temps = .{104659 .extra_temps = .{
102630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102631 .{ .type = .vector_8_i16, .kind = .{ .rc = .sse } },104661 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102632 .unused,104662 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102633 .unused,104663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102634 .unused,104664 .{ .type = .u64, .kind = .{ .reg = .rax } },
102635 .unused,104665 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102636 .unused,104666 .unused,
102637 .unused,104667 .unused,
102638 .unused,104668 .unused,
...@@ -102640,29 +104670,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102640,29 +104670,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102640 .unused,104670 .unused,
102641 },104671 },
102642 .dst_temps = .{ .mem, .unused },104672 .dst_temps = .{ .mem, .unused },
102643 .clobbers = .{ .eflags = true },104673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102644 .each = .{ .once = &.{104674 .each = .{ .once = &.{
102645 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102646 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104676 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102647 .{ ._, .p_w, .ackssd, .tmp1x, .tmp1x, ._, ._ },104677 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
102648 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104678 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102649 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104679 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104680 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104681 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104682 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102651 } },104683 } },
102652 }, .{104684 }, .{
102653 .required_features = .{ .avx, null, null, null },104685 .required_features = .{ .@"64bit", .sse2, null, null },
102654 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104686 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102655 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any },104687 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102656 .patterns = &.{104688 .patterns = &.{
102657 .{ .src = .{ .to_mem, .none, .none } },104689 .{ .src = .{ .to_mem, .none, .none } },
102658 },104690 },
104691 .call_frame = .{ .size = 16, .alignment = .@"16" },
102659 .extra_temps = .{104692 .extra_temps = .{
102660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104693 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102661 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },104694 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102662 .unused,104695 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102663 .unused,104696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
102664 .unused,104697 .{ .type = .u64, .kind = .{ .reg = .rax } },
102665 .unused,104698 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102666 .unused,104699 .unused,
102667 .unused,104700 .unused,
102668 .unused,104701 .unused,
...@@ -102670,29 +104703,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102670,29 +104703,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102670 .unused,104703 .unused,
102671 },104704 },
102672 .dst_temps = .{ .mem, .unused },104705 .dst_temps = .{ .mem, .unused },
102673 .clobbers = .{ .eflags = true },104706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102674 .each = .{ .once = &.{104707 .each = .{ .once = &.{
102675 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104708 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102676 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104709 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102677 .{ ._, .vp_w, .ackusd, .tmp1x, .tmp1x, .tmp1x, ._ },104710 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
102678 .{ ._, .v_q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104711 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102679 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },104712 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104713 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104714 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102680 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102681 } },104716 } },
102682 }, .{104717 }, .{
102683 .required_features = .{ .sse4_1, null, null, null },104718 .required_features = .{ .@"64bit", .sse2, null, null },
102684 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104719 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102685 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any },104720 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102686 .patterns = &.{104721 .patterns = &.{
102687 .{ .src = .{ .to_mem, .none, .none } },104722 .{ .src = .{ .to_mem, .none, .none } },
102688 },104723 },
104724 .call_frame = .{ .size = 16, .alignment = .@"16" },
102689 .extra_temps = .{104725 .extra_temps = .{
102690 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104726 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102691 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },104727 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102692 .unused,104728 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102693 .unused,104729 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102694 .unused,104730 .{ .type = .u64, .kind = .{ .reg = .rax } },
102695 .unused,104731 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102696 .unused,104732 .unused,
102697 .unused,104733 .unused,
102698 .unused,104734 .unused,
...@@ -102700,29 +104736,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102700,29 +104736,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102700 .unused,104736 .unused,
102701 },104737 },
102702 .dst_temps = .{ .mem, .unused },104738 .dst_temps = .{ .mem, .unused },
102703 .clobbers = .{ .eflags = true },104739 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102704 .each = .{ .once = &.{104740 .each = .{ .once = &.{
102705 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104741 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102706 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104742 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102707 .{ ._, .p_w, .ackusd, .tmp1x, .tmp1x, ._, ._ },104743 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },
102708 .{ ._, ._d, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },104744 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
102709 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },104745 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },
104746 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },
104747 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102710 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104748 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102711 } },104749 } },
102712 }, .{104750 }, .{
102713 .required_features = .{ .sse2, null, null, null },104751 .required_features = .{ .@"64bit", .sse, null, null },
102714 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104752 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102715 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },104753 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
102716 .patterns = &.{104754 .patterns = &.{
102717 .{ .src = .{ .to_mem, .none, .none } },104755 .{ .src = .{ .to_mem, .none, .none } },
102718 },104756 },
104757 .call_frame = .{ .size = 16, .alignment = .@"16" },
102719 .extra_temps = .{104758 .extra_temps = .{
102720 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104759 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102721 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },104760 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102722 .unused,104761 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102723 .unused,104762 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },
102724 .unused,104763 .{ .type = .u64, .kind = .{ .reg = .rax } },
102725 .unused,104764 .{ .type = .i64, .kind = .{ .reg = .rdx } },
102726 .unused,104765 .unused,
102727 .unused,104766 .unused,
102728 .unused,104767 .unused,
...@@ -102730,28 +104769,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102730,28 +104769,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102730 .unused,104769 .unused,
102731 },104770 },
102732 .dst_temps = .{ .mem, .unused },104771 .dst_temps = .{ .mem, .unused },
102733 .clobbers = .{ .eflags = true },104772 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102734 .each = .{ .once = &.{104773 .each = .{ .once = &.{
102735 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104774 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102736 .{ .@"0:", ._, .cvttsd2si, .tmp1d, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104775 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102737 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },104776 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
102738 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },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), ._, ._ },
102739 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104781 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102740 } },104782 } },
102741 }, .{104783 }, .{
102742 .required_features = .{ .x87, null, null, null },104784 .required_features = .{ .@"64bit", .sse, null, null },
102743 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104785 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102744 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },104786 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
102745 .patterns = &.{104787 .patterns = &.{
102746 .{ .src = .{ .to_mem, .none, .none } },104788 .{ .src = .{ .to_mem, .none, .none } },
102747 },104789 },
104790 .call_frame = .{ .size = 16, .alignment = .@"16" },
102748 .extra_temps = .{104791 .extra_temps = .{
102749 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102750 .{ .type = .f64, .kind = .{ .reg = .st7 } },104793 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102751 .unused,104794 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102752 .unused,104795 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },
102753 .unused,104796 .{ .type = .u64, .kind = .{ .reg = .rax } },
102754 .unused,104797 .{ .type = .u64, .kind = .{ .reg = .rdx } },
102755 .unused,104798 .unused,
102756 .unused,104799 .unused,
102757 .unused,104800 .unused,
...@@ -102759,26 +104802,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102759,26 +104802,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102759 .unused,104802 .unused,
102760 },104803 },
102761 .dst_temps = .{ .mem, .unused },104804 .dst_temps = .{ .mem, .unused },
104805 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102762 .each = .{ .once = &.{104806 .each = .{ .once = &.{
102763 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104807 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102764 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },104808 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102765 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },104809 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },
102766 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },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), ._, ._ },
102767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },104814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102768 } },104815 } },
102769 }, .{104816 }, .{
102770 .required_features = .{ .x87, null, null, null },104817 .required_features = .{ .@"64bit", .avx, null, null },
102771 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104818 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102772 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },104819 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102773 .patterns = &.{104820 .patterns = &.{
102774 .{ .src = .{ .to_mem, .none, .none } },104821 .{ .src = .{ .to_mem, .none, .none } },
102775 },104822 },
104823 .call_frame = .{ .size = 16, .alignment = .@"16" },
102776 .extra_temps = .{104824 .extra_temps = .{
102777 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104825 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102778 .{ .type = .f64, .kind = .{ .reg = .st7 } },104826 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102779 .{ .type = .i32, .kind = .mem },104827 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102780 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },104828 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102781 .unused,104829 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102782 .unused,104830 .unused,
102783 .unused,104831 .unused,
102784 .unused,104832 .unused,
...@@ -102787,29 +104835,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102787,29 +104835,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102787 .unused,104835 .unused,
102788 },104836 },
102789 .dst_temps = .{ .mem, .unused },104837 .dst_temps = .{ .mem, .unused },
104838 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102790 .each = .{ .once = &.{104839 .each = .{ .once = &.{
102791 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104840 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102792 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },104841 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102793 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },104842 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
102794 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },104843 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
102795 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },104844 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102796 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102797 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102798 } },104845 } },
102799 }, .{104846 }, .{
102800 .required_features = .{ .avx, null, null, null },104847 .required_features = .{ .@"64bit", .avx, null, null },
102801 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104848 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102802 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },104849 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102803 .patterns = &.{104850 .patterns = &.{
102804 .{ .src = .{ .to_mem, .none, .none } },104851 .{ .src = .{ .to_mem, .none, .none } },
102805 },104852 },
102806 .call_frame = .{ .alignment = .@"16" },104853 .call_frame = .{ .size = 16, .alignment = .@"16" },
102807 .extra_temps = .{104854 .extra_temps = .{
102808 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104855 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102809 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104856 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102810 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104857 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102811 .{ .type = .i32, .kind = .{ .reg = .eax } },104858 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102812 .unused,104859 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
102813 .unused,104860 .unused,
102814 .unused,104861 .unused,
102815 .unused,104862 .unused,
...@@ -102820,27 +104867,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102820,27 +104867,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102820 .dst_temps = .{ .mem, .unused },104867 .dst_temps = .{ .mem, .unused },
102821 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104868 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102822 .each = .{ .once = &.{104869 .each = .{ .once = &.{
102823 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104870 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102824 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104871 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102825 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104872 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
102826 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },104873 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
102827 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },104874 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102828 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102829 } },104875 } },
102830 }, .{104876 }, .{
102831 .required_features = .{ .sse2, null, null, null },104877 .required_features = .{ .@"64bit", .sse2, null, null },
102832 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104878 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102833 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },104879 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102834 .patterns = &.{104880 .patterns = &.{
102835 .{ .src = .{ .to_mem, .none, .none } },104881 .{ .src = .{ .to_mem, .none, .none } },
102836 },104882 },
102837 .call_frame = .{ .alignment = .@"16" },104883 .call_frame = .{ .size = 16, .alignment = .@"16" },
102838 .extra_temps = .{104884 .extra_temps = .{
102839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104885 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102840 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104886 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102841 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104887 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102842 .{ .type = .i32, .kind = .{ .reg = .eax } },104888 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102843 .unused,104889 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102844 .unused,104890 .unused,
102845 .unused,104891 .unused,
102846 .unused,104892 .unused,
...@@ -102851,27 +104897,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102851,27 +104897,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102851 .dst_temps = .{ .mem, .unused },104897 .dst_temps = .{ .mem, .unused },
102852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102853 .each = .{ .once = &.{104899 .each = .{ .once = &.{
102854 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104900 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102855 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104901 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102856 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104902 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
102857 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },104903 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
102858 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },104904 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102859 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102860 } },104905 } },
102861 }, .{104906 }, .{
102862 .required_features = .{ .sse, null, null, null },104907 .required_features = .{ .@"64bit", .sse2, null, null },
102863 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },104908 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102864 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },104909 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102865 .patterns = &.{104910 .patterns = &.{
102866 .{ .src = .{ .to_mem, .none, .none } },104911 .{ .src = .{ .to_mem, .none, .none } },
102867 },104912 },
102868 .call_frame = .{ .alignment = .@"16" },104913 .call_frame = .{ .size = 16, .alignment = .@"16" },
102869 .extra_temps = .{104914 .extra_temps = .{
102870 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },104915 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102871 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },104916 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },104917 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102873 .{ .type = .i32, .kind = .{ .reg = .eax } },104918 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102874 .unused,104919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
102875 .unused,104920 .unused,
102876 .unused,104921 .unused,
102877 .unused,104922 .unused,
...@@ -102882,182 +104927,228 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102882,182 +104927,228 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102882 .dst_temps = .{ .mem, .unused },104927 .dst_temps = .{ .mem, .unused },
102883 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },104928 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102884 .each = .{ .once = &.{104929 .each = .{ .once = &.{
102885 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104930 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
102886 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },104931 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
102887 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },104932 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
102888 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },104933 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
102889 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },104934 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
102890 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
102891 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102892 } },104935 } },
102893 }, .{104936 }, .{
102894 .required_features = .{ .avx, null, null, null },104937 .required_features = .{ .@"64bit", .sse, null, null },
102895 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104938 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102896 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },104939 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102897 .patterns = &.{104940 .patterns = &.{
102898 .{ .src = .{ .mem, .none, .none } },104941 .{ .src = .{ .to_mem, .none, .none } },
102899 .{ .src = .{ .to_sse, .none, .none } },
102900 },104942 },
102901 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },104943 .call_frame = .{ .size = 16, .alignment = .@"16" },
102902 .each = .{ .once = &.{104944 .extra_temps = .{
102903 .{ ._, .v_, .cvttpd2dq, .dst0x, .src0x, ._, ._ },104945 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102904 } },104946 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102905 }, .{104947 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102906 .required_features = .{ .sse2, null, null, null },104948 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102907 .src_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },104949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102908 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },104950 .unused,
102909 .patterns = &.{104951 .unused,
102910 .{ .src = .{ .mem, .none, .none } },104952 .unused,
102911 .{ .src = .{ .to_sse, .none, .none } },104953 .unused,
104954 .unused,
104955 .unused,
102912 },104956 },
102913 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },104957 .dst_temps = .{ .mem, .unused },
104958 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102914 .each = .{ .once = &.{104959 .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, ._, ._, ._ },
102916 } },104965 } },
102917 }, .{104966 }, .{
102918 .required_features = .{ .avx, null, null, null },104967 .required_features = .{ .@"64bit", .sse, null, null },
102919 .src_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104968 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
102920 .dst_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },104969 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102921 .patterns = &.{104970 .patterns = &.{
102922 .{ .src = .{ .mem, .none, .none } },104971 .{ .src = .{ .to_mem, .none, .none } },
102923 .{ .src = .{ .to_sse, .none, .none } },
102924 },104972 },
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 },
102926 .each = .{ .once = &.{104989 .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, ._, ._, ._ },
102928 } },104995 } },
102929 }, .{104996 }, .{
102930 .required_features = .{ .avx, null, null, null },104997 .required_features = .{ .@"64bit", .avx, null, null },
102931 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },104998 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102932 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any },104999 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102933 .patterns = &.{105000 .patterns = &.{
102934 .{ .src = .{ .to_mem, .none, .none } },105001 .{ .src = .{ .to_mem, .none, .none } },
102935 },105002 },
105003 .call_frame = .{ .size = 16, .alignment = .@"16" },
102936 .extra_temps = .{105004 .extra_temps = .{
102937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105005 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102938 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },105006 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102939 .unused,105007 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102940 .unused,105008 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102941 .unused,105009 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102942 .unused,105010 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102943 .unused,105011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
102944 .unused,105012 .unused,
102945 .unused,105013 .unused,
102946 .unused,105014 .unused,
102947 .unused,105015 .unused,
102948 },105016 },
102949 .dst_temps = .{ .mem, .unused },105017 .dst_temps = .{ .mem, .unused },
102950 .clobbers = .{ .eflags = true },105018 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102951 .each = .{ .once = &.{105019 .each = .{ .once = &.{
102952 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105020 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102953 .{ .@"0:", .v_, .cvttpd2dq, .tmp1x, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105021 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
102954 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },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), ._, ._ },
102955 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },105028 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
102956 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105029 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102957 } },105030 } },
102958 }, .{105031 }, .{
102959 .required_features = .{ .sse2, null, null, null },105032 .required_features = .{ .@"64bit", .avx, null, null },
102960 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },105033 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102961 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any },105034 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
102962 .patterns = &.{105035 .patterns = &.{
102963 .{ .src = .{ .to_mem, .none, .none } },105036 .{ .src = .{ .to_mem, .none, .none } },
102964 },105037 },
105038 .call_frame = .{ .size = 16, .alignment = .@"16" },
102965 .extra_temps = .{105039 .extra_temps = .{
102966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105040 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102967 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },105041 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102968 .unused,105042 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102969 .unused,105043 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102970 .unused,105044 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
102971 .unused,105045 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
102972 .unused,105046 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
102973 .unused,105047 .unused,
102974 .unused,105048 .unused,
102975 .unused,105049 .unused,
102976 .unused,105050 .unused,
102977 },105051 },
102978 .dst_temps = .{ .mem, .unused },105052 .dst_temps = .{ .mem, .unused },
102979 .clobbers = .{ .eflags = true },105053 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
102980 .each = .{ .once = &.{105054 .each = .{ .once = &.{
102981 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105055 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
102982 .{ .@"0:", ._, .cvttpd2dq, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105056 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
102983 .{ ._, ._q, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },105057 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
102984 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
102985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105064 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
102986 } },105065 } },
102987 }, .{105066 }, .{
102988 .required_features = .{ .x87, null, null, null },105067 .required_features = .{ .@"64bit", .sse2, null, null },
102989 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105068 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
102990 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },105069 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
102991 .patterns = &.{105070 .patterns = &.{
102992 .{ .src = .{ .to_mem, .none, .none } },105071 .{ .src = .{ .to_mem, .none, .none } },
102993 },105072 },
105073 .call_frame = .{ .size = 16, .alignment = .@"16" },
102994 .extra_temps = .{105074 .extra_temps = .{
102995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105075 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
102996 .{ .type = .f64, .kind = .{ .reg = .st7 } },105076 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
102997 .unused,105077 .{ .type = .usize, .kind = .{ .reg = .rdi } },
102998 .unused,105078 .{ .type = .usize, .kind = .{ .reg = .rsi } },
102999 .unused,105079 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
103000 .unused,105080 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
103001 .unused,105081 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
103002 .unused,105082 .unused,
103003 .unused,105083 .unused,
103004 .unused,105084 .unused,
103005 .unused,105085 .unused,
103006 },105086 },
103007 .dst_temps = .{ .mem, .unused },105087 .dst_temps = .{ .mem, .unused },
105088 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103008 .each = .{ .once = &.{105089 .each = .{ .once = &.{
103009 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105090 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103010 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },105091 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103011 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },105092 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
103012 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
103013 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105099 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103014 } },105100 } },
103015 }, .{105101 }, .{
103016 .required_features = .{ .x87, null, null, null },105102 .required_features = .{ .@"64bit", .sse2, null, null },
103017 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105103 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103018 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105104 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103019 .patterns = &.{105105 .patterns = &.{
103020 .{ .src = .{ .to_mem, .none, .none } },105106 .{ .src = .{ .to_mem, .none, .none } },
103021 },105107 },
105108 .call_frame = .{ .size = 16, .alignment = .@"16" },
103022 .extra_temps = .{105109 .extra_temps = .{
103023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103024 .{ .type = .f64, .kind = .{ .reg = .st7 } },105111 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103025 .{ .type = .i64, .kind = .mem },105112 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103026 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },105113 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103027 .unused,105114 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
103028 .unused,105115 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
103029 .unused,105116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
103030 .unused,105117 .unused,
103031 .unused,105118 .unused,
103032 .unused,105119 .unused,
103033 .unused,105120 .unused,
103034 },105121 },
103035 .dst_temps = .{ .mem, .unused },105122 .dst_temps = .{ .mem, .unused },
105123 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103036 .each = .{ .once = &.{105124 .each = .{ .once = &.{
103037 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105125 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103038 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },105126 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103039 .{ ._, .fi_p, .stt, .tmp2q, ._, ._, ._ },105127 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
103040 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },105128 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103041 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105129 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
103042 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105130 .{ ._, ._dqa, .mov, .tmp5x, .tmp4x, ._, ._ },
105131 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105132 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105133 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103043 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103044 } },105135 } },
103045 }, .{105136 }, .{
103046 .required_features = .{ .avx, null, null, null },105137 .required_features = .{ .@"64bit", .sse, null, null },
103047 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105138 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103048 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },105139 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103049 .patterns = &.{105140 .patterns = &.{
103050 .{ .src = .{ .to_mem, .none, .none } },105141 .{ .src = .{ .to_mem, .none, .none } },
103051 },105142 },
103052 .call_frame = .{ .alignment = .@"16" },105143 .call_frame = .{ .size = 16, .alignment = .@"16" },
103053 .extra_temps = .{105144 .extra_temps = .{
103054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103055 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105146 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },105147 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103057 .{ .type = .i32, .kind = .{ .reg = .eax } },105148 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103058 .unused,105149 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
103059 .unused,105150 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
103060 .unused,105151 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },
103061 .unused,105152 .unused,
103062 .unused,105153 .unused,
103063 .unused,105154 .unused,
...@@ -103066,29 +105157,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103066,29 +105157,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103066 .dst_temps = .{ .mem, .unused },105157 .dst_temps = .{ .mem, .unused },
103067 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103068 .each = .{ .once = &.{105159 .each = .{ .once = &.{
103069 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103070 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105161 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103071 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105162 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
103072 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105163 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103073 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
103074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105169 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103075 } },105170 } },
103076 }, .{105171 }, .{
103077 .required_features = .{ .avx, null, null, null },105172 .required_features = .{ .@"64bit", .sse, null, null },
103078 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105173 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
103079 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105174 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103080 .patterns = &.{105175 .patterns = &.{
103081 .{ .src = .{ .to_mem, .none, .none } },105176 .{ .src = .{ .to_mem, .none, .none } },
103082 },105177 },
103083 .call_frame = .{ .alignment = .@"16" },105178 .call_frame = .{ .size = 16, .alignment = .@"16" },
103084 .extra_temps = .{105179 .extra_temps = .{
103085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105180 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103086 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105181 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103087 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },105182 .{ .type = .usize, .kind = .{ .reg = .rdi } },
103088 .{ .type = .u32, .kind = .{ .reg = .eax } },105183 .{ .type = .usize, .kind = .{ .reg = .rsi } },
103089 .unused,105184 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },
103090 .unused,105185 .{ .type = .f80, .kind = .{ .frame = .call_frame } },
103091 .unused,105186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },
103092 .unused,105187 .unused,
103093 .unused,105188 .unused,
103094 .unused,105189 .unused,
...@@ -103097,25 +105192,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103097,25 +105192,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103097 .dst_temps = .{ .mem, .unused },105192 .dst_temps = .{ .mem, .unused },
103098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105193 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103099 .each = .{ .once = &.{105194 .each = .{ .once = &.{
103100 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105195 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103101 .{ .@"0:", .v_sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105196 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
103102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105197 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
103103 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105198 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },
103104 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
103105 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103106 } },105205 } },
103107 }, .{105206 }, .{
103108 .required_features = .{ .sse2, null, null, null },105207 .required_features = .{ .avx, .slow_incdec, null, null },
103109 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105208 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103110 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },105209 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103111 .patterns = &.{105210 .patterns = &.{
103112 .{ .src = .{ .to_mem, .none, .none } },105211 .{ .src = .{ .to_mem, .none, .none } },
103113 },105212 },
103114 .call_frame = .{ .alignment = .@"16" },105213 .call_frame = .{ .alignment = .@"16" },
103115 .extra_temps = .{105214 .extra_temps = .{
105215 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103117 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105217 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },105218 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103119 .{ .type = .i32, .kind = .{ .reg = .eax } },105219 .{ .type = .i32, .kind = .{ .reg = .eax } },
103120 .unused,105220 .unused,
103121 .unused,105221 .unused,
...@@ -103123,32 +105223,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103123,32 +105223,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103123 .unused,105223 .unused,
103124 .unused,105224 .unused,
103125 .unused,105225 .unused,
103126 .unused,
103127 },105226 },
103128 .dst_temps = .{ .mem, .unused },105227 .dst_temps = .{ .mem, .unused },
103129 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103130 .each = .{ .once = &.{105229 .each = .{ .once = &.{
103131 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105230 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103132 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105231 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103133 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105232 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
103134 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105233 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103135 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105234 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105235 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105236 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105237 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103137 } },105238 } },
103138 }, .{105239 }, .{
103139 .required_features = .{ .sse2, null, null, null },105240 .required_features = .{ .avx, null, null, null },
103140 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105241 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103141 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105242 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103142 .patterns = &.{105243 .patterns = &.{
103143 .{ .src = .{ .to_mem, .none, .none } },105244 .{ .src = .{ .to_mem, .none, .none } },
103144 },105245 },
103145 .call_frame = .{ .alignment = .@"16" },105246 .call_frame = .{ .alignment = .@"16" },
103146 .extra_temps = .{105247 .extra_temps = .{
105248 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103148 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105250 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },105251 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103150 .{ .type = .u32, .kind = .{ .reg = .eax } },105252 .{ .type = .i32, .kind = .{ .reg = .eax } },
103151 .unused,
103152 .unused,105253 .unused,
103153 .unused,105254 .unused,
103154 .unused,105255 .unused,
...@@ -103159,25 +105260,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103159,25 +105260,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103159 .dst_temps = .{ .mem, .unused },105260 .dst_temps = .{ .mem, .unused },
103160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105261 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103161 .each = .{ .once = &.{105262 .each = .{ .once = &.{
103162 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105263 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103163 .{ .@"0:", ._sd, .mov, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105264 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105265 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
103165 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105266 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103166 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105267 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
103167 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105268 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105269 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105270 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103168 } },105271 } },
103169 }, .{105272 }, .{
103170 .required_features = .{ .sse, null, null, null },105273 .required_features = .{ .sse2, .slow_incdec, null, null },
103171 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105274 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103172 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },105275 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103173 .patterns = &.{105276 .patterns = &.{
103174 .{ .src = .{ .to_mem, .none, .none } },105277 .{ .src = .{ .to_mem, .none, .none } },
103175 },105278 },
103176 .call_frame = .{ .alignment = .@"16" },105279 .call_frame = .{ .alignment = .@"16" },
103177 .extra_temps = .{105280 .extra_temps = .{
105281 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103179 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105283 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103180 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfsi" } } },105284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103181 .{ .type = .i32, .kind = .{ .reg = .eax } },105285 .{ .type = .i32, .kind = .{ .reg = .eax } },
103182 .unused,105286 .unused,
103183 .unused,105287 .unused,
...@@ -103185,33 +105289,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103185,33 +105289,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103185 .unused,105289 .unused,
103186 .unused,105290 .unused,
103187 .unused,105291 .unused,
103188 .unused,
103189 },105292 },
103190 .dst_temps = .{ .mem, .unused },105293 .dst_temps = .{ .mem, .unused },
103191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105294 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103192 .each = .{ .once = &.{105295 .each = .{ .once = &.{
103193 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105296 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103194 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },105297 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103195 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105298 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
103196 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105299 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103197 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105300 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
103198 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105301 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105302 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103199 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103200 } },105304 } },
103201 }, .{105305 }, .{
103202 .required_features = .{ .sse, null, null, null },105306 .required_features = .{ .sse2, null, null, null },
103203 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105307 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103204 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105308 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103205 .patterns = &.{105309 .patterns = &.{
103206 .{ .src = .{ .to_mem, .none, .none } },105310 .{ .src = .{ .to_mem, .none, .none } },
103207 },105311 },
103208 .call_frame = .{ .alignment = .@"16" },105312 .call_frame = .{ .alignment = .@"16" },
103209 .extra_temps = .{105313 .extra_temps = .{
105314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103210 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103211 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105316 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103212 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfsi" } } },105317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103213 .{ .type = .u32, .kind = .{ .reg = .eax } },105318 .{ .type = .i32, .kind = .{ .reg = .eax } },
103214 .unused,
103215 .unused,105319 .unused,
103216 .unused,105320 .unused,
103217 .unused,105321 .unused,
...@@ -103222,27 +105326,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103222,27 +105326,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103222 .dst_temps = .{ .mem, .unused },105326 .dst_temps = .{ .mem, .unused },
103223 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105327 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103224 .each = .{ .once = &.{105328 .each = .{ .once = &.{
103225 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },105329 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103226 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },105330 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103227 .{ ._, ._ps, .movl, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },105331 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
103228 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105332 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103229 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },105333 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
103230 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },105334 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
103231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105335 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105336 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103232 } },105337 } },
103233 }, .{105338 }, .{
103234 .required_features = .{ .@"64bit", .avx, null, null },105339 .required_features = .{ .sse, .slow_incdec, null, null },
103235 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105340 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103236 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },105341 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103237 .patterns = &.{105342 .patterns = &.{
103238 .{ .src = .{ .to_mem, .none, .none } },105343 .{ .src = .{ .to_mem, .none, .none } },
103239 },105344 },
105345 .call_frame = .{ .alignment = .@"16" },
103240 .extra_temps = .{105346 .extra_temps = .{
105347 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105348 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103242 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },105349 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103243 .unused,105350 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103244 .unused,105351 .{ .type = .i32, .kind = .{ .reg = .eax } },
103245 .unused,
103246 .unused,105352 .unused,
103247 .unused,105353 .unused,
103248 .unused,105354 .unused,
...@@ -103251,27 +105357,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103251,27 +105357,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103251 .unused,105357 .unused,
103252 },105358 },
103253 .dst_temps = .{ .mem, .unused },105359 .dst_temps = .{ .mem, .unused },
103254 .clobbers = .{ .eflags = true },105360 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103255 .each = .{ .once = &.{105361 .each = .{ .once = &.{
103256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105362 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103257 .{ .@"0:", .v_, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105363 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103258 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },105364 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
103259 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105365 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
105366 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105367 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105368 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103261 } },105370 } },
103262 }, .{105371 }, .{
103263 .required_features = .{ .@"64bit", .sse2, null, null },105372 .required_features = .{ .sse, null, null, null },
103264 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105373 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103265 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },105374 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
103266 .patterns = &.{105375 .patterns = &.{
103267 .{ .src = .{ .to_mem, .none, .none } },105376 .{ .src = .{ .to_mem, .none, .none } },
103268 },105377 },
105378 .call_frame = .{ .alignment = .@"16" },
103269 .extra_temps = .{105379 .extra_temps = .{
105380 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103270 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103271 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },105382 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103272 .unused,105383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103273 .unused,105384 .{ .type = .i32, .kind = .{ .reg = .eax } },
103274 .unused,
103275 .unused,105385 .unused,
103276 .unused,105386 .unused,
103277 .unused,105387 .unused,
...@@ -103280,26 +105390,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103280,26 +105390,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103280 .unused,105390 .unused,
103281 },105391 },
103282 .dst_temps = .{ .mem, .unused },105392 .dst_temps = .{ .mem, .unused },
103283 .clobbers = .{ .eflags = true },105393 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103284 .each = .{ .once = &.{105394 .each = .{ .once = &.{
103285 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105395 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
103286 .{ .@"0:", ._, .cvttsd2si, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105396 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103287 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1q, ._, ._ },105397 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
103288 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105398 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
103289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105399 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },
105400 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105401 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105402 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
103290 } },105403 } },
103291 }, .{105404 }, .{
103292 .required_features = .{ .x87, null, null, null },105405 .required_features = .{ .avx, null, null, null },
103293 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105406 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103294 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },105407 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103295 .patterns = &.{105408 .patterns = &.{
103296 .{ .src = .{ .to_mem, .none, .none } },105409 .{ .src = .{ .to_mem, .none, .none } },
103297 },105410 },
105411 .call_frame = .{ .alignment = .@"16" },
103298 .extra_temps = .{105412 .extra_temps = .{
103299 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103300 .{ .type = .f64, .kind = .{ .reg = .st7 } },105414 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103301 .unused,105415 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103302 .unused,105416 .{ .type = .i32, .kind = .{ .reg = .eax } },
103303 .unused,105417 .unused,
103304 .unused,105418 .unused,
103305 .unused,105419 .unused,
...@@ -103309,26 +105423,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103309,26 +105423,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103309 .unused,105423 .unused,
103310 },105424 },
103311 .dst_temps = .{ .mem, .unused },105425 .dst_temps = .{ .mem, .unused },
105426 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103312 .each = .{ .once = &.{105427 .each = .{ .once = &.{
103313 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105428 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103314 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },105429 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
103315 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },105430 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103316 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105431 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
105432 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103317 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105433 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103318 } },105434 } },
103319 }, .{105435 }, .{
103320 .required_features = .{ .avx, null, null, null },105436 .required_features = .{ .sse2, null, null, null },
103321 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105437 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103322 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },105438 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103323 .patterns = &.{105439 .patterns = &.{
103324 .{ .src = .{ .to_mem, .none, .none } },105440 .{ .src = .{ .to_mem, .none, .none } },
103325 },105441 },
103326 .call_frame = .{ .alignment = .@"16" },105442 .call_frame = .{ .alignment = .@"16" },
103327 .extra_temps = .{105443 .extra_temps = .{
103328 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103329 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105445 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103330 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },105446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103331 .{ .type = .i64, .kind = .{ .reg = .rax } },105447 .{ .type = .i32, .kind = .{ .reg = .eax } },
103332 .unused,105448 .unused,
103333 .unused,105449 .unused,
103334 .unused,105450 .unused,
...@@ -103340,26 +105456,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103340,26 +105456,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103340 .dst_temps = .{ .mem, .unused },105456 .dst_temps = .{ .mem, .unused },
103341 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103342 .each = .{ .once = &.{105458 .each = .{ .once = &.{
103343 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105459 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103344 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105460 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
103345 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105461 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103346 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105462 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
103347 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105463 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103348 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105464 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103349 } },105465 } },
103350 }, .{105466 }, .{
103351 .required_features = .{ .avx, null, null, null },105467 .required_features = .{ .sse, null, null, null },
103352 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105468 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103353 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },105469 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },
103354 .patterns = &.{105470 .patterns = &.{
103355 .{ .src = .{ .to_mem, .none, .none } },105471 .{ .src = .{ .to_mem, .none, .none } },
103356 },105472 },
103357 .call_frame = .{ .alignment = .@"16" },105473 .call_frame = .{ .alignment = .@"16" },
103358 .extra_temps = .{105474 .extra_temps = .{
103359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103360 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105476 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103361 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },105477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103362 .{ .type = .u64, .kind = .{ .reg = .rax } },105478 .{ .type = .i32, .kind = .{ .reg = .eax } },
103363 .unused,105479 .unused,
103364 .unused,105480 .unused,
103365 .unused,105481 .unused,
...@@ -103371,26 +105487,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103371,26 +105487,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103371 .dst_temps = .{ .mem, .unused },105487 .dst_temps = .{ .mem, .unused },
103372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103373 .each = .{ .once = &.{105489 .each = .{ .once = &.{
103374 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105490 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103375 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105491 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },
103376 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105492 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103377 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105493 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },
103378 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105494 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
103379 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103380 } },105496 } },
103381 }, .{105497 }, .{
103382 .required_features = .{ .sse2, null, null, null },105498 .required_features = .{ .sse, null, null, null },
103383 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105499 .src_constraints = .{ .{ .float = .xword }, .any, .any },
103384 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },105500 .dst_constraints = .{ .{ .signed_int = .dword }, .any },
103385 .patterns = &.{105501 .patterns = &.{
103386 .{ .src = .{ .to_mem, .none, .none } },105502 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103387 },105503 },
103388 .call_frame = .{ .alignment = .@"16" },105504 .call_frame = .{ .alignment = .@"16" },
103389 .extra_temps = .{105505 .extra_temps = .{
103390 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105506 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103391 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105507 .unused,
103392 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },105508 .unused,
103393 .{ .type = .i64, .kind = .{ .reg = .rax } },105509 .unused,
103394 .unused,105510 .unused,
103395 .unused,105511 .unused,
103396 .unused,105512 .unused,
...@@ -103399,29 +105515,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103399,29 +105515,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103399 .unused,105515 .unused,
103400 .unused,105516 .unused,
103401 },105517 },
103402 .dst_temps = .{ .mem, .unused },105518 .dst_temps = .{ .{ .reg = .eax }, .unused },
103403 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105519 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103404 .each = .{ .once = &.{105520 .each = .{ .once = &.{
103405 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105521 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
103411 } },105522 } },
103412 }, .{105523 }, .{
103413 .required_features = .{ .sse2, null, null, null },105524 .required_features = .{ .sse, null, null, null },
103414 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105525 .src_constraints = .{ .{ .float = .xword }, .any, .any },
103415 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },105526 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },
103416 .patterns = &.{105527 .patterns = &.{
103417 .{ .src = .{ .to_mem, .none, .none } },105528 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103418 },105529 },
103419 .call_frame = .{ .alignment = .@"16" },105530 .call_frame = .{ .alignment = .@"16" },
103420 .extra_temps = .{105531 .extra_temps = .{
103421 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105532 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
103422 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105533 .unused,
103423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },105534 .unused,
103424 .{ .type = .u64, .kind = .{ .reg = .rax } },105535 .unused,
103425 .unused,105536 .unused,
103426 .unused,105537 .unused,
103427 .unused,105538 .unused,
...@@ -103430,29 +105541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103430,29 +105541,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103430 .unused,105541 .unused,
103431 .unused,105542 .unused,
103432 },105543 },
103433 .dst_temps = .{ .mem, .unused },105544 .dst_temps = .{ .{ .reg = .eax }, .unused },
103434 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105545 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103435 .each = .{ .once = &.{105546 .each = .{ .once = &.{
103436 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105547 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
103442 } },105548 } },
103443 }, .{105549 }, .{
103444 .required_features = .{ .sse, null, null, null },105550 .required_features = .{ .avx, null, null, null },
103445 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105551 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103446 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },105552 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103447 .patterns = &.{105553 .patterns = &.{
103448 .{ .src = .{ .to_mem, .none, .none } },105554 .{ .src = .{ .to_mem, .none, .none } },
103449 },105555 },
103450 .call_frame = .{ .alignment = .@"16" },105556 .call_frame = .{ .alignment = .@"16" },
103451 .extra_temps = .{105557 .extra_temps = .{
103452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103453 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105559 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103454 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfdi" } } },105560 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103455 .{ .type = .i64, .kind = .{ .reg = .rax } },105561 .{ .type = .i32, .kind = .{ .reg = .eax } },
103456 .unused,105562 .unused,
103457 .unused,105563 .unused,
103458 .unused,105564 .unused,
...@@ -103464,27 +105570,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103464,27 +105570,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103464 .dst_temps = .{ .mem, .unused },105570 .dst_temps = .{ .mem, .unused },
103465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105571 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103466 .each = .{ .once = &.{105572 .each = .{ .once = &.{
103467 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105573 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103468 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },105574 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103469 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103470 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105575 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103471 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105576 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103472 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105577 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103473 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105578 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103474 } },105579 } },
103475 }, .{105580 }, .{
103476 .required_features = .{ .sse, null, null, null },105581 .required_features = .{ .avx, null, null, null },
103477 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105582 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103478 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },105583 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103479 .patterns = &.{105584 .patterns = &.{
103480 .{ .src = .{ .to_mem, .none, .none } },105585 .{ .src = .{ .to_mem, .none, .none } },
103481 },105586 },
103482 .call_frame = .{ .alignment = .@"16" },105587 .call_frame = .{ .alignment = .@"16" },
103483 .extra_temps = .{105588 .extra_temps = .{
103484 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103485 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105590 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103486 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfdi" } } },105591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
103487 .{ .type = .u64, .kind = .{ .reg = .rax } },105592 .{ .type = .u32, .kind = .{ .reg = .eax } },
103488 .unused,105593 .unused,
103489 .unused,105594 .unused,
103490 .unused,105595 .unused,
...@@ -103496,28 +105601,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103496,28 +105601,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103496 .dst_temps = .{ .mem, .unused },105601 .dst_temps = .{ .mem, .unused },
103497 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105602 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103498 .each = .{ .once = &.{105603 .each = .{ .once = &.{
103499 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105604 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103500 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },105605 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103501 .{ ._, ._ps, .movl, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103502 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105606 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103503 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105607 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103504 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105608 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103505 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103506 } },105610 } },
103507 }, .{105611 }, .{
103508 .required_features = .{ .avx, null, null, null },105612 .required_features = .{ .sse2, null, null, null },
103509 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105613 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103510 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },105614 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103511 .patterns = &.{105615 .patterns = &.{
103512 .{ .src = .{ .to_mem, .none, .none } },105616 .{ .src = .{ .to_mem, .none, .none } },
103513 },105617 },
103514 .call_frame = .{ .alignment = .@"16" },105618 .call_frame = .{ .alignment = .@"16" },
103515 .extra_temps = .{105619 .extra_temps = .{
103516 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103517 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105621 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103518 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },105622 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103519 .{ .type = .u64, .kind = .{ .reg = .rax } },105623 .{ .type = .i32, .kind = .{ .reg = .eax } },
103520 .{ .type = .i64, .kind = .{ .reg = .rdx } },105624 .unused,
103521 .unused,105625 .unused,
103522 .unused,105626 .unused,
103523 .unused,105627 .unused,
...@@ -103528,28 +105632,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103528,28 +105632,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103528 .dst_temps = .{ .mem, .unused },105632 .dst_temps = .{ .mem, .unused },
103529 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103530 .each = .{ .once = &.{105634 .each = .{ .once = &.{
103531 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105635 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103532 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105636 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103533 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105637 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103534 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105638 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103535 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },105639 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103536 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103538 } },105641 } },
103539 }, .{105642 }, .{
103540 .required_features = .{ .avx, null, null, null },105643 .required_features = .{ .sse2, null, null, null },
103541 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105644 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103542 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },105645 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103543 .patterns = &.{105646 .patterns = &.{
103544 .{ .src = .{ .to_mem, .none, .none } },105647 .{ .src = .{ .to_mem, .none, .none } },
103545 },105648 },
103546 .call_frame = .{ .alignment = .@"16" },105649 .call_frame = .{ .alignment = .@"16" },
103547 .extra_temps = .{105650 .extra_temps = .{
103548 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103549 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105652 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },105653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
103551 .{ .type = .u64, .kind = .{ .reg = .rax } },105654 .{ .type = .u32, .kind = .{ .reg = .eax } },
103552 .{ .type = .u64, .kind = .{ .reg = .rdx } },105655 .unused,
103553 .unused,105656 .unused,
103554 .unused,105657 .unused,
103555 .unused,105658 .unused,
...@@ -103560,28 +105663,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103560,28 +105663,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103560 .dst_temps = .{ .mem, .unused },105663 .dst_temps = .{ .mem, .unused },
103561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103562 .each = .{ .once = &.{105665 .each = .{ .once = &.{
103563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105666 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103564 .{ .@"0:", .v_sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105667 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103565 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105668 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103566 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105669 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103567 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },105670 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103568 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103569 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103570 } },105672 } },
103571 }, .{105673 }, .{
103572 .required_features = .{ .sse2, null, null, null },105674 .required_features = .{ .sse, null, null, null },
103573 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105675 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103574 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },105676 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },
103575 .patterns = &.{105677 .patterns = &.{
103576 .{ .src = .{ .to_mem, .none, .none } },105678 .{ .src = .{ .to_mem, .none, .none } },
103577 },105679 },
103578 .call_frame = .{ .alignment = .@"16" },105680 .call_frame = .{ .alignment = .@"16" },
103579 .extra_temps = .{105681 .extra_temps = .{
103580 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103581 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105683 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103582 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },105684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },
103583 .{ .type = .u64, .kind = .{ .reg = .rax } },105685 .{ .type = .i32, .kind = .{ .reg = .eax } },
103584 .{ .type = .i64, .kind = .{ .reg = .rdx } },105686 .unused,
103585 .unused,105687 .unused,
103586 .unused,105688 .unused,
103587 .unused,105689 .unused,
...@@ -103592,28 +105694,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103592,28 +105694,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103592 .dst_temps = .{ .mem, .unused },105694 .dst_temps = .{ .mem, .unused },
103593 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105695 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103594 .each = .{ .once = &.{105696 .each = .{ .once = &.{
103595 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105697 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103596 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105698 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103597 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105699 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103598 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105700 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103599 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },105701 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103600 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103601 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105702 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103602 } },105703 } },
103603 }, .{105704 }, .{
103604 .required_features = .{ .sse2, null, null, null },105705 .required_features = .{ .sse, null, null, null },
103605 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105706 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103606 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },105707 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
103607 .patterns = &.{105708 .patterns = &.{
103608 .{ .src = .{ .to_mem, .none, .none } },105709 .{ .src = .{ .to_mem, .none, .none } },
103609 },105710 },
103610 .call_frame = .{ .alignment = .@"16" },105711 .call_frame = .{ .alignment = .@"16" },
103611 .extra_temps = .{105712 .extra_temps = .{
103612 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103613 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105714 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103614 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },105715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },
103615 .{ .type = .u64, .kind = .{ .reg = .rax } },105716 .{ .type = .u32, .kind = .{ .reg = .eax } },
103616 .{ .type = .u64, .kind = .{ .reg = .rdx } },105717 .unused,
103617 .unused,105718 .unused,
103618 .unused,105719 .unused,
103619 .unused,105720 .unused,
...@@ -103624,28 +105725,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103624,28 +105725,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103624 .dst_temps = .{ .mem, .unused },105725 .dst_temps = .{ .mem, .unused },
103625 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105726 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103626 .each = .{ .once = &.{105727 .each = .{ .once = &.{
103627 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105728 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103628 .{ .@"0:", ._sd, .mov, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },105729 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
103629 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },105730 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103630 .{ ._, ._, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },105731 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },
103631 .{ ._, ._, .mov, .memsiad(.dst0q, .@"2", .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },105732 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
103632 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103633 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103634 } },105734 } },
103635 }, .{105735 }, .{
103636 .required_features = .{ .sse, null, null, null },105736 .required_features = .{ .@"64bit", .sse, null, null },
103637 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105737 .src_constraints = .{ .{ .float = .xword }, .any, .any },
103638 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },105738 .dst_constraints = .{ .{ .signed_int = .qword }, .any },
103639 .patterns = &.{105739 .patterns = &.{
103640 .{ .src = .{ .to_mem, .none, .none } },105740 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103641 },105741 },
103642 .call_frame = .{ .alignment = .@"16" },105742 .call_frame = .{ .alignment = .@"16" },
103643 .extra_temps = .{105743 .extra_temps = .{
103644 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
103645 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105745 .unused,
103646 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfti" } } },105746 .unused,
103647 .{ .type = .u64, .kind = .{ .reg = .rax } },105747 .unused,
103648 .{ .type = .i64, .kind = .{ .reg = .rdx } },105748 .unused,
103649 .unused,105749 .unused,
103650 .unused,105750 .unused,
103651 .unused,105751 .unused,
...@@ -103653,32 +105753,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103653,32 +105753,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103653 .unused,105753 .unused,
103654 .unused,105754 .unused,
103655 },105755 },
103656 .dst_temps = .{ .mem, .unused },105756 .dst_temps = .{ .{ .reg = .rax }, .unused },
103657 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105757 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103658 .each = .{ .once = &.{105758 .each = .{ .once = &.{
103659 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105759 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
103667 } },105760 } },
103668 }, .{105761 }, .{
103669 .required_features = .{ .sse, null, null, null },105762 .required_features = .{ .@"64bit", .sse, null, null },
103670 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105763 .src_constraints = .{ .{ .float = .xword }, .any, .any },
103671 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },105764 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },
103672 .patterns = &.{105765 .patterns = &.{
103673 .{ .src = .{ .to_mem, .none, .none } },105766 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103674 },105767 },
103675 .call_frame = .{ .alignment = .@"16" },105768 .call_frame = .{ .alignment = .@"16" },
103676 .extra_temps = .{105769 .extra_temps = .{
103677 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
103678 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105771 .unused,
103679 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfti" } } },105772 .unused,
103680 .{ .type = .u64, .kind = .{ .reg = .rax } },105773 .unused,
103681 .{ .type = .u64, .kind = .{ .reg = .rdx } },105774 .unused,
103682 .unused,105775 .unused,
103683 .unused,105776 .unused,
103684 .unused,105777 .unused,
...@@ -103686,33 +105779,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103686,33 +105779,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103686 .unused,105779 .unused,
103687 .unused,105780 .unused,
103688 },105781 },
103689 .dst_temps = .{ .mem, .unused },105782 .dst_temps = .{ .{ .reg = .rax }, .unused },
103690 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105783 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103691 .each = .{ .once = &.{105784 .each = .{ .once = &.{
103692 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105785 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
103700 } },105786 } },
103701 }, .{105787 }, .{
103702 .required_features = .{ .@"64bit", .avx, null, null },105788 .required_features = .{ .@"64bit", .avx, null, null },
103703 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105789 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103704 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },105790 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103705 .patterns = &.{105791 .patterns = &.{
103706 .{ .src = .{ .to_mem, .none, .none } },105792 .{ .src = .{ .to_mem, .none, .none } },
103707 },105793 },
103708 .call_frame = .{ .alignment = .@"16" },105794 .call_frame = .{ .alignment = .@"16" },
103709 .extra_temps = .{105795 .extra_temps = .{
103710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103711 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105797 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103712 .{ .type = .usize, .kind = .{ .reg = .rdi } },105798 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
103713 .{ .type = .usize, .kind = .{ .reg = .rsi } },105799 .{ .type = .i64, .kind = .{ .reg = .rax } },
103714 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105800 .unused,
103715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },105801 .unused,
103716 .unused,105802 .unused,
103717 .unused,105803 .unused,
103718 .unused,105804 .unused,
...@@ -103722,31 +105808,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103722,31 +105808,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103722 .dst_temps = .{ .mem, .unused },105808 .dst_temps = .{ .mem, .unused },
103723 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105809 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103724 .each = .{ .once = &.{105810 .each = .{ .once = &.{
103725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105811 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103726 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105812 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103727 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105813 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103728 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105814 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103729 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103730 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103731 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
103732 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105815 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105816 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103734 } },105817 } },
103735 }, .{105818 }, .{
103736 .required_features = .{ .@"64bit", .avx, null, null },105819 .required_features = .{ .@"64bit", .avx, null, null },
103737 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105820 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103738 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105821 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103739 .patterns = &.{105822 .patterns = &.{
103740 .{ .src = .{ .to_mem, .none, .none } },105823 .{ .src = .{ .to_mem, .none, .none } },
103741 },105824 },
103742 .call_frame = .{ .alignment = .@"16" },105825 .call_frame = .{ .alignment = .@"16" },
103743 .extra_temps = .{105826 .extra_temps = .{
103744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103745 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105828 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103746 .{ .type = .usize, .kind = .{ .reg = .rdi } },105829 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
103747 .{ .type = .usize, .kind = .{ .reg = .rsi } },105830 .{ .type = .u64, .kind = .{ .reg = .rax } },
103748 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105831 .unused,
103749 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },105832 .unused,
103750 .unused,105833 .unused,
103751 .unused,105834 .unused,
103752 .unused,105835 .unused,
...@@ -103756,31 +105839,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103756,31 +105839,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103756 .dst_temps = .{ .mem, .unused },105839 .dst_temps = .{ .mem, .unused },
103757 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105840 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103758 .each = .{ .once = &.{105841 .each = .{ .once = &.{
103759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105842 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103760 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105843 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103761 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105844 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103762 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105845 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103763 .{ ._, .v_sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103764 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103765 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
103766 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105846 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103767 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105847 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103768 } },105848 } },
103769 }, .{105849 }, .{
103770 .required_features = .{ .@"64bit", .sse2, null, null },105850 .required_features = .{ .@"64bit", .sse2, null, null },
103771 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105851 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103772 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },105852 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103773 .patterns = &.{105853 .patterns = &.{
103774 .{ .src = .{ .to_mem, .none, .none } },105854 .{ .src = .{ .to_mem, .none, .none } },
103775 },105855 },
103776 .call_frame = .{ .alignment = .@"16" },105856 .call_frame = .{ .alignment = .@"16" },
103777 .extra_temps = .{105857 .extra_temps = .{
103778 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105858 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103779 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105859 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103780 .{ .type = .usize, .kind = .{ .reg = .rdi } },105860 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
103781 .{ .type = .usize, .kind = .{ .reg = .rsi } },105861 .{ .type = .i64, .kind = .{ .reg = .rax } },
103782 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105862 .unused,
103783 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },105863 .unused,
103784 .unused,105864 .unused,
103785 .unused,105865 .unused,
103786 .unused,105866 .unused,
...@@ -103790,31 +105870,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103790,31 +105870,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103790 .dst_temps = .{ .mem, .unused },105870 .dst_temps = .{ .mem, .unused },
103791 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105871 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103792 .each = .{ .once = &.{105872 .each = .{ .once = &.{
103793 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105873 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103794 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105874 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103795 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105875 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103796 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105876 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103797 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103798 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103799 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
103800 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105877 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103801 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105878 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103802 } },105879 } },
103803 }, .{105880 }, .{
103804 .required_features = .{ .@"64bit", .sse2, null, null },105881 .required_features = .{ .@"64bit", .sse2, null, null },
103805 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105882 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103806 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105883 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103807 .patterns = &.{105884 .patterns = &.{
103808 .{ .src = .{ .to_mem, .none, .none } },105885 .{ .src = .{ .to_mem, .none, .none } },
103809 },105886 },
103810 .call_frame = .{ .alignment = .@"16" },105887 .call_frame = .{ .alignment = .@"16" },
103811 .extra_temps = .{105888 .extra_temps = .{
103812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105889 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103813 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105890 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103814 .{ .type = .usize, .kind = .{ .reg = .rdi } },105891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
103815 .{ .type = .usize, .kind = .{ .reg = .rsi } },105892 .{ .type = .u64, .kind = .{ .reg = .rax } },
103816 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105893 .unused,
103817 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },105894 .unused,
103818 .unused,105895 .unused,
103819 .unused,105896 .unused,
103820 .unused,105897 .unused,
...@@ -103824,31 +105901,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103824,31 +105901,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103824 .dst_temps = .{ .mem, .unused },105901 .dst_temps = .{ .mem, .unused },
103825 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105902 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103826 .each = .{ .once = &.{105903 .each = .{ .once = &.{
103827 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105904 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103828 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105905 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103829 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },105906 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103830 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },105907 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103831 .{ ._, ._sd, .mov, .tmp4x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
103832 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
103833 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
103834 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105908 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103835 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105909 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103836 } },105910 } },
103837 }, .{105911 }, .{
103838 .required_features = .{ .@"64bit", .sse, null, null },105912 .required_features = .{ .@"64bit", .sse, null, null },
103839 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105913 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103840 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },105914 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },
103841 .patterns = &.{105915 .patterns = &.{
103842 .{ .src = .{ .to_mem, .none, .none } },105916 .{ .src = .{ .to_mem, .none, .none } },
103843 },105917 },
103844 .call_frame = .{ .alignment = .@"16" },105918 .call_frame = .{ .alignment = .@"16" },
103845 .extra_temps = .{105919 .extra_temps = .{
103846 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105920 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103847 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105921 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103848 .{ .type = .usize, .kind = .{ .reg = .rdi } },105922 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },
103849 .{ .type = .usize, .kind = .{ .reg = .rsi } },105923 .{ .type = .i64, .kind = .{ .reg = .rax } },
103850 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105924 .unused,
103851 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixdfei" } } },105925 .unused,
103852 .unused,105926 .unused,
103853 .unused,105927 .unused,
103854 .unused,105928 .unused,
...@@ -103858,32 +105932,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103858,32 +105932,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103858 .dst_temps = .{ .mem, .unused },105932 .dst_temps = .{ .mem, .unused },
103859 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105933 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103860 .each = .{ .once = &.{105934 .each = .{ .once = &.{
103861 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105935 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103862 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105936 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103863 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },105937 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103864 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },105938 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
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), ._, ._ },
103869 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105939 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103870 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105940 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103871 } },105941 } },
103872 }, .{105942 }, .{
103873 .required_features = .{ .@"64bit", .sse, null, null },105943 .required_features = .{ .@"64bit", .sse, null, null },
103874 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },105944 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103875 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },105945 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },
103876 .patterns = &.{105946 .patterns = &.{
103877 .{ .src = .{ .to_mem, .none, .none } },105947 .{ .src = .{ .to_mem, .none, .none } },
103878 },105948 },
103879 .call_frame = .{ .alignment = .@"16" },105949 .call_frame = .{ .alignment = .@"16" },
103880 .extra_temps = .{105950 .extra_temps = .{
103881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },105951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103882 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },105952 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103883 .{ .type = .usize, .kind = .{ .reg = .rdi } },105953 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },
103884 .{ .type = .usize, .kind = .{ .reg = .rsi } },105954 .{ .type = .u64, .kind = .{ .reg = .rax } },
103885 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },105955 .unused,
103886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsdfei" } } },105956 .unused,
103887 .unused,105957 .unused,
103888 .unused,105958 .unused,
103889 .unused,105959 .unused,
...@@ -103893,28 +105963,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103893,28 +105963,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103893 .dst_temps = .{ .mem, .unused },105963 .dst_temps = .{ .mem, .unused },
103894 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },105964 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103895 .each = .{ .once = &.{105965 .each = .{ .once = &.{
103896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },105966 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103897 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },105967 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
103898 .{ .@"0:", ._ps, .xor, .tmp4x, .tmp4x, ._, ._ },105968 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103899 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },105969 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
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), ._, ._ },
103904 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },105970 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
103905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },105971 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103906 } },105972 } },
103907 }, .{105973 }, .{
103908 .required_features = .{ .x87, null, null, null },105974 .required_features = .{ .@"64bit", .sse, null, null },
103909 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },105975 .src_constraints = .{ .{ .float = .xword }, .any, .any },
103910 .dst_constraints = .{ .{ .signed_int = .byte }, .any },105976 .dst_constraints = .{ .{ .signed_int = .xword }, .any },
103911 .patterns = &.{105977 .patterns = &.{
103912 .{ .src = .{ .mem, .none, .none } },105978 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103913 .{ .src = .{ .to_x87, .none, .none } },
103914 },105979 },
105980 .call_frame = .{ .alignment = .@"16" },
103915 .extra_temps = .{105981 .extra_temps = .{
103916 .{ .type = .f64, .kind = .{ .reg = .st7 } },105982 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
103917 .{ .type = .i16, .kind = .mem },105983 .unused,
103918 .unused,105984 .unused,
103919 .unused,105985 .unused,
103920 .unused,105986 .unused,
...@@ -103925,23 +105991,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103925,23 +105991,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103925 .unused,105991 .unused,
103926 .unused,105992 .unused,
103927 },105993 },
103928 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },105994 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
105995 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103929 .each = .{ .once = &.{105996 .each = .{ .once = &.{
103930 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },105997 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103931 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103932 .{ ._, ._, .movsx, .dst0d, .tmp1b, ._, ._ },
103933 } },105998 } },
103934 }, .{105999 }, .{
103935 .required_features = .{ .x87, null, null, null },106000 .required_features = .{ .@"64bit", .sse, null, null },
103936 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106001 .src_constraints = .{ .{ .float = .xword }, .any, .any },
103937 .dst_constraints = .{ .{ .unsigned_int = .byte }, .any },106002 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },
103938 .patterns = &.{106003 .patterns = &.{
103939 .{ .src = .{ .mem, .none, .none } },106004 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
103940 .{ .src = .{ .to_x87, .none, .none } },
103941 },106005 },
106006 .call_frame = .{ .alignment = .@"16" },
103942 .extra_temps = .{106007 .extra_temps = .{
103943 .{ .type = .f64, .kind = .{ .reg = .st7 } },106008 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
103944 .{ .type = .i16, .kind = .mem },106009 .unused,
103945 .unused,106010 .unused,
103946 .unused,106011 .unused,
103947 .unused,106012 .unused,
...@@ -103952,25 +106017,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103952,25 +106017,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103952 .unused,106017 .unused,
103953 .unused,106018 .unused,
103954 },106019 },
103955 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },106020 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },
106021 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103956 .each = .{ .once = &.{106022 .each = .{ .once = &.{
103957 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },106023 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
103958 .{ ._, .fi_p, .stt, .tmp1w, ._, ._, ._ },
103959 .{ ._, ._, .movzx, .dst0d, .tmp1b, ._, ._ },
103960 } },106024 } },
103961 }, .{106025 }, .{
103962 .required_features = .{ .x87, .slow_incdec, null, null },106026 .required_features = .{ .@"64bit", .avx, null, null },
103963 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106027 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103964 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },106028 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
103965 .patterns = &.{106029 .patterns = &.{
103966 .{ .src = .{ .to_mem, .none, .none } },106030 .{ .src = .{ .to_mem, .none, .none } },
103967 },106031 },
106032 .call_frame = .{ .alignment = .@"16" },
103968 .extra_temps = .{106033 .extra_temps = .{
103969 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
103970 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
103971 .{ .type = .f80, .kind = .{ .reg = .st7 } },106035 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
103972 .{ .type = .i16, .kind = .mem },106036 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
103973 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },106037 .{ .type = .u64, .kind = .{ .reg = .rax } },
106038 .{ .type = .i64, .kind = .{ .reg = .rdx } },
103974 .unused,106039 .unused,
103975 .unused,106040 .unused,
103976 .unused,106041 .unused,
...@@ -103979,31 +106044,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103979,31 +106044,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103979 .unused,106044 .unused,
103980 },106045 },
103981 .dst_temps = .{ .mem, .unused },106046 .dst_temps = .{ .mem, .unused },
103982 .clobbers = .{ .eflags = true },106047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
103983 .each = .{ .once = &.{106048 .each = .{ .once = &.{
103984 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },106049 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
103985 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106050 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
103986 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },106051 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
103987 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },106052 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
103988 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },106053 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
103989 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },106054 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
103990 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
103991 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
103992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106055 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
103993 } },106056 } },
103994 }, .{106057 }, .{
103995 .required_features = .{ .x87, null, null, null },106058 .required_features = .{ .@"64bit", .avx, null, null },
103996 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106059 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
103997 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any },106060 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
103998 .patterns = &.{106061 .patterns = &.{
103999 .{ .src = .{ .to_mem, .none, .none } },106062 .{ .src = .{ .to_mem, .none, .none } },
104000 },106063 },
106064 .call_frame = .{ .alignment = .@"16" },
104001 .extra_temps = .{106065 .extra_temps = .{
104002 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104003 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106066 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104004 .{ .type = .f80, .kind = .{ .reg = .st7 } },106067 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104005 .{ .type = .i16, .kind = .mem },106068 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
104006 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },106069 .{ .type = .u64, .kind = .{ .reg = .rax } },
106070 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104007 .unused,106071 .unused,
104008 .unused,106072 .unused,
104009 .unused,106073 .unused,
...@@ -104012,31 +106076,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104012,31 +106076,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104012 .unused,106076 .unused,
104013 },106077 },
104014 .dst_temps = .{ .mem, .unused },106078 .dst_temps = .{ .mem, .unused },
104015 .clobbers = .{ .eflags = true },106079 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104016 .each = .{ .once = &.{106080 .each = .{ .once = &.{
104017 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },106081 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104018 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106082 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104019 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },106083 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104020 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },106084 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104021 .{ ._, ._, .movsx, .tmp4d, .tmp3b, ._, ._ },106085 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104022 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },106086 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104023 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },106087 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104024 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
104025 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
104026 } },106088 } },
104027 }, .{106089 }, .{
104028 .required_features = .{ .x87, .slow_incdec, null, null },106090 .required_features = .{ .@"64bit", .sse2, null, null },
104029 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106091 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104030 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },106092 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104031 .patterns = &.{106093 .patterns = &.{
104032 .{ .src = .{ .to_mem, .none, .none } },106094 .{ .src = .{ .to_mem, .none, .none } },
104033 },106095 },
106096 .call_frame = .{ .alignment = .@"16" },
104034 .extra_temps = .{106097 .extra_temps = .{
104035 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106098 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104037 .{ .type = .f80, .kind = .{ .reg = .st7 } },106099 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104038 .{ .type = .i16, .kind = .mem },106100 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
104039 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },106101 .{ .type = .u64, .kind = .{ .reg = .rax } },
106102 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104040 .unused,106103 .unused,
104041 .unused,106104 .unused,
104042 .unused,106105 .unused,
...@@ -104045,65 +106108,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104045,65 +106108,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104045 .unused,106108 .unused,
104046 },106109 },
104047 .dst_temps = .{ .mem, .unused },106110 .dst_temps = .{ .mem, .unused },
104048 .clobbers = .{ .eflags = true },106111 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104049 .each = .{ .once = &.{106112 .each = .{ .once = &.{
104050 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },106113 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104051 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106114 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104052 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },106115 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104053 .{ ._, .fi_p, .stt, .tmp3w, ._, ._, ._ },106116 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104054 .{ ._, ._, .movzx, .tmp4d, .tmp3b, ._, ._ },106117 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104055 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },106118 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104056 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
104057 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
104058 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106119 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104059 } },106120 } },
104060 }, .{106121 }, .{
104061 .required_features = .{ .x87, null, null, null },106122 .required_features = .{ .@"64bit", .sse2, null, null },
104062 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106123 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104063 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any },106124 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
104064 .patterns = &.{106125 .patterns = &.{
104065 .{ .src = .{ .to_mem, .none, .none } },106126 .{ .src = .{ .to_mem, .none, .none } },
104066 },106127 },
106128 .call_frame = .{ .alignment = .@"16" },
104067 .extra_temps = .{106129 .extra_temps = .{
104068 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104069 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104070 .{ .type = .f80, .kind = .{ .reg = .st7 } },106131 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104071 .{ .type = .i16, .kind = .mem },106132 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
104072 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },106133 .{ .type = .u64, .kind = .{ .reg = .rax } },
104073 .unused,106134 .{ .type = .u64, .kind = .{ .reg = .rdx } },
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,
104107 .unused,106135 .unused,
104108 .unused,106136 .unused,
104109 .unused,106137 .unused,
...@@ -104112,23 +106140,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104112,23 +106140,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104112 .unused,106140 .unused,
104113 },106141 },
104114 .dst_temps = .{ .mem, .unused },106142 .dst_temps = .{ .mem, .unused },
106143 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104115 .each = .{ .once = &.{106144 .each = .{ .once = &.{
104116 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },106145 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104117 .{ ._, .fi_p, .stt, .dst0w, ._, ._, ._ },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", ._, ._, ._ },
104118 } },106152 } },
104119 }, .{106153 }, .{
104120 .required_features = .{ .x87, null, null, null },106154 .required_features = .{ .@"64bit", .sse, null, null },
104121 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106155 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104122 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any },106156 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },
104123 .patterns = &.{106157 .patterns = &.{
104124 .{ .src = .{ .to_mem, .none, .none } },106158 .{ .src = .{ .to_mem, .none, .none } },
104125 },106159 },
106160 .call_frame = .{ .alignment = .@"16" },
104126 .extra_temps = .{106161 .extra_temps = .{
104127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104128 .{ .type = .f80, .kind = .{ .reg = .st7 } },106163 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104129 .unused,106164 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },
104130 .unused,106165 .{ .type = .u64, .kind = .{ .reg = .rax } },
104131 .unused,106166 .{ .type = .i64, .kind = .{ .reg = .rdx } },
104132 .unused,106167 .unused,
104133 .unused,106168 .unused,
104134 .unused,106169 .unused,
...@@ -104137,27 +106172,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104137,27 +106172,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104137 .unused,106172 .unused,
104138 },106173 },
104139 .dst_temps = .{ .mem, .unused },106174 .dst_temps = .{ .mem, .unused },
104140 .clobbers = .{ .eflags = true },106175 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104141 .each = .{ .once = &.{106176 .each = .{ .once = &.{
104142 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106177 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104143 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },106178 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104144 .{ ._, .fi_p, .stt, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },106179 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104145 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106180 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106181 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106182 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104146 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106183 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104147 } },106184 } },
104148 }, .{106185 }, .{
104149 .required_features = .{ .x87, null, null, null },106186 .required_features = .{ .@"64bit", .sse, null, null },
104150 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106187 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104151 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any },106188 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },
104152 .patterns = &.{106189 .patterns = &.{
104153 .{ .src = .{ .to_mem, .none, .none } },106190 .{ .src = .{ .to_mem, .none, .none } },
104154 },106191 },
106192 .call_frame = .{ .alignment = .@"16" },
104155 .extra_temps = .{106193 .extra_temps = .{
104156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106194 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104157 .{ .type = .f80, .kind = .{ .reg = .st7 } },106195 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104158 .{ .type = .i32, .kind = .mem },106196 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },
104159 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },106197 .{ .type = .u64, .kind = .{ .reg = .rax } },
104160 .unused,106198 .{ .type = .u64, .kind = .{ .reg = .rdx } },
104161 .unused,106199 .unused,
104162 .unused,106200 .unused,
104163 .unused,106201 .unused,
...@@ -104166,28 +106204,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104166,28 +106204,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104166 .unused,106204 .unused,
104167 },106205 },
104168 .dst_temps = .{ .mem, .unused },106206 .dst_temps = .{ .mem, .unused },
104169 .clobbers = .{ .eflags = true },106207 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104170 .each = .{ .once = &.{106208 .each = .{ .once = &.{
104171 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106209 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104172 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },106210 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104173 .{ ._, .fi_p, .stt, .tmp2d, ._, ._, ._ },106211 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104174 .{ ._, ._, .mov, .tmp3d, .tmp2d, ._, ._ },106212 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
104175 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },106213 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
104176 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },106214 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104177 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106215 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104178 } },106216 } },
104179 }, .{106217 }, .{
104180 .required_features = .{ .x87, null, null, null },106218 .required_features = .{ .@"64bit", .sse, null, null },
104181 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106219 .src_constraints = .{ .{ .float = .xword }, .any, .any },
104182 .dst_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any },106220 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104183 .patterns = &.{106221 .patterns = &.{
104184 .{ .src = .{ .mem, .none, .none } },106222 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
104185 .{ .src = .{ .to_x87, .none, .none } },
104186 },106223 },
106224 .call_frame = .{ .alignment = .@"16" },
104187 .extra_temps = .{106225 .extra_temps = .{
104188 .{ .type = .f80, .kind = .{ .reg = .st7 } },106226 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104189 .unused,106227 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104190 .unused,106228 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104191 .unused,106229 .unused,
104192 .unused,106230 .unused,
104193 .unused,106231 .unused,
...@@ -104198,21 +106236,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104198,21 +106236,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104198 .unused,106236 .unused,
104199 },106237 },
104200 .dst_temps = .{ .mem, .unused },106238 .dst_temps = .{ .mem, .unused },
106239 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104201 .each = .{ .once = &.{106240 .each = .{ .once = &.{
104202 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },106241 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104203 .{ ._, .fi_p, .stt, .dst0d, ._, ._, ._ },106242 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
106243 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104204 } },106244 } },
104205 }, .{106245 }, .{
104206 .required_features = .{ .x87, null, null, null },106246 .required_features = .{ .@"64bit", .sse, null, null },
104207 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106247 .src_constraints = .{ .{ .float = .xword }, .any, .any },
104208 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },106248 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104209 .patterns = &.{106249 .patterns = &.{
104210 .{ .src = .{ .to_mem, .none, .none } },106250 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },
104211 },106251 },
106252 .call_frame = .{ .alignment = .@"16" },
104212 .extra_temps = .{106253 .extra_temps = .{
104213 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106254 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104214 .{ .type = .f80, .kind = .{ .reg = .st7 } },106255 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104215 .unused,106256 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104216 .unused,106257 .unused,
104217 .unused,106258 .unused,
104218 .unused,106259 .unused,
...@@ -104223,60 +106264,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104223,60 +106264,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104223 .unused,106264 .unused,
104224 },106265 },
104225 .dst_temps = .{ .mem, .unused },106266 .dst_temps = .{ .mem, .unused },
104226 .clobbers = .{ .eflags = true },106267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104227 .each = .{ .once = &.{106268 .each = .{ .once = &.{
104228 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106269 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
104229 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },106270 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104230 .{ ._, .fi_p, .stt, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },106271 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
104231 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
104232 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104233 } },106272 } },
104234 }, .{106273 }, .{
104235 .required_features = .{ .x87, null, null, null },106274 .required_features = .{ .@"64bit", .avx, null, null },
104236 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106275 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104237 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },106276 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104238 .patterns = &.{106277 .patterns = &.{
104239 .{ .src = .{ .to_mem, .none, .none } },106278 .{ .src = .{ .to_mem, .none, .none } },
104240 },106279 },
106280 .call_frame = .{ .alignment = .@"16" },
104241 .extra_temps = .{106281 .extra_temps = .{
104242 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104243 .{ .type = .f80, .kind = .{ .reg = .st7 } },106283 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104244 .{ .type = .i64, .kind = .mem },106284 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104245 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },106285 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104246 .unused,106286 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104247 .unused,106287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
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,
104280 .unused,106288 .unused,
104281 .unused,106289 .unused,
104282 .unused,106290 .unused,
...@@ -104284,60 +106292,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104284,60 +106292,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104284 .unused,106292 .unused,
104285 },106293 },
104286 .dst_temps = .{ .mem, .unused },106294 .dst_temps = .{ .mem, .unused },
106295 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104287 .each = .{ .once = &.{106296 .each = .{ .once = &.{
104288 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },106297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104289 .{ ._, .fi_p, .stt, .dst0q, ._, ._, ._ },106298 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
104290 } },106299 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104291 }, .{106300 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104292 .required_features = .{ .@"64bit", .x87, null, null },106301 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104293 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106302 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
104294 .dst_constraints = .{ .{ .exact_unsigned_int = 64 }, .any },106303 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
104295 .patterns = &.{106304 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104296 .{ .src = .{ .mem, .none, .none } },106305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
104326 } },106306 } },
104327 }, .{106307 }, .{
104328 .required_features = .{ .x87, null, null, null },106308 .required_features = .{ .@"64bit", .avx, null, null },
104329 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106309 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104330 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },106310 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104331 .patterns = &.{106311 .patterns = &.{
104332 .{ .src = .{ .to_mem, .none, .none } },106312 .{ .src = .{ .to_mem, .none, .none } },
104333 },106313 },
106314 .call_frame = .{ .alignment = .@"16" },
104334 .extra_temps = .{106315 .extra_temps = .{
104335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106316 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104336 .{ .type = .f80, .kind = .{ .reg = .st7 } },106317 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104337 .unused,106318 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104338 .unused,106319 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104339 .unused,106320 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104340 .unused,106321 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104341 .unused,106322 .unused,
104342 .unused,106323 .unused,
104343 .unused,106324 .unused,
...@@ -104345,29 +106326,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104345,29 +106326,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104345 .unused,106326 .unused,
104346 },106327 },
104347 .dst_temps = .{ .mem, .unused },106328 .dst_temps = .{ .mem, .unused },
104348 .clobbers = .{ .eflags = true },106329 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104349 .each = .{ .once = &.{106330 .each = .{ .once = &.{
104350 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106331 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104351 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },106332 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
104352 .{ ._, .fi_p, .stt, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },106333 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104353 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
104354 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106339 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104355 } },106340 } },
104356 }, .{106341 }, .{
104357 .required_features = .{ .@"64bit", .avx, null, null },106342 .required_features = .{ .@"64bit", .sse2, null, null },
104358 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106343 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104359 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },106344 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104360 .patterns = &.{106345 .patterns = &.{
104361 .{ .src = .{ .to_mem, .none, .none } },106346 .{ .src = .{ .to_mem, .none, .none } },
104362 },106347 },
104363 .call_frame = .{ .size = 16, .alignment = .@"16" },106348 .call_frame = .{ .alignment = .@"16" },
104364 .extra_temps = .{106349 .extra_temps = .{
104365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104366 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106351 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104367 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106352 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104368 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106353 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104369 .{ .type = .u64, .kind = .{ .reg = .rax } },106354 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104370 .unused,106355 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104371 .unused,106356 .unused,
104372 .unused,106357 .unused,
104373 .unused,106358 .unused,
...@@ -104377,29 +106362,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104377,29 +106362,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104377 .dst_temps = .{ .mem, .unused },106362 .dst_temps = .{ .mem, .unused },
104378 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106363 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104379 .each = .{ .once = &.{106364 .each = .{ .once = &.{
104380 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106365 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104381 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106366 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
104382 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },106367 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104383 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },106368 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104384 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },106369 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104385 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106370 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106371 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106372 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104386 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106373 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104387 } },106374 } },
104388 }, .{106375 }, .{
104389 .required_features = .{ .@"64bit", .sse2, null, null },106376 .required_features = .{ .@"64bit", .sse2, null, null },
104390 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106377 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104391 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },106378 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104392 .patterns = &.{106379 .patterns = &.{
104393 .{ .src = .{ .to_mem, .none, .none } },106380 .{ .src = .{ .to_mem, .none, .none } },
104394 },106381 },
104395 .call_frame = .{ .size = 16, .alignment = .@"16" },106382 .call_frame = .{ .alignment = .@"16" },
104396 .extra_temps = .{106383 .extra_temps = .{
104397 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106384 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104398 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106385 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104399 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106386 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106387 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104401 .{ .type = .u64, .kind = .{ .reg = .rax } },106388 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104402 .unused,106389 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104403 .unused,106390 .unused,
104404 .unused,106391 .unused,
104405 .unused,106392 .unused,
...@@ -104409,29 +106396,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104409,29 +106396,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104409 .dst_temps = .{ .mem, .unused },106396 .dst_temps = .{ .mem, .unused },
104410 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106397 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104411 .each = .{ .once = &.{106398 .each = .{ .once = &.{
104412 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106399 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104413 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106400 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
104414 .{ ._, ._dqa, .mov, .tmp2x, .tmp1x, ._, ._ },106401 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104415 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },106402 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104416 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },106403 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104417 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106404 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106405 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106406 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104418 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104419 } },106408 } },
104420 }, .{106409 }, .{
104421 .required_features = .{ .@"64bit", .sse, null, null },106410 .required_features = .{ .@"64bit", .sse, null, null },
104422 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106411 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104423 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },106412 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },
104424 .patterns = &.{106413 .patterns = &.{
104425 .{ .src = .{ .to_mem, .none, .none } },106414 .{ .src = .{ .to_mem, .none, .none } },
104426 },106415 },
104427 .call_frame = .{ .size = 16, .alignment = .@"16" },106416 .call_frame = .{ .alignment = .@"16" },
104428 .extra_temps = .{106417 .extra_temps = .{
104429 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106418 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104430 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106419 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104431 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106420 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104432 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106421 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104433 .{ .type = .u64, .kind = .{ .reg = .rax } },106422 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104434 .unused,106423 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },
104435 .unused,106424 .unused,
104436 .unused,106425 .unused,
104437 .unused,106426 .unused,
...@@ -104441,54 +106430,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104441,54 +106430,77 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104441 .dst_temps = .{ .mem, .unused },106430 .dst_temps = .{ .mem, .unused },
104442 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106431 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104443 .each = .{ .once = &.{106432 .each = .{ .once = &.{
104444 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },106433 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104445 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },106434 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
104446 .{ ._, ._ps, .mova, .tmp2x, .tmp1x, ._, ._ },106435 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },
104447 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },106436 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },
104448 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },106437 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
104449 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },106438 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106439 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106440 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
104450 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },106441 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
104451 } },106442 } },
104452 }, .{106443 }, .{
104453 .required_features = .{ .@"64bit", .avx, null, null },106444 .required_features = .{ .@"64bit", .sse, null, null },
104454 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106445 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
104455 .dst_constraints = .{ .{ .signed_int = .xword }, .any },106446 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },
104456 .patterns = &.{106447 .patterns = &.{
104457 .{ .src = .{ .to_mem, .none, .none } },106448 .{ .src = .{ .to_mem, .none, .none } },
104458 },106449 },
104459 .call_frame = .{ .size = 16, .alignment = .@"16" },106450 .call_frame = .{ .alignment = .@"16" },
104460 .extra_temps = .{106451 .extra_temps = .{
104461 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
104462 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106453 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
104463 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },106454 .{ .type = .usize, .kind = .{ .reg = .rdi } },
104464 .unused,106455 .{ .type = .usize, .kind = .{ .reg = .rsi } },
104465 .unused,106456 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
104466 .unused,106457 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },
104467 .unused,106458 .unused,
104468 .unused,106459 .unused,
104469 .unused,106460 .unused,
104470 .unused,106461 .unused,
104471 .unused,106462 .unused,
104472 },106463 },
104473 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },106464 .dst_temps = .{ .mem, .unused },
104474 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106465 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104475 .each = .{ .once = &.{106466 .each = .{ .once = &.{
104476 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },106467 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
104477 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },106468 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
104478 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },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", ._, ._, ._ },
104479 } },106476 } },
104480 }, .{106477 } }) catch |err| switch (err) {
104481 .required_features = .{ .@"64bit", .avx, null, null },106478 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
104482 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106479 @tagName(air_tag),
104483 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },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 },
104484 .patterns = &.{106496 .patterns = &.{
104485 .{ .src = .{ .to_mem, .none, .none } },106497 .{ .src = .{ .mem, .none, .none } },
106498 .{ .src = .{ .to_gpr, .none, .none } },
104486 },106499 },
104487 .call_frame = .{ .size = 16, .alignment = .@"16" },
104488 .extra_temps = .{106500 .extra_temps = .{
104489 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106501 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
104490 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106502 .unused,
104491 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106503 .unused,
104492 .unused,106504 .unused,
104493 .unused,106505 .unused,
104494 .unused,106506 .unused,
...@@ -104498,25 +106510,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104498,25 +106510,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104498 .unused,106510 .unused,
104499 .unused,106511 .unused,
104500 },106512 },
104501 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },106513 .dst_temps = .{ .{ .rc = .sse }, .unused },
104502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104503 .each = .{ .once = &.{106514 .each = .{ .once = &.{
104504 .{ ._, .v_dqa, .mov, .tmp0x, .src0x, ._, ._ },106515 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
104505 .{ ._, .v_dqa, .mov, .tmp1x, .tmp0x, ._, ._ },106516 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104506 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106517 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106518 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104507 } },106519 } },
104508 }, .{106520 }, .{
104509 .required_features = .{ .@"64bit", .sse2, null, null },106521 .required_features = .{ .f16c, null, null, null },
104510 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106522 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
104511 .dst_constraints = .{ .{ .signed_int = .xword }, .any },106523 .dst_constraints = .{ .{ .float = .word }, .any },
104512 .patterns = &.{106524 .patterns = &.{
104513 .{ .src = .{ .to_mem, .none, .none } },106525 .{ .src = .{ .mem, .none, .none } },
106526 .{ .src = .{ .to_gpr, .none, .none } },
104514 },106527 },
104515 .call_frame = .{ .size = 16, .alignment = .@"16" },
104516 .extra_temps = .{106528 .extra_temps = .{
104517 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106529 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
104518 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106530 .unused,
104519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },106531 .unused,
104520 .unused,106532 .unused,
104521 .unused,106533 .unused,
104522 .unused,106534 .unused,
...@@ -104526,25 +106538,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104526,25 +106538,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104526 .unused,106538 .unused,
104527 .unused,106539 .unused,
104528 },106540 },
104529 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },106541 .dst_temps = .{ .{ .rc = .sse }, .unused },
104530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104531 .each = .{ .once = &.{106542 .each = .{ .once = &.{
104532 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },106543 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
104533 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },106544 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104534 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106545 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106546 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104535 } },106547 } },
104536 }, .{106548 }, .{
104537 .required_features = .{ .@"64bit", .sse2, null, null },106549 .required_features = .{ .f16c, null, null, null },
104538 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106550 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
104539 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },106551 .dst_constraints = .{ .{ .float = .word }, .any },
104540 .patterns = &.{106552 .patterns = &.{
104541 .{ .src = .{ .to_mem, .none, .none } },106553 .{ .src = .{ .mem, .none, .none } },
106554 .{ .src = .{ .to_gpr, .none, .none } },
104542 },106555 },
104543 .call_frame = .{ .size = 16, .alignment = .@"16" },
104544 .extra_temps = .{106556 .extra_temps = .{
104545 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106557 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
104546 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106558 .unused,
104547 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106559 .unused,
104548 .unused,106560 .unused,
104549 .unused,106561 .unused,
104550 .unused,106562 .unused,
...@@ -104554,25 +106566,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104554,25 +106566,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104554 .unused,106566 .unused,
104555 .unused,106567 .unused,
104556 },106568 },
104557 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },106569 .dst_temps = .{ .{ .rc = .sse }, .unused },
104558 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104559 .each = .{ .once = &.{106570 .each = .{ .once = &.{
104560 .{ ._, ._dqa, .mov, .tmp0x, .src0x, ._, ._ },106571 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
104561 .{ ._, ._dqa, .mov, .tmp1x, .tmp0x, ._, ._ },106572 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104562 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106573 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106574 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104563 } },106575 } },
104564 }, .{106576 }, .{
104565 .required_features = .{ .@"64bit", .sse, null, null },106577 .required_features = .{ .f16c, null, null, null },
104566 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106578 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
104567 .dst_constraints = .{ .{ .signed_int = .xword }, .any },106579 .dst_constraints = .{ .{ .float = .word }, .any },
104568 .patterns = &.{106580 .patterns = &.{
104569 .{ .src = .{ .to_mem, .none, .none } },106581 .{ .src = .{ .mem, .none, .none } },
106582 .{ .src = .{ .to_gpr, .none, .none } },
104570 },106583 },
104571 .call_frame = .{ .size = 16, .alignment = .@"16" },
104572 .extra_temps = .{106584 .extra_temps = .{
104573 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106585 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
104574 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106586 .unused,
104575 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },106587 .unused,
104576 .unused,106588 .unused,
104577 .unused,106589 .unused,
104578 .unused,106590 .unused,
...@@ -104582,25 +106594,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104582,25 +106594,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104582 .unused,106594 .unused,
104583 .unused,106595 .unused,
104584 },106596 },
104585 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },106597 .dst_temps = .{ .{ .rc = .sse }, .unused },
104586 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104587 .each = .{ .once = &.{106598 .each = .{ .once = &.{
104588 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },106599 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
104589 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },106600 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104590 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106601 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
106602 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104591 } },106603 } },
104592 }, .{106604 }, .{
104593 .required_features = .{ .@"64bit", .sse, null, null },106605 .required_features = .{ .f16c, null, null, null },
104594 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106606 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
104595 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },106607 .dst_constraints = .{ .{ .float = .word }, .any },
104596 .patterns = &.{106608 .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 } },
104598 },106625 },
104599 .call_frame = .{ .size = 16, .alignment = .@"16" },
104600 .extra_temps = .{106626 .extra_temps = .{
104601 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106627 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
104602 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106628 .unused,
104603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106629 .unused,
104604 .unused,106630 .unused,
104605 .unused,106631 .unused,
104606 .unused,106632 .unused,
...@@ -104610,225 +106636,185 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104610,225 +106636,185 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104610 .unused,106636 .unused,
104611 .unused,106637 .unused,
104612 },106638 },
104613 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },106639 .dst_temps = .{ .{ .rc = .sse }, .unused },
104614 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104615 .each = .{ .once = &.{106640 .each = .{ .once = &.{
104616 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },106641 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
104617 .{ ._, ._ps, .mova, .tmp1x, .tmp0x, ._, ._ },106642 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104618 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },106643 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
106644 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
104619 } },106645 } },
104620 }, .{106646 }, .{
104621 .required_features = .{ .@"64bit", .avx, null, null },106647 .required_features = .{ .@"64bit", .f16c, null, null },
104622 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106648 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
104623 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },106649 .dst_constraints = .{ .{ .float = .word }, .any },
104624 .patterns = &.{106650 .patterns = &.{
104625 .{ .src = .{ .to_mem, .none, .none } },106651 .{ .src = .{ .mem, .none, .none } },
104626 },106652 .{ .src = .{ .to_gpr, .none, .none } },
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,
104640 },106653 },
104641 .dst_temps = .{ .mem, .unused },106654 .dst_temps = .{ .{ .rc = .sse }, .unused },
104642 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104643 .each = .{ .once = &.{106655 .each = .{ .once = &.{
104644 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106656 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104645 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106657 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
104646 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },106658 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
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", ._, ._, ._ },
104652 } },106659 } },
104653 }, .{106660 }, .{
104654 .required_features = .{ .@"64bit", .avx, null, null },106661 .required_features = .{ .@"64bit", .f16c, null, null },
104655 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106662 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
104656 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },106663 .dst_constraints = .{ .{ .float = .word }, .any },
104657 .patterns = &.{106664 .patterns = &.{
104658 .{ .src = .{ .to_mem, .none, .none } },106665 .{ .src = .{ .to_mut_gpr, .none, .none } },
104659 },106666 },
104660 .call_frame = .{ .size = 16, .alignment = .@"16" },
104661 .extra_temps = .{106667 .extra_temps = .{
104662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106668 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
104663 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106669 .unused,
104664 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106670 .unused,
104665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106671 .unused,
104666 .{ .type = .u64, .kind = .{ .reg = .rax } },106672 .unused,
104667 .{ .type = .u64, .kind = .{ .reg = .rdx } },106673 .unused,
104668 .unused,106674 .unused,
104669 .unused,106675 .unused,
104670 .unused,106676 .unused,
104671 .unused,106677 .unused,
104672 .unused,106678 .unused,
104673 },106679 },
104674 .dst_temps = .{ .mem, .unused },106680 .dst_temps = .{ .{ .rc = .sse }, .unused },
104675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106681 .clobbers = .{ .eflags = true },
104676 .each = .{ .once = &.{106682 .each = .{ .once = &.{
104677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106683 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
104678 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106684 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
104679 .{ ._, .v_dqa, .mov, .tmp2x, .tmp1x, ._, ._ },106685 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
104680 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },106686 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
104681 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4q, ._, ._ },106687 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
104682 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp5q, ._, ._ },106688 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
104683 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },106689 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },
104684 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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(.{}), ._ },
104685 } },106695 } },
104686 }, .{106696 }, .{
104687 .required_features = .{ .@"64bit", .sse2, null, null },106697 .required_features = .{ .sse, null, null, null },
104688 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106698 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
104689 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },106699 .dst_constraints = .{ .{ .float = .word }, .any },
104690 .patterns = &.{106700 .patterns = &.{
104691 .{ .src = .{ .to_mem, .none, .none } },106701 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
104692 },106702 },
104693 .call_frame = .{ .size = 16, .alignment = .@"16" },106703 .call_frame = .{ .alignment = .@"16" },
104694 .extra_temps = .{106704 .extra_temps = .{
104695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106705 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
104696 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106706 .unused,
104697 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106707 .unused,
104698 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },106708 .unused,
104699 .{ .type = .u64, .kind = .{ .reg = .rax } },106709 .unused,
104700 .{ .type = .i64, .kind = .{ .reg = .rdx } },106710 .unused,
104701 .unused,106711 .unused,
104702 .unused,106712 .unused,
104703 .unused,106713 .unused,
104704 .unused,106714 .unused,
104705 .unused,106715 .unused,
104706 },106716 },
104707 .dst_temps = .{ .mem, .unused },106717 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104708 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106718 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104709 .each = .{ .once = &.{106719 .each = .{ .once = &.{
104710 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106720 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },
104711 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106721 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
104718 } },106722 } },
104719 }, .{106723 }, .{
104720 .required_features = .{ .@"64bit", .sse2, null, null },106724 .required_features = .{ .sse, null, null, null },
104721 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106725 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
104722 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },106726 .dst_constraints = .{ .{ .float = .word }, .any },
104723 .patterns = &.{106727 .patterns = &.{
104724 .{ .src = .{ .to_mem, .none, .none } },106728 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },
104725 },106729 },
104726 .call_frame = .{ .size = 16, .alignment = .@"16" },106730 .call_frame = .{ .alignment = .@"16" },
104727 .extra_temps = .{106731 .extra_temps = .{
104728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106732 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
104729 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106733 .unused,
104730 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106734 .unused,
104731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106735 .unused,
104732 .{ .type = .u64, .kind = .{ .reg = .rax } },106736 .unused,
104733 .{ .type = .u64, .kind = .{ .reg = .rdx } },106737 .unused,
104734 .unused,106738 .unused,
104735 .unused,106739 .unused,
104736 .unused,106740 .unused,
104737 .unused,106741 .unused,
104738 .unused,106742 .unused,
104739 },106743 },
104740 .dst_temps = .{ .mem, .unused },106744 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104741 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104742 .each = .{ .once = &.{106746 .each = .{ .once = &.{
104743 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106747 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },
104744 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106748 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
104751 } },106749 } },
104752 }, .{106750 }, .{
104753 .required_features = .{ .@"64bit", .sse, null, null },106751 .required_features = .{ .sse, null, null, null },
104754 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106752 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
104755 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },106753 .dst_constraints = .{ .{ .float = .word }, .any },
104756 .patterns = &.{106754 .patterns = &.{
104757 .{ .src = .{ .to_mem, .none, .none } },106755 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
104758 },106756 },
104759 .call_frame = .{ .size = 16, .alignment = .@"16" },106757 .call_frame = .{ .alignment = .@"16" },
104760 .extra_temps = .{106758 .extra_temps = .{
104761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106759 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
104762 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106760 .unused,
104763 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106761 .unused,
104764 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfti" } } },106762 .unused,
104765 .{ .type = .u64, .kind = .{ .reg = .rax } },106763 .unused,
104766 .{ .type = .i64, .kind = .{ .reg = .rdx } },106764 .unused,
104767 .unused,106765 .unused,
104768 .unused,106766 .unused,
104769 .unused,106767 .unused,
104770 .unused,106768 .unused,
104771 .unused,106769 .unused,
104772 },106770 },
104773 .dst_temps = .{ .mem, .unused },106771 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104774 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106772 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104775 .each = .{ .once = &.{106773 .each = .{ .once = &.{
104776 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106774 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },
104777 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106775 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
104784 } },106776 } },
104785 }, .{106777 }, .{
104786 .required_features = .{ .@"64bit", .sse, null, null },106778 .required_features = .{ .sse, null, null, null },
104787 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106779 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
104788 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },106780 .dst_constraints = .{ .{ .float = .word }, .any },
104789 .patterns = &.{106781 .patterns = &.{
104790 .{ .src = .{ .to_mem, .none, .none } },106782 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },
104791 },106783 },
104792 .call_frame = .{ .size = 16, .alignment = .@"16" },106784 .call_frame = .{ .alignment = .@"16" },
104793 .extra_temps = .{106785 .extra_temps = .{
104794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },106786 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
104795 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106787 .unused,
104796 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106788 .unused,
104797 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfti" } } },106789 .unused,
104798 .{ .type = .u64, .kind = .{ .reg = .rax } },106790 .unused,
104799 .{ .type = .u64, .kind = .{ .reg = .rdx } },106791 .unused,
104800 .unused,106792 .unused,
104801 .unused,106793 .unused,
104802 .unused,106794 .unused,
104803 .unused,106795 .unused,
104804 .unused,106796 .unused,
104805 },106797 },
104806 .dst_temps = .{ .mem, .unused },106798 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104807 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106799 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104808 .each = .{ .once = &.{106800 .each = .{ .once = &.{
104809 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106801 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },
104810 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106802 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
104817 } },106803 } },
104818 }, .{106804 }, .{
104819 .required_features = .{ .@"64bit", .avx, null, null },106805 .required_features = .{ .sse, null, null, null },
104820 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106806 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
104821 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },106807 .dst_constraints = .{ .{ .float = .word }, .any },
104822 .patterns = &.{106808 .patterns = &.{
104823 .{ .src = .{ .to_mem, .none, .none } },106809 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
104824 },106810 },
104825 .call_frame = .{ .size = 16, .alignment = .@"16" },106811 .call_frame = .{ .alignment = .@"16" },
104826 .extra_temps = .{106812 .extra_temps = .{
104827 .{ .type = .usize, .kind = .{ .reg = .rdi } },106813 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
104828 .{ .type = .usize, .kind = .{ .reg = .rsi } },106814 .unused,
104829 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106815 .unused,
104830 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106816 .unused,
104831 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106817 .unused,
104832 .unused,106818 .unused,
104833 .unused,106819 .unused,
104834 .unused,106820 .unused,
...@@ -104836,29 +106822,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104836,29 +106822,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104836 .unused,106822 .unused,
104837 .unused,106823 .unused,
104838 },106824 },
104839 .dst_temps = .{ .mem, .unused },106825 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104840 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106826 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104841 .each = .{ .once = &.{106827 .each = .{ .once = &.{
104842 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },106828 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104843 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104844 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
104845 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104846 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
104847 } },106829 } },
104848 }, .{106830 }, .{
104849 .required_features = .{ .@"64bit", .avx, null, null },106831 .required_features = .{ .sse, null, null, null },
104850 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106832 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
104851 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },106833 .dst_constraints = .{ .{ .float = .word }, .any },
104852 .patterns = &.{106834 .patterns = &.{
104853 .{ .src = .{ .to_mem, .none, .none } },106835 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
104854 },106836 },
104855 .call_frame = .{ .size = 16, .alignment = .@"16" },106837 .call_frame = .{ .alignment = .@"16" },
104856 .extra_temps = .{106838 .extra_temps = .{
104857 .{ .type = .usize, .kind = .{ .reg = .rdi } },106839 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
104858 .{ .type = .usize, .kind = .{ .reg = .rsi } },106840 .unused,
104859 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106841 .unused,
104860 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106842 .unused,
104861 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106843 .unused,
104862 .unused,106844 .unused,
104863 .unused,106845 .unused,
104864 .unused,106846 .unused,
...@@ -104866,29 +106848,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104866,29 +106848,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104866 .unused,106848 .unused,
104867 .unused,106849 .unused,
104868 },106850 },
104869 .dst_temps = .{ .mem, .unused },106851 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104870 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104871 .each = .{ .once = &.{106853 .each = .{ .once = &.{
104872 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },106854 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104873 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104874 .{ ._, .v_dqa, .mov, .tmp2x, .src0x, ._, ._ },
104875 .{ ._, .v_dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104876 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
104877 } },106855 } },
104878 }, .{106856 }, .{
104879 .required_features = .{ .@"64bit", .sse2, null, null },106857 .required_features = .{ .@"64bit", .sse, null, null },
104880 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106858 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
104881 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },106859 .dst_constraints = .{ .{ .float = .word }, .any },
104882 .patterns = &.{106860 .patterns = &.{
104883 .{ .src = .{ .to_mem, .none, .none } },106861 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
104884 },106862 },
104885 .call_frame = .{ .size = 16, .alignment = .@"16" },106863 .call_frame = .{ .alignment = .@"16" },
104886 .extra_temps = .{106864 .extra_temps = .{
104887 .{ .type = .usize, .kind = .{ .reg = .rdi } },106865 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
104888 .{ .type = .usize, .kind = .{ .reg = .rsi } },106866 .unused,
104889 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106867 .unused,
104890 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106868 .unused,
104891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106869 .unused,
104892 .unused,106870 .unused,
104893 .unused,106871 .unused,
104894 .unused,106872 .unused,
...@@ -104896,29 +106874,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104896,29 +106874,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104896 .unused,106874 .unused,
104897 .unused,106875 .unused,
104898 },106876 },
104899 .dst_temps = .{ .mem, .unused },106877 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104900 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106878 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104901 .each = .{ .once = &.{106879 .each = .{ .once = &.{
104902 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },106880 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104903 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104904 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
104905 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104906 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
104907 } },106881 } },
104908 }, .{106882 }, .{
104909 .required_features = .{ .@"64bit", .sse2, null, null },106883 .required_features = .{ .@"64bit", .sse, null, null },
104910 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106884 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
104911 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },106885 .dst_constraints = .{ .{ .float = .word }, .any },
104912 .patterns = &.{106886 .patterns = &.{
104913 .{ .src = .{ .to_mem, .none, .none } },106887 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
104914 },106888 },
104915 .call_frame = .{ .size = 16, .alignment = .@"16" },106889 .call_frame = .{ .alignment = .@"16" },
104916 .extra_temps = .{106890 .extra_temps = .{
104917 .{ .type = .usize, .kind = .{ .reg = .rdi } },106891 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
104918 .{ .type = .usize, .kind = .{ .reg = .rsi } },106892 .unused,
104919 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106893 .unused,
104920 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106894 .unused,
104921 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106895 .unused,
104922 .unused,106896 .unused,
104923 .unused,106897 .unused,
104924 .unused,106898 .unused,
...@@ -104926,29 +106900,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104926,29 +106900,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104926 .unused,106900 .unused,
104927 .unused,106901 .unused,
104928 },106902 },
104929 .dst_temps = .{ .mem, .unused },106903 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106904 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104931 .each = .{ .once = &.{106905 .each = .{ .once = &.{
104932 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },106906 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104933 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104934 .{ ._, ._dqa, .mov, .tmp2x, .src0x, ._, ._ },
104935 .{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
104936 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
104937 } },106907 } },
104938 }, .{106908 }, .{
104939 .required_features = .{ .@"64bit", .sse, null, null },106909 .required_features = .{ .@"64bit", .sse, null, null },
104940 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106910 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
104941 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },106911 .dst_constraints = .{ .{ .float = .word }, .any },
104942 .patterns = &.{106912 .patterns = &.{
104943 .{ .src = .{ .to_mem, .none, .none } },106913 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
104944 },106914 },
104945 .call_frame = .{ .size = 16, .alignment = .@"16" },106915 .call_frame = .{ .alignment = .@"16" },
104946 .extra_temps = .{106916 .extra_temps = .{
104947 .{ .type = .usize, .kind = .{ .reg = .rdi } },106917 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
104948 .{ .type = .usize, .kind = .{ .reg = .rsi } },106918 .unused,
104949 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106919 .unused,
104950 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106920 .unused,
104951 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106921 .unused,
104952 .unused,106922 .unused,
104953 .unused,106923 .unused,
104954 .unused,106924 .unused,
...@@ -104956,29 +106926,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104956,29 +106926,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104956 .unused,106926 .unused,
104957 .unused,106927 .unused,
104958 },106928 },
104959 .dst_temps = .{ .mem, .unused },106929 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104960 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106930 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104961 .each = .{ .once = &.{106931 .each = .{ .once = &.{
104962 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },106932 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104963 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104964 .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ },
104965 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
104966 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
104967 } },106933 } },
104968 }, .{106934 }, .{
104969 .required_features = .{ .@"64bit", .sse, null, null },106935 .required_features = .{ .@"64bit", .sse, null, null },
104970 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },106936 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
104971 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },106937 .dst_constraints = .{ .{ .float = .word }, .any },
104972 .patterns = &.{106938 .patterns = &.{
104973 .{ .src = .{ .to_mem, .none, .none } },106939 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
104974 },106940 },
104975 .call_frame = .{ .size = 16, .alignment = .@"16" },106941 .call_frame = .{ .alignment = .@"16" },
104976 .extra_temps = .{106942 .extra_temps = .{
104977 .{ .type = .usize, .kind = .{ .reg = .rdi } },106943 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
104978 .{ .type = .usize, .kind = .{ .reg = .rsi } },106944 .unused,
104979 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106945 .unused,
104980 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106946 .unused,
104981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },106947 .unused,
104982 .unused,106948 .unused,
104983 .unused,106949 .unused,
104984 .unused,106950 .unused,
...@@ -104986,239 +106952,196 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104986,239 +106952,196 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104986 .unused,106952 .unused,
104987 .unused,106953 .unused,
104988 },106954 },
104989 .dst_temps = .{ .mem, .unused },106955 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
104990 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106956 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
104991 .each = .{ .once = &.{106957 .each = .{ .once = &.{
104992 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },106958 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
104993 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },
104994 .{ ._, ._ps, .mova, .tmp2x, .src0x, ._, ._ },
104995 .{ ._, ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
104996 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
104997 } },106959 } },
104998 }, .{106960 }, .{
104999 .required_features = .{ .@"64bit", .avx, null, null },106961 .required_features = .{ .@"64bit", .sse, null, null },
105000 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106962 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
105001 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },106963 .dst_constraints = .{ .{ .float = .word }, .any },
105002 .patterns = &.{106964 .patterns = &.{
105003 .{ .src = .{ .to_mem, .none, .none } },106965 .{ .src = .{ .to_mem, .none, .none } },
105004 },106966 },
105005 .call_frame = .{ .size = 16, .alignment = .@"16" },106967 .call_frame = .{ .alignment = .@"16" },
105006 .extra_temps = .{106968 .extra_temps = .{
105007 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105008 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105009 .{ .type = .usize, .kind = .{ .reg = .rdi } },106969 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105010 .{ .type = .usize, .kind = .{ .reg = .rsi } },106970 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105011 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106971 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
105012 .{ .type = .f80, .kind = .{ .frame = .call_frame } },106972 .unused,
105013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },106973 .unused,
106974 .unused,
106975 .unused,
105014 .unused,106976 .unused,
105015 .unused,106977 .unused,
105016 .unused,106978 .unused,
105017 .unused,106979 .unused,
105018 },106980 },
105019 .dst_temps = .{ .mem, .unused },106981 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
105020 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },106982 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105021 .each = .{ .once = &.{106983 .each = .{ .once = &.{
105022 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },106984 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105023 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },106985 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
105024 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },106986 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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", ._, ._, ._ },
105032 } },106987 } },
105033 }, .{106988 }, .{
105034 .required_features = .{ .@"64bit", .avx, null, null },106989 .required_features = .{ .@"64bit", .sse, null, null },
105035 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },106990 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
105036 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },106991 .dst_constraints = .{ .{ .float = .word }, .any },
105037 .patterns = &.{106992 .patterns = &.{
105038 .{ .src = .{ .to_mem, .none, .none } },106993 .{ .src = .{ .to_mem, .none, .none } },
105039 },106994 },
105040 .call_frame = .{ .size = 16, .alignment = .@"16" },106995 .call_frame = .{ .alignment = .@"16" },
105041 .extra_temps = .{106996 .extra_temps = .{
105042 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105043 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105044 .{ .type = .usize, .kind = .{ .reg = .rdi } },106997 .{ .type = .usize, .kind = .{ .reg = .rdi } },
105045 .{ .type = .usize, .kind = .{ .reg = .rsi } },106998 .{ .type = .usize, .kind = .{ .reg = .rsi } },
105046 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },106999 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
105047 .{ .type = .f80, .kind = .{ .frame = .call_frame } },107000 .unused,
105048 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },107001 .unused,
107002 .unused,
107003 .unused,
105049 .unused,107004 .unused,
105050 .unused,107005 .unused,
105051 .unused,107006 .unused,
105052 .unused,107007 .unused,
105053 },107008 },
105054 .dst_temps = .{ .mem, .unused },107009 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
105055 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107010 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105056 .each = .{ .once = &.{107011 .each = .{ .once = &.{
105057 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107012 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
105058 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107013 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
105059 .{ .@"0:", .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },107014 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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", ._, ._, ._ },
105067 } },107015 } },
105068 }, .{107016 }, .{
105069 .required_features = .{ .@"64bit", .sse2, null, null },107017 .required_features = .{ .f16c, null, null, null },
105070 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },107018 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
105071 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },107019 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
105072 .patterns = &.{107020 .patterns = &.{
105073 .{ .src = .{ .to_mem, .none, .none } },107021 .{ .src = .{ .mem, .none, .none } },
107022 .{ .src = .{ .to_sse, .none, .none } },
105074 },107023 },
105075 .call_frame = .{ .size = 16, .alignment = .@"16" },107024 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105076 .extra_temps = .{107025 .each = .{ .once = &.{
105077 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107026 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
105078 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107027 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
105079 .{ .type = .usize, .kind = .{ .reg = .rdi } },107028 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
105080 .{ .type = .usize, .kind = .{ .reg = .rsi } },107029 } },
105081 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },107030 }, .{
105082 .{ .type = .f80, .kind = .{ .frame = .call_frame } },107031 .required_features = .{ .f16c, .avx2, null, null },
105083 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },107032 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
105084 .unused,107033 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
105085 .unused,107034 .patterns = &.{
105086 .unused,107035 .{ .src = .{ .mem, .none, .none } },
105087 .unused,107036 .{ .src = .{ .to_sse, .none, .none } },
105088 },107037 },
105089 .dst_temps = .{ .mem, .unused },107038 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105090 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105091 .each = .{ .once = &.{107039 .each = .{ .once = &.{
105092 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107040 .{ ._, .vp_d, .movsxb, .dst0y, .src0q, ._, ._ },
105093 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107041 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
105094 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },107042 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
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", ._, ._, ._ },
105102 } },107043 } },
105103 }, .{107044 }, .{
105104 .required_features = .{ .@"64bit", .sse2, null, null },107045 .required_features = .{ .f16c, null, null, null },
105105 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },107046 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
105106 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },107047 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
105107 .patterns = &.{107048 .patterns = &.{
105108 .{ .src = .{ .to_mem, .none, .none } },107049 .{ .src = .{ .mem, .none, .none } },
107050 .{ .src = .{ .to_sse, .none, .none } },
105109 },107051 },
105110 .call_frame = .{ .size = 16, .alignment = .@"16" },107052 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105111 .extra_temps = .{107053 .each = .{ .once = &.{
105112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107054 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
105113 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107055 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
105114 .{ .type = .usize, .kind = .{ .reg = .rdi } },107056 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
105115 .{ .type = .usize, .kind = .{ .reg = .rsi } },107057 } },
105116 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },107058 }, .{
105117 .{ .type = .f80, .kind = .{ .frame = .call_frame } },107059 .required_features = .{ .f16c, .avx2, null, null },
105118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },107060 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
105119 .unused,107061 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
105120 .unused,107062 .patterns = &.{
105121 .unused,107063 .{ .src = .{ .mem, .none, .none } },
105122 .unused,107064 .{ .src = .{ .to_sse, .none, .none } },
105123 },107065 },
105124 .dst_temps = .{ .mem, .unused },107066 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105125 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105126 .each = .{ .once = &.{107067 .each = .{ .once = &.{
105127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107068 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },
105128 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107069 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
105129 .{ .@"0:", ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },107070 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
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", ._, ._, ._ },
105137 } },107071 } },
105138 }, .{107072 }, .{
105139 .required_features = .{ .@"64bit", .sse, null, null },107073 .required_features = .{ .f16c, .avx2, null, null },
105140 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },107074 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
105141 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },107075 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105142 .patterns = &.{107076 .patterns = &.{
105143 .{ .src = .{ .to_mem, .none, .none } },107077 .{ .src = .{ .to_mem, .none, .none } },
105144 },107078 },
105145 .call_frame = .{ .size = 16, .alignment = .@"16" },
105146 .extra_temps = .{107079 .extra_temps = .{
105147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107080 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105148 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107081 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
105149 .{ .type = .usize, .kind = .{ .reg = .rdi } },107082 .unused,
105150 .{ .type = .usize, .kind = .{ .reg = .rsi } },107083 .unused,
105151 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },107084 .unused,
105152 .{ .type = .f80, .kind = .{ .frame = .call_frame } },107085 .unused,
105153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixxfei" } } },107086 .unused,
105154 .unused,107087 .unused,
105155 .unused,107088 .unused,
105156 .unused,107089 .unused,
105157 .unused,107090 .unused,
105158 },107091 },
105159 .dst_temps = .{ .mem, .unused },107092 .dst_temps = .{ .mem, .unused },
105160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107093 .clobbers = .{ .eflags = true },
105161 .each = .{ .once = &.{107094 .each = .{ .once = &.{
105162 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107095 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105163 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107096 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105164 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },107097 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
105165 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },107098 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
105166 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107099 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105167 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
105168 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105169 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105170 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107100 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105172 } },107101 } },
105173 }, .{107102 }, .{
105174 .required_features = .{ .@"64bit", .sse, null, null },107103 .required_features = .{ .f16c, null, null, null },
105175 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },107104 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
105176 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },107105 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105177 .patterns = &.{107106 .patterns = &.{
105178 .{ .src = .{ .to_mem, .none, .none } },107107 .{ .src = .{ .to_mem, .none, .none } },
105179 },107108 },
105180 .call_frame = .{ .size = 16, .alignment = .@"16" },
105181 .extra_temps = .{107109 .extra_temps = .{
105182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105183 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },107111 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
105184 .{ .type = .usize, .kind = .{ .reg = .rdi } },107112 .unused,
105185 .{ .type = .usize, .kind = .{ .reg = .rsi } },107113 .unused,
105186 .{ .type = .f80, .kind = .{ .reg = .xmm0 } },107114 .unused,
105187 .{ .type = .f80, .kind = .{ .frame = .call_frame } },107115 .unused,
105188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunsxfei" } } },107116 .unused,
105189 .unused,107117 .unused,
105190 .unused,107118 .unused,
105191 .unused,107119 .unused,
105192 .unused,107120 .unused,
105193 },107121 },
105194 .dst_temps = .{ .mem, .unused },107122 .dst_temps = .{ .mem, .unused },
105195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107123 .clobbers = .{ .eflags = true },
105196 .each = .{ .once = &.{107124 .each = .{ .once = &.{
105197 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },107125 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105198 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },107126 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105199 .{ .@"0:", ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },107127 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
105200 .{ ._, ._, .mov, .tmp2p, .tmp1p, ._, ._ },107128 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
105201 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },107129 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105202 .{ ._, ._ps, .mova, .tmp5x, .tmp4x, ._, ._ },
105203 .{ ._, ._, .call, .tmp6d, ._, ._, ._ },
105204 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
105205 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105206 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105207 } },107131 } },
105208 }, .{107132 }, .{
105209 .required_features = .{ .avx, .slow_incdec, null, null },107133 .required_features = .{ .f16c, .avx2, null, null },
105210 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107134 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },
105211 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },107135 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105212 .patterns = &.{107136 .patterns = &.{
105213 .{ .src = .{ .to_mem, .none, .none } },107137 .{ .src = .{ .to_mem, .none, .none } },
105214 },107138 },
105215 .call_frame = .{ .alignment = .@"16" },
105216 .extra_temps = .{107139 .extra_temps = .{
105217 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105218 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107140 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105219 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107141 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
105220 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107142 .unused,
105221 .{ .type = .i32, .kind = .{ .reg = .eax } },107143 .unused,
107144 .unused,
105222 .unused,107145 .unused,
105223 .unused,107146 .unused,
105224 .unused,107147 .unused,
...@@ -105227,31 +107150,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105227,31 +107150,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105227 .unused,107150 .unused,
105228 },107151 },
105229 .dst_temps = .{ .mem, .unused },107152 .dst_temps = .{ .mem, .unused },
105230 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107153 .clobbers = .{ .eflags = true },
105231 .each = .{ .once = &.{107154 .each = .{ .once = &.{
105232 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107155 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105233 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107156 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105234 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },107157 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
105235 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },107158 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
105236 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107159 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105237 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105238 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
105239 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105240 } },107161 } },
105241 }, .{107162 }, .{
105242 .required_features = .{ .avx, null, null, null },107163 .required_features = .{ .f16c, null, null, null },
105243 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107164 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
105244 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },107165 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105245 .patterns = &.{107166 .patterns = &.{
105246 .{ .src = .{ .to_mem, .none, .none } },107167 .{ .src = .{ .to_mem, .none, .none } },
105247 },107168 },
105248 .call_frame = .{ .alignment = .@"16" },
105249 .extra_temps = .{107169 .extra_temps = .{
105250 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105251 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107170 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105252 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107171 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
105253 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107172 .unused,
105254 .{ .type = .i32, .kind = .{ .reg = .eax } },107173 .unused,
107174 .unused,
105255 .unused,107175 .unused,
105256 .unused,107176 .unused,
105257 .unused,107177 .unused,
...@@ -105260,31 +107180,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105260,31 +107180,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105260 .unused,107180 .unused,
105261 },107181 },
105262 .dst_temps = .{ .mem, .unused },107182 .dst_temps = .{ .mem, .unused },
105263 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107183 .clobbers = .{ .eflags = true },
105264 .each = .{ .once = &.{107184 .each = .{ .once = &.{
105265 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107185 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105266 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107186 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
105267 .{ .@"0:", .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },107187 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
105268 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },107188 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
105269 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107189 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
105270 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },107190 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105271 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105272 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105273 } },107191 } },
105274 }, .{107192 }, .{
105275 .required_features = .{ .sse2, .slow_incdec, null, null },107193 .required_features = .{ .avx, .slow_incdec, null, null },
105276 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107194 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105277 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },107195 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105278 .patterns = &.{107196 .patterns = &.{
105279 .{ .src = .{ .to_mem, .none, .none } },107197 .{ .src = .{ .to_mem, .none, .none } },
105280 },107198 },
105281 .call_frame = .{ .alignment = .@"16" },107199 .call_frame = .{ .alignment = .@"16" },
105282 .extra_temps = .{107200 .extra_temps = .{
105283 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105284 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107201 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105285 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107202 .{ .type = .i32, .kind = .{ .reg = .edi } },
105286 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107203 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105287 .{ .type = .i32, .kind = .{ .reg = .eax } },107204 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107205 .unused,
105288 .unused,107206 .unused,
105289 .unused,107207 .unused,
105290 .unused,107208 .unused,
...@@ -105295,29 +107213,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105295,29 +107213,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105295 .dst_temps = .{ .mem, .unused },107213 .dst_temps = .{ .mem, .unused },
105296 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107214 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105297 .each = .{ .once = &.{107215 .each = .{ .once = &.{
105298 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107216 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105299 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107217 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105300 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },107218 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105301 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },107219 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105302 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107220 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105303 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105304 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
105305 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107221 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105306 } },107222 } },
105307 }, .{107223 }, .{
105308 .required_features = .{ .sse2, null, null, null },107224 .required_features = .{ .avx, null, null, null },
105309 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107225 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105310 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },107226 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105311 .patterns = &.{107227 .patterns = &.{
105312 .{ .src = .{ .to_mem, .none, .none } },107228 .{ .src = .{ .to_mem, .none, .none } },
105313 },107229 },
105314 .call_frame = .{ .alignment = .@"16" },107230 .call_frame = .{ .alignment = .@"16" },
105315 .extra_temps = .{107231 .extra_temps = .{
105316 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105318 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107233 .{ .type = .i32, .kind = .{ .reg = .edi } },
105319 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107234 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105320 .{ .type = .i32, .kind = .{ .reg = .eax } },107235 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107236 .unused,
105321 .unused,107237 .unused,
105322 .unused,107238 .unused,
105323 .unused,107239 .unused,
...@@ -105328,29 +107244,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105328,29 +107244,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105328 .dst_temps = .{ .mem, .unused },107244 .dst_temps = .{ .mem, .unused },
105329 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107245 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105330 .each = .{ .once = &.{107246 .each = .{ .once = &.{
105331 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107247 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105332 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107248 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105333 .{ .@"0:", ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },107249 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105334 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },107250 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105335 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107251 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
105336 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105337 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105338 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },107252 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105339 } },107253 } },
105340 }, .{107254 }, .{
105341 .required_features = .{ .sse, .slow_incdec, null, null },107255 .required_features = .{ .sse4_1, .slow_incdec, null, null },
105342 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107256 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105343 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },107257 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105344 .patterns = &.{107258 .patterns = &.{
105345 .{ .src = .{ .to_mem, .none, .none } },107259 .{ .src = .{ .to_mem, .none, .none } },
105346 },107260 },
105347 .call_frame = .{ .alignment = .@"16" },107261 .call_frame = .{ .alignment = .@"16" },
105348 .extra_temps = .{107262 .extra_temps = .{
105349 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107263 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105351 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107264 .{ .type = .i32, .kind = .{ .reg = .edi } },
105352 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107265 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105353 .{ .type = .i32, .kind = .{ .reg = .eax } },107266 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107267 .unused,
105354 .unused,107268 .unused,
105355 .unused,107269 .unused,
105356 .unused,107270 .unused,
...@@ -105361,29 +107275,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105361,29 +107275,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105361 .dst_temps = .{ .mem, .unused },107275 .dst_temps = .{ .mem, .unused },
105362 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107276 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105363 .each = .{ .once = &.{107277 .each = .{ .once = &.{
105364 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107278 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105365 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107279 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105366 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },107280 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105367 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },107281 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105368 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107282 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105369 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105370 .{ ._, ._, .add, .tmp1p, .si(1), ._, ._ },
105371 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107283 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105372 } },107284 } },
105373 }, .{107285 }, .{
105374 .required_features = .{ .sse, null, null, null },107286 .required_features = .{ .sse4_1, null, null, null },
105375 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107287 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105376 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },107288 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105377 .patterns = &.{107289 .patterns = &.{
105378 .{ .src = .{ .to_mem, .none, .none } },107290 .{ .src = .{ .to_mem, .none, .none } },
105379 },107291 },
105380 .call_frame = .{ .alignment = .@"16" },107292 .call_frame = .{ .alignment = .@"16" },
105381 .extra_temps = .{107293 .extra_temps = .{
105382 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
105383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105384 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107295 .{ .type = .i32, .kind = .{ .reg = .edi } },
105385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107296 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105386 .{ .type = .i32, .kind = .{ .reg = .eax } },107297 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107298 .unused,
105387 .unused,107299 .unused,
105388 .unused,107300 .unused,
105389 .unused,107301 .unused,
...@@ -105394,28 +107306,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105394,28 +107306,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105394 .dst_temps = .{ .mem, .unused },107306 .dst_temps = .{ .mem, .unused },
105395 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107307 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105396 .each = .{ .once = &.{107308 .each = .{ .once = &.{
105397 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },107309 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105398 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107310 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105399 .{ .@"0:", ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },107311 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105400 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },107312 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105401 .{ ._, ._, .mov, .memia(.dst0b, .tmp1, .add_unaligned_size), .tmp4b, ._, ._ },107313 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
105402 .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 16), ._, ._ },
105403 .{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
105404 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },107314 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105405 } },107315 } },
105406 }, .{107316 }, .{
105407 .required_features = .{ .avx, null, null, null },107317 .required_features = .{ .sse2, .slow_incdec, null, null },
105408 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107318 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105409 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },107319 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105410 .patterns = &.{107320 .patterns = &.{
105411 .{ .src = .{ .to_mem, .none, .none } },107321 .{ .src = .{ .to_mem, .none, .none } },
105412 },107322 },
105413 .call_frame = .{ .alignment = .@"16" },107323 .call_frame = .{ .alignment = .@"16" },
105414 .extra_temps = .{107324 .extra_temps = .{
105415 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107325 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105416 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107326 .{ .type = .i32, .kind = .{ .reg = .edi } },
105417 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107327 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105418 .{ .type = .i32, .kind = .{ .reg = .eax } },107328 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105419 .unused,107329 .unused,
105420 .unused,107330 .unused,
105421 .unused,107331 .unused,
...@@ -105427,26 +107337,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105427,26 +107337,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105427 .dst_temps = .{ .mem, .unused },107337 .dst_temps = .{ .mem, .unused },
105428 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107338 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105429 .each = .{ .once = &.{107339 .each = .{ .once = &.{
105430 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107340 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105431 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },107341 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105432 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107342 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105433 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },107343 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
105434 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },107344 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107345 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107346 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105436 } },107347 } },
105437 }, .{107348 }, .{
105438 .required_features = .{ .sse2, null, null, null },107349 .required_features = .{ .sse2, null, null, null },
105439 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107350 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105440 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },107351 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105441 .patterns = &.{107352 .patterns = &.{
105442 .{ .src = .{ .to_mem, .none, .none } },107353 .{ .src = .{ .to_mem, .none, .none } },
105443 },107354 },
105444 .call_frame = .{ .alignment = .@"16" },107355 .call_frame = .{ .alignment = .@"16" },
105445 .extra_temps = .{107356 .extra_temps = .{
105446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107357 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105447 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107358 .{ .type = .i32, .kind = .{ .reg = .edi } },
105448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107359 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105449 .{ .type = .i32, .kind = .{ .reg = .eax } },107360 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105450 .unused,107361 .unused,
105451 .unused,107362 .unused,
105452 .unused,107363 .unused,
...@@ -105458,27 +107369,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105458,27 +107369,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105458 .dst_temps = .{ .mem, .unused },107369 .dst_temps = .{ .mem, .unused },
105459 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107370 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105460 .each = .{ .once = &.{107371 .each = .{ .once = &.{
105461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107372 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105462 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },107373 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105463 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107374 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105464 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },107375 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
105465 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },107376 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
105466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107377 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107378 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105467 } },107379 } },
105468 }, .{107380 }, .{
105469 .required_features = .{ .sse, null, null, null },107381 .required_features = .{ .sse, .slow_incdec, null, null },
105470 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107382 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105471 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any },107383 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105472 .patterns = &.{107384 .patterns = &.{
105473 .{ .src = .{ .to_mem, .none, .none } },107385 .{ .src = .{ .to_mem, .none, .none } },
105474 },107386 },
105475 .call_frame = .{ .alignment = .@"16" },107387 .call_frame = .{ .alignment = .@"16" },
105476 .extra_temps = .{107388 .extra_temps = .{
105477 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107389 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105478 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107390 .{ .type = .i32, .kind = .{ .reg = .edi } },
105479 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105480 .{ .type = .i32, .kind = .{ .reg = .eax } },107392 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105481 .unused,107393 .{ .type = .f32, .kind = .mem },
105482 .unused,107394 .unused,
105483 .unused,107395 .unused,
105484 .unused,107396 .unused,
...@@ -105489,27 +107401,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105489,27 +107401,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105489 .dst_temps = .{ .mem, .unused },107401 .dst_temps = .{ .mem, .unused },
105490 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107402 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105491 .each = .{ .once = &.{107403 .each = .{ .once = &.{
105492 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107404 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105493 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"8", .tmp0, .add_unaligned_size), ._, ._ },107405 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105494 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107406 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105495 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3w, ._, ._ },107407 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
105496 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },107408 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107409 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107410 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105497 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107411 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105498 } },107412 } },
105499 }, .{107413 }, .{
105500 .required_features = .{ .sse, null, null, null },107414 .required_features = .{ .sse, null, null, null },
105501 .src_constraints = .{ .{ .float = .xword }, .any, .any },107415 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105502 .dst_constraints = .{ .{ .signed_int = .dword }, .any },107416 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105503 .patterns = &.{107417 .patterns = &.{
105504 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },107418 .{ .src = .{ .to_mem, .none, .none } },
105505 },107419 },
105506 .call_frame = .{ .alignment = .@"16" },107420 .call_frame = .{ .alignment = .@"16" },
105507 .extra_temps = .{107421 .extra_temps = .{
105508 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105509 .unused,107423 .{ .type = .i32, .kind = .{ .reg = .edi } },
105510 .unused,107424 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105511 .unused,107425 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105512 .unused,107426 .{ .type = .f32, .kind = .mem },
105513 .unused,107427 .unused,
105514 .unused,107428 .unused,
105515 .unused,107429 .unused,
...@@ -105517,24 +107431,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105517,24 +107431,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105517 .unused,107431 .unused,
105518 .unused,107432 .unused,
105519 },107433 },
105520 .dst_temps = .{ .{ .reg = .eax }, .unused },107434 .dst_temps = .{ .mem, .unused },
105521 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107435 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105522 .each = .{ .once = &.{107436 .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", ._, ._, ._ },
105524 } },107445 } },
105525 }, .{107446 }, .{
105526 .required_features = .{ .sse, null, null, null },107447 .required_features = .{ .avx, .slow_incdec, null, null },
105527 .src_constraints = .{ .{ .float = .xword }, .any, .any },107448 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105528 .dst_constraints = .{ .{ .unsigned_int = .dword }, .any },107449 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105529 .patterns = &.{107450 .patterns = &.{
105530 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },107451 .{ .src = .{ .to_mem, .none, .none } },
105531 },107452 },
105532 .call_frame = .{ .alignment = .@"16" },107453 .call_frame = .{ .alignment = .@"16" },
105533 .extra_temps = .{107454 .extra_temps = .{
105534 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },107455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105535 .unused,107456 .{ .type = .u32, .kind = .{ .reg = .edi } },
105536 .unused,107457 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105537 .unused,107458 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105538 .unused,107459 .unused,
105539 .unused,107460 .unused,
105540 .unused,107461 .unused,
...@@ -105543,24 +107464,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105543,24 +107464,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105543 .unused,107464 .unused,
105544 .unused,107465 .unused,
105545 },107466 },
105546 .dst_temps = .{ .{ .reg = .eax }, .unused },107467 .dst_temps = .{ .mem, .unused },
105547 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105548 .each = .{ .once = &.{107469 .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", ._, ._, ._ },
105550 } },107476 } },
105551 }, .{107477 }, .{
105552 .required_features = .{ .avx, null, null, null },107478 .required_features = .{ .avx, null, null, null },
105553 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107479 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105554 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },107480 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105555 .patterns = &.{107481 .patterns = &.{
105556 .{ .src = .{ .to_mem, .none, .none } },107482 .{ .src = .{ .to_mem, .none, .none } },
105557 },107483 },
105558 .call_frame = .{ .alignment = .@"16" },107484 .call_frame = .{ .alignment = .@"16" },
105559 .extra_temps = .{107485 .extra_temps = .{
105560 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105561 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107487 .{ .type = .u32, .kind = .{ .reg = .edi } },
105562 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107488 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105563 .{ .type = .i32, .kind = .{ .reg = .eax } },107489 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105564 .unused,107490 .unused,
105565 .unused,107491 .unused,
105566 .unused,107492 .unused,
...@@ -105572,26 +107498,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105572,26 +107498,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105572 .dst_temps = .{ .mem, .unused },107498 .dst_temps = .{ .mem, .unused },
105573 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107499 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105574 .each = .{ .once = &.{107500 .each = .{ .once = &.{
105575 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105576 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },107502 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105577 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107503 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105578 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },107504 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105579 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },107505 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
105580 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107506 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105581 } },107507 } },
105582 }, .{107508 }, .{
105583 .required_features = .{ .avx, null, null, null },107509 .required_features = .{ .sse4_1, .slow_incdec, null, null },
105584 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107510 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105585 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },107511 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105586 .patterns = &.{107512 .patterns = &.{
105587 .{ .src = .{ .to_mem, .none, .none } },107513 .{ .src = .{ .to_mem, .none, .none } },
105588 },107514 },
105589 .call_frame = .{ .alignment = .@"16" },107515 .call_frame = .{ .alignment = .@"16" },
105590 .extra_temps = .{107516 .extra_temps = .{
105591 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107517 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105592 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107518 .{ .type = .u32, .kind = .{ .reg = .edi } },
105593 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },107519 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105594 .{ .type = .u32, .kind = .{ .reg = .eax } },107520 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105595 .unused,107521 .unused,
105596 .unused,107522 .unused,
105597 .unused,107523 .unused,
...@@ -105603,26 +107529,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105603,26 +107529,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105603 .dst_temps = .{ .mem, .unused },107529 .dst_temps = .{ .mem, .unused },
105604 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107530 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105605 .each = .{ .once = &.{107531 .each = .{ .once = &.{
105606 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107532 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105607 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },107533 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105608 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107534 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105609 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },107535 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105610 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },107536 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105611 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107537 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105612 } },107538 } },
105613 }, .{107539 }, .{
105614 .required_features = .{ .sse2, null, null, null },107540 .required_features = .{ .sse4_1, null, null, null },
105615 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107541 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105616 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },107542 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105617 .patterns = &.{107543 .patterns = &.{
105618 .{ .src = .{ .to_mem, .none, .none } },107544 .{ .src = .{ .to_mem, .none, .none } },
105619 },107545 },
105620 .call_frame = .{ .alignment = .@"16" },107546 .call_frame = .{ .alignment = .@"16" },
105621 .extra_temps = .{107547 .extra_temps = .{
105622 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107548 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105623 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107549 .{ .type = .u32, .kind = .{ .reg = .edi } },
105624 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107550 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105625 .{ .type = .i32, .kind = .{ .reg = .eax } },107551 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105626 .unused,107552 .unused,
105627 .unused,107553 .unused,
105628 .unused,107554 .unused,
...@@ -105634,26 +107560,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105634,26 +107560,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105634 .dst_temps = .{ .mem, .unused },107560 .dst_temps = .{ .mem, .unused },
105635 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107561 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105636 .each = .{ .once = &.{107562 .each = .{ .once = &.{
105637 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107563 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105638 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },107564 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105639 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107565 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105640 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },107566 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105641 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },107567 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
105642 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107568 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105643 } },107569 } },
105644 }, .{107570 }, .{
105645 .required_features = .{ .sse2, null, null, null },107571 .required_features = .{ .sse2, .slow_incdec, null, null },
105646 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107572 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105647 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },107573 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105648 .patterns = &.{107574 .patterns = &.{
105649 .{ .src = .{ .to_mem, .none, .none } },107575 .{ .src = .{ .to_mem, .none, .none } },
105650 },107576 },
105651 .call_frame = .{ .alignment = .@"16" },107577 .call_frame = .{ .alignment = .@"16" },
105652 .extra_temps = .{107578 .extra_temps = .{
105653 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107579 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105654 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107580 .{ .type = .u32, .kind = .{ .reg = .edi } },
105655 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },107581 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105656 .{ .type = .u32, .kind = .{ .reg = .eax } },107582 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105657 .unused,107583 .unused,
105658 .unused,107584 .unused,
105659 .unused,107585 .unused,
...@@ -105665,26 +107591,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105665,26 +107591,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105665 .dst_temps = .{ .mem, .unused },107591 .dst_temps = .{ .mem, .unused },
105666 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107592 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105667 .each = .{ .once = &.{107593 .each = .{ .once = &.{
105668 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107594 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105669 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },107595 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105670 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107596 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105671 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },107597 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
105672 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },107598 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107599 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105673 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107600 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105674 } },107601 } },
105675 }, .{107602 }, .{
105676 .required_features = .{ .sse, null, null, null },107603 .required_features = .{ .sse2, null, null, null },
105677 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107604 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105678 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any },107605 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105679 .patterns = &.{107606 .patterns = &.{
105680 .{ .src = .{ .to_mem, .none, .none } },107607 .{ .src = .{ .to_mem, .none, .none } },
105681 },107608 },
105682 .call_frame = .{ .alignment = .@"16" },107609 .call_frame = .{ .alignment = .@"16" },
105683 .extra_temps = .{107610 .extra_temps = .{
105684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107611 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105685 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107612 .{ .type = .u32, .kind = .{ .reg = .edi } },
105686 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfsi" } } },107613 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105687 .{ .type = .i32, .kind = .{ .reg = .eax } },107614 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105688 .unused,107615 .unused,
105689 .unused,107616 .unused,
105690 .unused,107617 .unused,
...@@ -105696,27 +107623,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105696,27 +107623,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105696 .dst_temps = .{ .mem, .unused },107623 .dst_temps = .{ .mem, .unused },
105697 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107624 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105698 .each = .{ .once = &.{107625 .each = .{ .once = &.{
105699 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107626 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105700 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },107627 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105701 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107628 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105702 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },107629 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
105703 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },107630 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
105704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107631 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107632 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
105705 } },107633 } },
105706 }, .{107634 }, .{
105707 .required_features = .{ .sse, null, null, null },107635 .required_features = .{ .sse, .slow_incdec, null, null },
105708 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107636 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105709 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },107637 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105710 .patterns = &.{107638 .patterns = &.{
105711 .{ .src = .{ .to_mem, .none, .none } },107639 .{ .src = .{ .to_mem, .none, .none } },
105712 },107640 },
105713 .call_frame = .{ .alignment = .@"16" },107641 .call_frame = .{ .alignment = .@"16" },
105714 .extra_temps = .{107642 .extra_temps = .{
105715 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107643 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105716 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107644 .{ .type = .u32, .kind = .{ .reg = .edi } },
105717 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfsi" } } },107645 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105718 .{ .type = .u32, .kind = .{ .reg = .eax } },107646 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105719 .unused,107647 .{ .type = .f32, .kind = .mem },
105720 .unused,107648 .unused,
105721 .unused,107649 .unused,
105722 .unused,107650 .unused,
...@@ -105727,27 +107655,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105727,27 +107655,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105727 .dst_temps = .{ .mem, .unused },107655 .dst_temps = .{ .mem, .unused },
105728 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107656 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105729 .each = .{ .once = &.{107657 .each = .{ .once = &.{
105730 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107658 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105731 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"4", .tmp0, .add_unaligned_size), ._, ._ },107659 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
105732 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107660 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105733 .{ ._, ._, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3d, ._, ._ },107661 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
105734 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },107662 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
107663 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
107664 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
105735 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107665 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105736 } },107666 } },
105737 }, .{107667 }, .{
105738 .required_features = .{ .@"64bit", .sse, null, null },107668 .required_features = .{ .sse, null, null, null },
105739 .src_constraints = .{ .{ .float = .xword }, .any, .any },107669 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
105740 .dst_constraints = .{ .{ .signed_int = .qword }, .any },107670 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105741 .patterns = &.{107671 .patterns = &.{
105742 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },107672 .{ .src = .{ .to_mem, .none, .none } },
105743 },107673 },
105744 .call_frame = .{ .alignment = .@"16" },107674 .call_frame = .{ .alignment = .@"16" },
105745 .extra_temps = .{107675 .extra_temps = .{
105746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107676 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105747 .unused,107677 .{ .type = .u32, .kind = .{ .reg = .edi } },
105748 .unused,107678 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
105749 .unused,107679 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105750 .unused,107680 .{ .type = .f32, .kind = .mem },
105751 .unused,107681 .unused,
105752 .unused,107682 .unused,
105753 .unused,107683 .unused,
...@@ -105755,50 +107685,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105755,50 +107685,86 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105755 .unused,107685 .unused,
105756 .unused,107686 .unused,
105757 },107687 },
105758 .dst_temps = .{ .{ .reg = .rax }, .unused },107688 .dst_temps = .{ .mem, .unused },
105759 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107689 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105760 .each = .{ .once = &.{107690 .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", ._, ._, ._ },
105762 } },107699 } },
105763 }, .{107700 }, .{
105764 .required_features = .{ .@"64bit", .sse, null, null },107701 .required_features = .{ .f16c, null, null, null },
105765 .src_constraints = .{ .{ .float = .xword }, .any, .any },107702 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
105766 .dst_constraints = .{ .{ .unsigned_int = .qword }, .any },107703 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },
105767 .patterns = &.{107704 .patterns = &.{
105768 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },107705 .{ .src = .{ .mem, .none, .none } },
107706 .{ .src = .{ .to_sse, .none, .none } },
105769 },107707 },
105770 .call_frame = .{ .alignment = .@"16" },107708 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105771 .extra_temps = .{107709 .each = .{ .once = &.{
105772 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107710 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
105773 .unused,107711 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
105774 .unused,107712 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
105775 .unused,107713 } },
105776 .unused,107714 }, .{
105777 .unused,107715 .required_features = .{ .f16c, .avx2, null, null },
105778 .unused,107716 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
105779 .unused,107717 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },
105780 .unused,107718 .patterns = &.{
105781 .unused,107719 .{ .src = .{ .mem, .none, .none } },
105782 .unused,107720 .{ .src = .{ .to_sse, .none, .none } },
105783 },107721 },
105784 .dst_temps = .{ .{ .reg = .rax }, .unused },107722 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
105785 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105786 .each = .{ .once = &.{107723 .each = .{ .once = &.{
105787 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },107724 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },
107725 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107726 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
105788 } },107727 } },
105789 }, .{107728 }, .{
105790 .required_features = .{ .@"64bit", .avx, null, null },107729 .required_features = .{ .f16c, null, null, null },
105791 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107730 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
105792 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .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 },
105793 .patterns = &.{107760 .patterns = &.{
105794 .{ .src = .{ .to_mem, .none, .none } },107761 .{ .src = .{ .to_mem, .none, .none } },
105795 },107762 },
105796 .call_frame = .{ .alignment = .@"16" },
105797 .extra_temps = .{107763 .extra_temps = .{
105798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105799 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107765 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
105800 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107766 .unused,
105801 .{ .type = .i64, .kind = .{ .reg = .rax } },107767 .unused,
105802 .unused,107768 .unused,
105803 .unused,107769 .unused,
105804 .unused,107770 .unused,
...@@ -105808,28 +107774,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105808,28 +107774,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105808 .unused,107774 .unused,
105809 },107775 },
105810 .dst_temps = .{ .mem, .unused },107776 .dst_temps = .{ .mem, .unused },
105811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107777 .clobbers = .{ .eflags = true },
105812 .each = .{ .once = &.{107778 .each = .{ .once = &.{
105813 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107779 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105814 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },107780 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105815 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107781 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
105816 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107782 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
105817 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107783 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105818 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107784 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105819 } },107785 } },
105820 }, .{107786 }, .{
105821 .required_features = .{ .@"64bit", .avx, null, null },107787 .required_features = .{ .f16c, null, null, null },
105822 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107788 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
105823 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },107789 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105824 .patterns = &.{107790 .patterns = &.{
105825 .{ .src = .{ .to_mem, .none, .none } },107791 .{ .src = .{ .to_mem, .none, .none } },
105826 },107792 },
105827 .call_frame = .{ .alignment = .@"16" },
105828 .extra_temps = .{107793 .extra_temps = .{
105829 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105830 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107795 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
105831 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107796 .unused,
105832 .{ .type = .u64, .kind = .{ .reg = .rax } },107797 .unused,
105833 .unused,107798 .unused,
105834 .unused,107799 .unused,
105835 .unused,107800 .unused,
...@@ -105839,28 +107804,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105839,28 +107804,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105839 .unused,107804 .unused,
105840 },107805 },
105841 .dst_temps = .{ .mem, .unused },107806 .dst_temps = .{ .mem, .unused },
105842 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107807 .clobbers = .{ .eflags = true },
105843 .each = .{ .once = &.{107808 .each = .{ .once = &.{
105844 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107809 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105845 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },107810 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105846 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107811 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
105847 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107812 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
105848 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107813 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105849 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105850 } },107815 } },
105851 }, .{107816 }, .{
105852 .required_features = .{ .@"64bit", .sse2, null, null },107817 .required_features = .{ .f16c, .avx2, null, null },
105853 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107818 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
105854 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },107819 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },
105855 .patterns = &.{107820 .patterns = &.{
105856 .{ .src = .{ .to_mem, .none, .none } },107821 .{ .src = .{ .to_mem, .none, .none } },
105857 },107822 },
105858 .call_frame = .{ .alignment = .@"16" },
105859 .extra_temps = .{107823 .extra_temps = .{
105860 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107824 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105861 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107825 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
105862 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107826 .unused,
105863 .{ .type = .i64, .kind = .{ .reg = .rax } },107827 .unused,
105864 .unused,107828 .unused,
105865 .unused,107829 .unused,
105866 .unused,107830 .unused,
...@@ -105870,28 +107834,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105870,28 +107834,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105870 .unused,107834 .unused,
105871 },107835 },
105872 .dst_temps = .{ .mem, .unused },107836 .dst_temps = .{ .mem, .unused },
105873 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107837 .clobbers = .{ .eflags = true },
105874 .each = .{ .once = &.{107838 .each = .{ .once = &.{
105875 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107839 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105876 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },107840 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
105877 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107841 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
105878 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107842 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
105879 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107843 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
105880 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107844 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105881 } },107845 } },
105882 }, .{107846 }, .{
105883 .required_features = .{ .@"64bit", .sse2, null, null },107847 .required_features = .{ .f16c, null, null, null },
105884 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107848 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
105885 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },107849 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
105886 .patterns = &.{107850 .patterns = &.{
105887 .{ .src = .{ .to_mem, .none, .none } },107851 .{ .src = .{ .to_mem, .none, .none } },
105888 },107852 },
105889 .call_frame = .{ .alignment = .@"16" },
105890 .extra_temps = .{107853 .extra_temps = .{
105891 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105892 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107855 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
105893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107856 .unused,
105894 .{ .type = .u64, .kind = .{ .reg = .rax } },107857 .unused,
105895 .unused,107858 .unused,
105896 .unused,107859 .unused,
105897 .unused,107860 .unused,
...@@ -105901,28 +107864,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105901,28 +107864,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105901 .unused,107864 .unused,
105902 },107865 },
105903 .dst_temps = .{ .mem, .unused },107866 .dst_temps = .{ .mem, .unused },
105904 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107867 .clobbers = .{ .eflags = true },
105905 .each = .{ .once = &.{107868 .each = .{ .once = &.{
105906 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105907 .{ .@"0:", ._dqa, .mov, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },107870 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
105908 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107871 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
105909 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107872 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
105910 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107873 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
105911 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107874 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105912 } },107875 } },
105913 }, .{107876 }, .{
105914 .required_features = .{ .@"64bit", .sse, null, null },107877 .required_features = .{ .avx, null, null, null },
105915 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107878 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
105916 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any },107879 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105917 .patterns = &.{107880 .patterns = &.{
105918 .{ .src = .{ .to_mem, .none, .none } },107881 .{ .src = .{ .to_mem, .none, .none } },
105919 },107882 },
105920 .call_frame = .{ .alignment = .@"16" },107883 .call_frame = .{ .alignment = .@"16" },
105921 .extra_temps = .{107884 .extra_temps = .{
105922 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107885 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105923 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107886 .{ .type = .i32, .kind = .{ .reg = .edi } },
105924 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfdi" } } },107887 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105925 .{ .type = .i64, .kind = .{ .reg = .rax } },107888 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105926 .unused,107889 .unused,
105927 .unused,107890 .unused,
105928 .unused,107891 .unused,
...@@ -105934,26 +107897,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105934,26 +107897,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105934 .dst_temps = .{ .mem, .unused },107897 .dst_temps = .{ .mem, .unused },
105935 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107898 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105936 .each = .{ .once = &.{107899 .each = .{ .once = &.{
105937 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107900 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105938 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },107901 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
105939 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107902 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105940 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107903 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105941 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107904 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105942 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105943 } },107906 } },
105944 }, .{107907 }, .{
105945 .required_features = .{ .@"64bit", .sse, null, null },107908 .required_features = .{ .sse4_1, null, null, null },
105946 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },107909 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
105947 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any },107910 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105948 .patterns = &.{107911 .patterns = &.{
105949 .{ .src = .{ .to_mem, .none, .none } },107912 .{ .src = .{ .to_mem, .none, .none } },
105950 },107913 },
105951 .call_frame = .{ .alignment = .@"16" },107914 .call_frame = .{ .alignment = .@"16" },
105952 .extra_temps = .{107915 .extra_temps = .{
105953 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },107916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105954 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },107917 .{ .type = .i32, .kind = .{ .reg = .edi } },
105955 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfdi" } } },107918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105956 .{ .type = .u64, .kind = .{ .reg = .rax } },107919 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105957 .unused,107920 .unused,
105958 .unused,107921 .unused,
105959 .unused,107922 .unused,
...@@ -105965,26 +107928,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105965,26 +107928,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105965 .dst_temps = .{ .mem, .unused },107928 .dst_temps = .{ .mem, .unused },
105966 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105967 .each = .{ .once = &.{107930 .each = .{ .once = &.{
105968 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },107931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
105969 .{ .@"0:", ._ps, .mova, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },107932 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
105970 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },107933 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
105971 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },107934 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
105972 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },107935 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
105973 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },107936 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
105974 } },107937 } },
105975 }, .{107938 }, .{
105976 .required_features = .{ .@"64bit", .sse, null, null },107939 .required_features = .{ .sse2, null, null, null },
105977 .src_constraints = .{ .{ .float = .xword }, .any, .any },107940 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
105978 .dst_constraints = .{ .{ .signed_int = .xword }, .any },107941 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
105979 .patterns = &.{107942 .patterns = &.{
105980 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },107943 .{ .src = .{ .to_mem, .none, .none } },
105981 },107944 },
105982 .call_frame = .{ .alignment = .@"16" },107945 .call_frame = .{ .alignment = .@"16" },
105983 .extra_temps = .{107946 .extra_temps = .{
105984 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },107947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
105985 .unused,107948 .{ .type = .i32, .kind = .{ .reg = .edi } },
105986 .unused,107949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
105987 .unused,107950 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
105988 .unused,107951 .unused,
105989 .unused,107952 .unused,
105990 .unused,107953 .unused,
...@@ -105993,25 +107956,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -105993,25 +107956,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
105993 .unused,107956 .unused,
105994 .unused,107957 .unused,
105995 },107958 },
105996 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },107959 .dst_temps = .{ .mem, .unused },
105997 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107960 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
105998 .each = .{ .once = &.{107961 .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", ._, ._, ._ },
106000 } },107969 } },
106001 }, .{107970 }, .{
106002 .required_features = .{ .@"64bit", .sse, null, null },107971 .required_features = .{ .sse, null, null, null },
106003 .src_constraints = .{ .{ .float = .xword }, .any, .any },107972 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
106004 .dst_constraints = .{ .{ .unsigned_int = .xword }, .any },107973 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106005 .patterns = &.{107974 .patterns = &.{
106006 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },107975 .{ .src = .{ .to_mem, .none, .none } },
106007 },107976 },
106008 .call_frame = .{ .alignment = .@"16" },107977 .call_frame = .{ .alignment = .@"16" },
106009 .extra_temps = .{107978 .extra_temps = .{
106010 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },107979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106011 .unused,107980 .{ .type = .i32, .kind = .{ .reg = .edi } },
106012 .unused,107981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106013 .unused,107982 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106014 .unused,107983 .{ .type = .f32, .kind = .mem },
106015 .unused,107984 .unused,
106016 .unused,107985 .unused,
106017 .unused,107986 .unused,
...@@ -106019,25 +107988,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106019,25 +107988,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106019 .unused,107988 .unused,
106020 .unused,107989 .unused,
106021 },107990 },
106022 .dst_temps = .{ .{ .reg_pair = .{ .rax, .rdx } }, .unused },107991 .dst_temps = .{ .mem, .unused },
106023 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },107992 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106024 .each = .{ .once = &.{107993 .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", ._, ._, ._ },
106026 } },108002 } },
106027 }, .{108003 }, .{
106028 .required_features = .{ .@"64bit", .avx, null, null },108004 .required_features = .{ .avx, null, null, null },
106029 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108005 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
106030 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },108006 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106031 .patterns = &.{108007 .patterns = &.{
106032 .{ .src = .{ .to_mem, .none, .none } },108008 .{ .src = .{ .to_mem, .none, .none } },
106033 },108009 },
106034 .call_frame = .{ .alignment = .@"16" },108010 .call_frame = .{ .alignment = .@"16" },
106035 .extra_temps = .{108011 .extra_temps = .{
106036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108012 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106037 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108013 .{ .type = .u32, .kind = .{ .reg = .edi } },
106038 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },108014 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106039 .{ .type = .u64, .kind = .{ .reg = .rax } },108015 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106040 .{ .type = .i64, .kind = .{ .reg = .rdx } },108016 .unused,
106041 .unused,108017 .unused,
106042 .unused,108018 .unused,
106043 .unused,108019 .unused,
...@@ -106049,27 +108025,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106049,27 +108025,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106049 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108025 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106050 .each = .{ .once = &.{108026 .each = .{ .once = &.{
106051 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108027 .{ ._, ._, .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), ._, ._ },
106053 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108029 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106054 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },108030 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
106055 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },108031 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106056 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106057 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108032 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106058 } },108033 } },
106059 }, .{108034 }, .{
106060 .required_features = .{ .@"64bit", .avx, null, null },108035 .required_features = .{ .sse4_1, null, null, null },
106061 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108036 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
106062 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },108037 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106063 .patterns = &.{108038 .patterns = &.{
106064 .{ .src = .{ .to_mem, .none, .none } },108039 .{ .src = .{ .to_mem, .none, .none } },
106065 },108040 },
106066 .call_frame = .{ .alignment = .@"16" },108041 .call_frame = .{ .alignment = .@"16" },
106067 .extra_temps = .{108042 .extra_temps = .{
106068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106069 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108044 .{ .type = .u32, .kind = .{ .reg = .edi } },
106070 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },108045 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106071 .{ .type = .u64, .kind = .{ .reg = .rax } },108046 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106072 .{ .type = .u64, .kind = .{ .reg = .rdx } },108047 .unused,
106073 .unused,108048 .unused,
106074 .unused,108049 .unused,
106075 .unused,108050 .unused,
...@@ -106081,27 +108056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106081,27 +108056,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106081 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108056 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106082 .each = .{ .once = &.{108057 .each = .{ .once = &.{
106083 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108058 .{ ._, ._, .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), ._, ._ },
106085 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108060 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106086 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },108061 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
106087 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },108062 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106088 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106089 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106090 } },108064 } },
106091 }, .{108065 }, .{
106092 .required_features = .{ .@"64bit", .sse2, null, null },108066 .required_features = .{ .sse2, null, null, null },
106093 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108067 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
106094 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any },108068 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106095 .patterns = &.{108069 .patterns = &.{
106096 .{ .src = .{ .to_mem, .none, .none } },108070 .{ .src = .{ .to_mem, .none, .none } },
106097 },108071 },
106098 .call_frame = .{ .alignment = .@"16" },108072 .call_frame = .{ .alignment = .@"16" },
106099 .extra_temps = .{108073 .extra_temps = .{
106100 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106101 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108075 .{ .type = .u32, .kind = .{ .reg = .edi } },
106102 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },108076 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106103 .{ .type = .u64, .kind = .{ .reg = .rax } },108077 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106104 .{ .type = .i64, .kind = .{ .reg = .rdx } },108078 .unused,
106105 .unused,108079 .unused,
106106 .unused,108080 .unused,
106107 .unused,108081 .unused,
...@@ -106113,27 +108087,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106113,27 +108087,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106113 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106114 .each = .{ .once = &.{108088 .each = .{ .once = &.{
106115 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108089 .{ ._, ._, .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), ._, ._ },
106117 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108091 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106118 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },108092 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
106119 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },108093 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
106120 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },108094 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106121 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108095 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106122 } },108096 } },
106123 }, .{108097 }, .{
106124 .required_features = .{ .@"64bit", .sse2, null, null },108098 .required_features = .{ .sse, null, null, null },
106125 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108099 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
106126 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },108100 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106127 .patterns = &.{108101 .patterns = &.{
106128 .{ .src = .{ .to_mem, .none, .none } },108102 .{ .src = .{ .to_mem, .none, .none } },
106129 },108103 },
106130 .call_frame = .{ .alignment = .@"16" },108104 .call_frame = .{ .alignment = .@"16" },
106131 .extra_temps = .{108105 .extra_temps = .{
106132 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108106 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106133 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108107 .{ .type = .u32, .kind = .{ .reg = .edi } },
106134 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },108108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106135 .{ .type = .u64, .kind = .{ .reg = .rax } },108109 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106136 .{ .type = .u64, .kind = .{ .reg = .rdx } },108110 .{ .type = .f32, .kind = .mem },
106137 .unused,108111 .unused,
106138 .unused,108112 .unused,
106139 .unused,108113 .unused,
...@@ -106145,27 +108119,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106145,27 +108119,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106145 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106146 .each = .{ .once = &.{108120 .each = .{ .once = &.{
106147 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108121 .{ ._, ._, .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), ._, ._ },
106149 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108123 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106150 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },108124 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
106151 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },108125 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
106152 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },108126 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108127 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106153 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108128 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106154 } },108129 } },
106155 }, .{108130 }, .{
106156 .required_features = .{ .@"64bit", .sse, null, null },108131 .required_features = .{ .f16c, null, null, null },
106157 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108132 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
106158 .dst_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .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 },
106159 .patterns = &.{108160 .patterns = &.{
106160 .{ .src = .{ .to_mem, .none, .none } },108161 .{ .src = .{ .to_mem, .none, .none } },
106161 },108162 },
106162 .call_frame = .{ .alignment = .@"16" },
106163 .extra_temps = .{108163 .extra_temps = .{
106164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106165 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108165 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
106166 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfti" } } },108166 .unused,
106167 .{ .type = .u64, .kind = .{ .reg = .rax } },108167 .unused,
106168 .{ .type = .i64, .kind = .{ .reg = .rdx } },108168 .unused,
106169 .unused,108169 .unused,
106170 .unused,108170 .unused,
106171 .unused,108171 .unused,
...@@ -106174,30 +108174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106174,30 +108174,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106174 .unused,108174 .unused,
106175 },108175 },
106176 .dst_temps = .{ .mem, .unused },108176 .dst_temps = .{ .mem, .unused },
106177 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108177 .clobbers = .{ .eflags = true },
106178 .each = .{ .once = &.{108178 .each = .{ .once = &.{
106179 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108179 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106180 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108180 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106181 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108181 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
106182 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },
106183 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106184 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },108182 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108183 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106186 } },108184 } },
106187 }, .{108185 }, .{
106188 .required_features = .{ .@"64bit", .sse, null, null },108186 .required_features = .{ .f16c, null, null, null },
106189 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108187 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
106190 .dst_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any },108188 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },
106191 .patterns = &.{108189 .patterns = &.{
106192 .{ .src = .{ .to_mem, .none, .none } },108190 .{ .src = .{ .to_mem, .none, .none } },
106193 },108191 },
106194 .call_frame = .{ .alignment = .@"16" },
106195 .extra_temps = .{108192 .extra_temps = .{
106196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108193 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106197 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108194 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
106198 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfti" } } },108195 .unused,
106199 .{ .type = .u64, .kind = .{ .reg = .rax } },108196 .unused,
106200 .{ .type = .u64, .kind = .{ .reg = .rdx } },108197 .unused,
106201 .unused,108198 .unused,
106202 .unused,108199 .unused,
106203 .unused,108200 .unused,
...@@ -106206,29 +108203,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106206,29 +108203,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106206 .unused,108203 .unused,
106207 },108204 },
106208 .dst_temps = .{ .mem, .unused },108205 .dst_temps = .{ .mem, .unused },
106209 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108206 .clobbers = .{ .eflags = true },
106210 .each = .{ .once = &.{108207 .each = .{ .once = &.{
106211 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108208 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106212 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108209 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106213 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108210 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },
106214 .{ ._, ._, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3q, ._, ._ },108211 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
106215 .{ ._, ._, .mov, .memiad(.dst0q, .tmp0, .add_unaligned_size, 8), .tmp4q, ._, ._ },
106216 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106217 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108212 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106218 } },108213 } },
106219 }, .{108214 }, .{
106220 .required_features = .{ .@"64bit", .sse, null, null },108215 .required_features = .{ .avx, null, null, null },
106221 .src_constraints = .{ .{ .float = .xword }, .any, .any },108216 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106222 .dst_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },108217 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106223 .patterns = &.{108218 .patterns = &.{
106224 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },108219 .{ .src = .{ .to_mem, .none, .none } },
106225 },108220 },
106226 .call_frame = .{ .alignment = .@"16" },108221 .call_frame = .{ .alignment = .@"16" },
106227 .extra_temps = .{108222 .extra_temps = .{
106228 .{ .type = .usize, .kind = .{ .reg = .rdi } },108223 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106229 .{ .type = .usize, .kind = .{ .reg = .rsi } },108224 .{ .type = .i32, .kind = .{ .reg = .edi } },
106230 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },108225 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106231 .unused,108226 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106232 .unused,108227 .unused,
106233 .unused,108228 .unused,
106234 .unused,108229 .unused,
...@@ -106240,23 +108235,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106240,23 +108235,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106240 .dst_temps = .{ .mem, .unused },108235 .dst_temps = .{ .mem, .unused },
106241 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108236 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106242 .each = .{ .once = &.{108237 .each = .{ .once = &.{
106243 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },108238 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106244 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },108239 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106245 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108240 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108241 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108242 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108243 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106246 } },108244 } },
106247 }, .{108245 }, .{
106248 .required_features = .{ .@"64bit", .sse, null, null },108246 .required_features = .{ .sse4_1, null, null, null },
106249 .src_constraints = .{ .{ .float = .xword }, .any, .any },108247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106250 .dst_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },108248 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106251 .patterns = &.{108249 .patterns = &.{
106252 .{ .src = .{ .{ .to_reg = .xmm0 }, .none, .none } },108250 .{ .src = .{ .to_mem, .none, .none } },
106253 },108251 },
106254 .call_frame = .{ .alignment = .@"16" },108252 .call_frame = .{ .alignment = .@"16" },
106255 .extra_temps = .{108253 .extra_temps = .{
106256 .{ .type = .usize, .kind = .{ .reg = .rdi } },108254 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106257 .{ .type = .usize, .kind = .{ .reg = .rsi } },108255 .{ .type = .i32, .kind = .{ .reg = .edi } },
106258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },108256 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106259 .unused,108257 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106260 .unused,108258 .unused,
106261 .unused,108259 .unused,
106262 .unused,108260 .unused,
...@@ -106268,25 +108266,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106268,25 +108266,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106268 .dst_temps = .{ .mem, .unused },108266 .dst_temps = .{ .mem, .unused },
106269 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108267 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106270 .each = .{ .once = &.{108268 .each = .{ .once = &.{
106271 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },108269 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106272 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_bit_size), ._, ._ },108270 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106273 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },108271 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108272 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108273 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106274 } },108275 } },
106275 }, .{108276 }, .{
106276 .required_features = .{ .@"64bit", .avx, null, null },108277 .required_features = .{ .sse2, null, null, null },
106277 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108278 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106278 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },108279 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106279 .patterns = &.{108280 .patterns = &.{
106280 .{ .src = .{ .to_mem, .none, .none } },108281 .{ .src = .{ .to_mem, .none, .none } },
106281 },108282 },
106282 .call_frame = .{ .alignment = .@"16" },108283 .call_frame = .{ .alignment = .@"16" },
106283 .extra_temps = .{108284 .extra_temps = .{
106284 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108285 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106285 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108286 .{ .type = .i32, .kind = .{ .reg = .edi } },
106286 .{ .type = .usize, .kind = .{ .reg = .rdi } },108287 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106287 .{ .type = .usize, .kind = .{ .reg = .rsi } },108288 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106288 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108289 .unused,
106289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },108290 .unused,
106290 .unused,108291 .unused,
106291 .unused,108292 .unused,
106292 .unused,108293 .unused,
...@@ -106296,31 +108297,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106296,31 +108297,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106296 .dst_temps = .{ .mem, .unused },108297 .dst_temps = .{ .mem, .unused },
106297 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108298 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106298 .each = .{ .once = &.{108299 .each = .{ .once = &.{
106299 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108300 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106300 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },108301 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106301 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },108302 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106302 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },108303 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
106303 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108304 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
106304 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },108305 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106305 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106306 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106307 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108306 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106308 } },108307 } },
106309 }, .{108308 }, .{
106310 .required_features = .{ .@"64bit", .avx, null, null },108309 .required_features = .{ .sse, null, null, null },
106311 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108310 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106312 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },108311 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106313 .patterns = &.{108312 .patterns = &.{
106314 .{ .src = .{ .to_mem, .none, .none } },108313 .{ .src = .{ .to_mem, .none, .none } },
106315 },108314 },
106316 .call_frame = .{ .alignment = .@"16" },108315 .call_frame = .{ .alignment = .@"16" },
106317 .extra_temps = .{108316 .extra_temps = .{
106318 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108317 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106319 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108318 .{ .type = .i32, .kind = .{ .reg = .edi } },
106320 .{ .type = .usize, .kind = .{ .reg = .rdi } },108319 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },
106321 .{ .type = .usize, .kind = .{ .reg = .rsi } },108320 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106322 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108321 .{ .type = .f32, .kind = .mem },
106323 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },108322 .unused,
106324 .unused,108323 .unused,
106325 .unused,108324 .unused,
106326 .unused,108325 .unused,
...@@ -106330,31 +108329,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106330,31 +108329,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106330 .dst_temps = .{ .mem, .unused },108329 .dst_temps = .{ .mem, .unused },
106331 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106332 .each = .{ .once = &.{108331 .each = .{ .once = &.{
106333 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108332 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106334 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },108333 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106335 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },108334 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106336 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },108335 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
106337 .{ ._, .v_dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108336 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
106338 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },108337 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
106339 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },108338 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106340 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106341 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108339 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106342 } },108340 } },
106343 }, .{108341 }, .{
106344 .required_features = .{ .@"64bit", .sse2, null, null },108342 .required_features = .{ .avx, null, null, null },
106345 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108343 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106346 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },108344 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106347 .patterns = &.{108345 .patterns = &.{
106348 .{ .src = .{ .to_mem, .none, .none } },108346 .{ .src = .{ .to_mem, .none, .none } },
106349 },108347 },
106350 .call_frame = .{ .alignment = .@"16" },108348 .call_frame = .{ .alignment = .@"16" },
106351 .extra_temps = .{108349 .extra_temps = .{
106352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108350 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106353 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108351 .{ .type = .u32, .kind = .{ .reg = .edi } },
106354 .{ .type = .usize, .kind = .{ .reg = .rdi } },108352 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106355 .{ .type = .usize, .kind = .{ .reg = .rsi } },108353 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106356 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108354 .unused,
106357 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },108355 .unused,
106358 .unused,108356 .unused,
106359 .unused,108357 .unused,
106360 .unused,108358 .unused,
...@@ -106364,31 +108362,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106364,31 +108362,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106364 .dst_temps = .{ .mem, .unused },108362 .dst_temps = .{ .mem, .unused },
106365 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108363 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106366 .each = .{ .once = &.{108364 .each = .{ .once = &.{
106367 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108365 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106368 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },108366 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106369 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },108367 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106370 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },108368 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
106371 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108369 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106372 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106373 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106374 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106375 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108370 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106376 } },108371 } },
106377 }, .{108372 }, .{
106378 .required_features = .{ .@"64bit", .sse2, null, null },108373 .required_features = .{ .sse4_1, null, null, null },
106379 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108374 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106380 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },108375 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106381 .patterns = &.{108376 .patterns = &.{
106382 .{ .src = .{ .to_mem, .none, .none } },108377 .{ .src = .{ .to_mem, .none, .none } },
106383 },108378 },
106384 .call_frame = .{ .alignment = .@"16" },108379 .call_frame = .{ .alignment = .@"16" },
106385 .extra_temps = .{108380 .extra_temps = .{
106386 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106387 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108382 .{ .type = .u32, .kind = .{ .reg = .edi } },
106388 .{ .type = .usize, .kind = .{ .reg = .rdi } },108383 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106389 .{ .type = .usize, .kind = .{ .reg = .rsi } },108384 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106390 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108385 .unused,
106391 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },108386 .unused,
106392 .unused,108387 .unused,
106393 .unused,108388 .unused,
106394 .unused,108389 .unused,
...@@ -106398,31 +108393,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106398,31 +108393,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106398 .dst_temps = .{ .mem, .unused },108393 .dst_temps = .{ .mem, .unused },
106399 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108394 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106400 .each = .{ .once = &.{108395 .each = .{ .once = &.{
106401 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108396 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106402 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },108397 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106403 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },108398 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106404 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },108399 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
106405 .{ ._, ._dqa, .mov, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108400 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106406 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
106407 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106408 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106409 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108401 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106410 } },108402 } },
106411 }, .{108403 }, .{
106412 .required_features = .{ .@"64bit", .sse, null, null },108404 .required_features = .{ .sse2, null, null, null },
106413 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108405 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106414 .dst_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any },108406 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106415 .patterns = &.{108407 .patterns = &.{
106416 .{ .src = .{ .to_mem, .none, .none } },108408 .{ .src = .{ .to_mem, .none, .none } },
106417 },108409 },
106418 .call_frame = .{ .alignment = .@"16" },108410 .call_frame = .{ .alignment = .@"16" },
106419 .extra_temps = .{108411 .extra_temps = .{
106420 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108412 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106421 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108413 .{ .type = .u32, .kind = .{ .reg = .edi } },
106422 .{ .type = .usize, .kind = .{ .reg = .rdi } },108414 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106423 .{ .type = .usize, .kind = .{ .reg = .rsi } },108415 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106424 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108416 .unused,
106425 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixtfei" } } },108417 .unused,
106426 .unused,108418 .unused,
106427 .unused,108419 .unused,
106428 .unused,108420 .unused,
...@@ -106432,31 +108424,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106432,31 +108424,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106432 .dst_temps = .{ .mem, .unused },108424 .dst_temps = .{ .mem, .unused },
106433 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106434 .each = .{ .once = &.{108426 .each = .{ .once = &.{
106435 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108427 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106436 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },108428 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106437 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },108429 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106438 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },108430 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },
106439 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108431 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
106440 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },108432 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106441 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },
106442 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106443 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108433 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106444 } },108434 } },
106445 }, .{108435 }, .{
106446 .required_features = .{ .@"64bit", .sse, null, null },108436 .required_features = .{ .sse, null, null, null },
106447 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },108437 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106448 .dst_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any },108438 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106449 .patterns = &.{108439 .patterns = &.{
106450 .{ .src = .{ .to_mem, .none, .none } },108440 .{ .src = .{ .to_mem, .none, .none } },
106451 },108441 },
106452 .call_frame = .{ .alignment = .@"16" },108442 .call_frame = .{ .alignment = .@"16" },
106453 .extra_temps = .{108443 .extra_temps = .{
106454 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },108444 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106455 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },108445 .{ .type = .u32, .kind = .{ .reg = .edi } },
106456 .{ .type = .usize, .kind = .{ .reg = .rdi } },108446 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },
106457 .{ .type = .usize, .kind = .{ .reg = .rsi } },108447 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106458 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },108448 .{ .type = .f32, .kind = .mem },
106459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fixunstfei" } } },108449 .unused,
106460 .unused,108450 .unused,
106461 .unused,108451 .unused,
106462 .unused,108452 .unused,
...@@ -106466,42 +108456,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106466,42 +108456,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106466 .dst_temps = .{ .mem, .unused },108456 .dst_temps = .{ .mem, .unused },
106467 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108457 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106468 .each = .{ .once = &.{108458 .each = .{ .once = &.{
106469 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },108459 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106470 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },108460 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
106471 .{ .@"0:", ._, .mov, .tmp2p, .tmp1p, ._, ._ },108461 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106472 .{ ._, ._, .mov, .tmp3d, .sa(.dst0, .add_bit_size), ._, ._ },108462 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },
106473 .{ ._, ._ps, .mova, .tmp4x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },108463 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
106474 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },108464 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
106475 .{ ._, ._, .lea, .tmp1p, .leaa(.tmp1, .add_dst0_elem_size), ._, ._ },108465 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106476 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
106477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },108466 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106478 } },108467 } },
106479 } }) catch |err| switch (err) {108468 }, .{
106480 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{108469 .required_features = .{ .@"64bit", .f16c, null, null },
106481 @tagName(air_tag),108470 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106482 ty_op.ty.toType().fmt(pt),108471 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
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 },
106498 .patterns = &.{108472 .patterns = &.{
106499 .{ .src = .{ .mem, .none, .none } },108473 .{ .src = .{ .to_mem, .none, .none } },
106500 .{ .src = .{ .to_gpr, .none, .none } },
106501 },108474 },
106502 .extra_temps = .{108475 .extra_temps = .{
106503 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },108476 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106504 .unused,108477 .{ .type = .vector_2_i64, .kind = .{ .rc = .sse } },
106505 .unused,108478 .unused,
106506 .unused,108479 .unused,
106507 .unused,108480 .unused,
...@@ -106512,26 +108485,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106512,26 +108485,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106512 .unused,108485 .unused,
106513 .unused,108486 .unused,
106514 },108487 },
106515 .dst_temps = .{ .{ .rc = .sse }, .unused },108488 .dst_temps = .{ .mem, .unused },
108489 .clobbers = .{ .eflags = true },
106516 .each = .{ .once = &.{108490 .each = .{ .once = &.{
106517 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },108491 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106518 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },108492 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
106519 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },108493 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._ },
106520 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },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", ._, ._, ._ },
106521 } },108498 } },
106522 }, .{108499 }, .{
106523 .required_features = .{ .f16c, null, null, null },108500 .required_features = .{ .@"64bit", .avx, null, null },
106524 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },108501 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106525 .dst_constraints = .{ .{ .float = .word }, .any },108502 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106526 .patterns = &.{108503 .patterns = &.{
106527 .{ .src = .{ .mem, .none, .none } },108504 .{ .src = .{ .to_mem, .none, .none } },
106528 .{ .src = .{ .to_gpr, .none, .none } },
106529 },108505 },
108506 .call_frame = .{ .alignment = .@"16" },
106530 .extra_temps = .{108507 .extra_temps = .{
106531 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },108508 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106532 .unused,108509 .{ .type = .i64, .kind = .{ .reg = .rdi } },
106533 .unused,108510 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
106534 .unused,108511 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106535 .unused,108512 .unused,
106536 .unused,108513 .unused,
106537 .unused,108514 .unused,
...@@ -106540,26 +108517,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106540,26 +108517,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106540 .unused,108517 .unused,
106541 .unused,108518 .unused,
106542 },108519 },
106543 .dst_temps = .{ .{ .rc = .sse }, .unused },108520 .dst_temps = .{ .mem, .unused },
108521 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106544 .each = .{ .once = &.{108522 .each = .{ .once = &.{
106545 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },108523 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106546 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },108524 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106547 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },108525 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106548 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },108526 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108527 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108528 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106549 } },108529 } },
106550 }, .{108530 }, .{
106551 .required_features = .{ .f16c, null, null, null },108531 .required_features = .{ .@"64bit", .sse4_1, null, null },
106552 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },108532 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106553 .dst_constraints = .{ .{ .float = .word }, .any },108533 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106554 .patterns = &.{108534 .patterns = &.{
106555 .{ .src = .{ .mem, .none, .none } },108535 .{ .src = .{ .to_mem, .none, .none } },
106556 .{ .src = .{ .to_gpr, .none, .none } },
106557 },108536 },
108537 .call_frame = .{ .alignment = .@"16" },
106558 .extra_temps = .{108538 .extra_temps = .{
106559 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },108539 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106560 .unused,108540 .{ .type = .i64, .kind = .{ .reg = .rdi } },
106561 .unused,108541 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
106562 .unused,108542 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106563 .unused,108543 .unused,
106564 .unused,108544 .unused,
106565 .unused,108545 .unused,
...@@ -106568,26 +108548,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106568,26 +108548,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106568 .unused,108548 .unused,
106569 .unused,108549 .unused,
106570 },108550 },
106571 .dst_temps = .{ .{ .rc = .sse }, .unused },108551 .dst_temps = .{ .mem, .unused },
108552 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106572 .each = .{ .once = &.{108553 .each = .{ .once = &.{
106573 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },108554 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106574 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },108555 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106575 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },108556 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106576 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },108557 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
108558 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108559 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
106577 } },108560 } },
106578 }, .{108561 }, .{
106579 .required_features = .{ .f16c, null, null, null },108562 .required_features = .{ .@"64bit", .sse2, null, null },
106580 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },108563 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106581 .dst_constraints = .{ .{ .float = .word }, .any },108564 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106582 .patterns = &.{108565 .patterns = &.{
106583 .{ .src = .{ .mem, .none, .none } },108566 .{ .src = .{ .to_mem, .none, .none } },
106584 .{ .src = .{ .to_gpr, .none, .none } },
106585 },108567 },
108568 .call_frame = .{ .alignment = .@"16" },
106586 .extra_temps = .{108569 .extra_temps = .{
106587 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },108570 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106588 .unused,108571 .{ .type = .i64, .kind = .{ .reg = .rdi } },
106589 .unused,108572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
106590 .unused,108573 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106591 .unused,108574 .unused,
106592 .unused,108575 .unused,
106593 .unused,108576 .unused,
...@@ -106596,41 +108579,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106596,41 +108579,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106596 .unused,108579 .unused,
106597 .unused,108580 .unused,
106598 },108581 },
106599 .dst_temps = .{ .{ .rc = .sse }, .unused },108582 .dst_temps = .{ .mem, .unused },
106600 .each = .{ .once = &.{108583 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
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 },
106615 .each = .{ .once = &.{108584 .each = .{ .once = &.{
106616 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },108585 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106617 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },108586 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106618 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },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", ._, ._, ._ },
106619 } },108592 } },
106620 }, .{108593 }, .{
106621 .required_features = .{ .@"64bit", .f16c, null, null },108594 .required_features = .{ .@"64bit", .sse, null, null },
106622 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },108595 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106623 .dst_constraints = .{ .{ .float = .word }, .any },108596 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106624 .patterns = &.{108597 .patterns = &.{
106625 .{ .src = .{ .mem, .none, .none } },108598 .{ .src = .{ .to_mem, .none, .none } },
106626 .{ .src = .{ .to_gpr, .none, .none } },
106627 },108599 },
108600 .call_frame = .{ .alignment = .@"16" },
106628 .extra_temps = .{108601 .extra_temps = .{
106629 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },108602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106630 .unused,108603 .{ .type = .i64, .kind = .{ .reg = .rdi } },
106631 .unused,108604 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },
106632 .unused,108605 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106633 .unused,108606 .{ .type = .f32, .kind = .mem },
106634 .unused,108607 .unused,
106635 .unused,108608 .unused,
106636 .unused,108609 .unused,
...@@ -106638,39 +108611,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106638,39 +108611,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106638 .unused,108611 .unused,
106639 .unused,108612 .unused,
106640 },108613 },
106641 .dst_temps = .{ .{ .rc = .sse }, .unused },108614 .dst_temps = .{ .mem, .unused },
106642 .each = .{ .once = &.{108615 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
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 },
106657 .each = .{ .once = &.{108616 .each = .{ .once = &.{
106658 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },108617 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106659 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },108618 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106660 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },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", ._, ._, ._ },
106661 } },108625 } },
106662 }, .{108626 }, .{
106663 .required_features = .{ .@"64bit", .f16c, null, null },108627 .required_features = .{ .@"64bit", .avx, null, null },
106664 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },108628 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106665 .dst_constraints = .{ .{ .float = .word }, .any },108629 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106666 .patterns = &.{108630 .patterns = &.{
106667 .{ .src = .{ .to_mut_gpr, .none, .none } },108631 .{ .src = .{ .to_mem, .none, .none } },
106668 },108632 },
108633 .call_frame = .{ .alignment = .@"16" },
106669 .extra_temps = .{108634 .extra_temps = .{
106670 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },108635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106671 .unused,108636 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106672 .unused,108637 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
106673 .unused,108638 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106674 .unused,108639 .unused,
106675 .unused,108640 .unused,
106676 .unused,108641 .unused,
...@@ -106679,35 +108644,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106679,35 +108644,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106679 .unused,108644 .unused,
106680 .unused,108645 .unused,
106681 },108646 },
106682 .dst_temps = .{ .{ .rc = .sse }, .unused },108647 .dst_temps = .{ .mem, .unused },
106683 .clobbers = .{ .eflags = true },108648 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106684 .each = .{ .once = &.{108649 .each = .{ .once = &.{
106685 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },108650 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106686 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },108651 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
106687 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },108652 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
106688 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },108653 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
106689 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },108654 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
106690 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },108655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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(.{}), ._ },
106697 } },108656 } },
106698 }, .{108657 }, .{
106699 .required_features = .{ .sse, null, null, null },108658 .required_features = .{ .@"64bit", .sse4_1, null, null },
106700 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },108659 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106701 .dst_constraints = .{ .{ .float = .word }, .any },108660 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106702 .patterns = &.{108661 .patterns = &.{
106703 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },108662 .{ .src = .{ .to_mem, .none, .none } },
106704 },108663 },
106705 .call_frame = .{ .alignment = .@"16" },108664 .call_frame = .{ .alignment = .@"16" },
106706 .extra_temps = .{108665 .extra_temps = .{
106707 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106708 .unused,108667 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106709 .unused,108668 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
106710 .unused,108669 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106711 .unused,108670 .unused,
106712 .unused,108671 .unused,
106713 .unused,108672 .unused,
...@@ -106716,25 +108675,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106716,25 +108675,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106716 .unused,108675 .unused,
106717 .unused,108676 .unused,
106718 },108677 },
106719 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108678 .dst_temps = .{ .mem, .unused },
106720 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108679 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106721 .each = .{ .once = &.{108680 .each = .{ .once = &.{
106722 .{ ._, ._, .movsx, .src0d, .src0b, ._, ._ },108681 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106723 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },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", ._, ._, ._ },
106724 } },108687 } },
106725 }, .{108688 }, .{
106726 .required_features = .{ .sse, null, null, null },108689 .required_features = .{ .@"64bit", .sse2, null, null },
106727 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },108690 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106728 .dst_constraints = .{ .{ .float = .word }, .any },108691 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106729 .patterns = &.{108692 .patterns = &.{
106730 .{ .src = .{ .{ .to_reg = .dil }, .none, .none } },108693 .{ .src = .{ .to_mem, .none, .none } },
106731 },108694 },
106732 .call_frame = .{ .alignment = .@"16" },108695 .call_frame = .{ .alignment = .@"16" },
106733 .extra_temps = .{108696 .extra_temps = .{
106734 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108697 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106735 .unused,108698 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106736 .unused,108699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
106737 .unused,108700 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106738 .unused,108701 .unused,
106739 .unused,108702 .unused,
106740 .unused,108703 .unused,
...@@ -106743,26 +108706,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106743,26 +108706,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106743 .unused,108706 .unused,
106744 .unused,108707 .unused,
106745 },108708 },
106746 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108709 .dst_temps = .{ .mem, .unused },
106747 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108710 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106748 .each = .{ .once = &.{108711 .each = .{ .once = &.{
106749 .{ ._, ._, .movzx, .src0d, .src0b, ._, ._ },108712 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106750 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },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", ._, ._, ._ },
106751 } },108719 } },
106752 }, .{108720 }, .{
106753 .required_features = .{ .sse, null, null, null },108721 .required_features = .{ .@"64bit", .sse, null, null },
106754 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },108722 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
106755 .dst_constraints = .{ .{ .float = .word }, .any },108723 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106756 .patterns = &.{108724 .patterns = &.{
106757 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },108725 .{ .src = .{ .to_mem, .none, .none } },
106758 },108726 },
106759 .call_frame = .{ .alignment = .@"16" },108727 .call_frame = .{ .alignment = .@"16" },
106760 .extra_temps = .{108728 .extra_temps = .{
106761 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108729 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106762 .unused,108730 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106763 .unused,108731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },
106764 .unused,108732 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106765 .unused,108733 .{ .type = .f32, .kind = .mem },
106766 .unused,108734 .unused,
106767 .unused,108735 .unused,
106768 .unused,108736 .unused,
...@@ -106770,26 +108738,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106770,26 +108738,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106770 .unused,108738 .unused,
106771 .unused,108739 .unused,
106772 },108740 },
106773 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108741 .dst_temps = .{ .mem, .unused },
106774 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108742 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106775 .each = .{ .once = &.{108743 .each = .{ .once = &.{
106776 .{ ._, ._, .movsx, .src0d, .src0w, ._, ._ },108744 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106777 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },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", ._, ._, ._ },
106778 } },108752 } },
106779 }, .{108753 }, .{
106780 .required_features = .{ .sse, null, null, null },108754 .required_features = .{ .@"64bit", .avx, null, null },
106781 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },108755 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106782 .dst_constraints = .{ .{ .float = .word }, .any },108756 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106783 .patterns = &.{108757 .patterns = &.{
106784 .{ .src = .{ .{ .to_reg = .di }, .none, .none } },108758 .{ .src = .{ .to_mem, .none, .none } },
106785 },108759 },
106786 .call_frame = .{ .alignment = .@"16" },108760 .call_frame = .{ .alignment = .@"16" },
106787 .extra_temps = .{108761 .extra_temps = .{
106788 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108762 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106789 .unused,108763 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106790 .unused,108764 .{ .type = .i64, .kind = .{ .reg = .rsi } },
106791 .unused,108765 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
106792 .unused,108766 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106793 .unused,108767 .unused,
106794 .unused,108768 .unused,
106795 .unused,108769 .unused,
...@@ -106797,26 +108771,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106797,26 +108771,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106797 .unused,108771 .unused,
106798 .unused,108772 .unused,
106799 },108773 },
106800 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108774 .dst_temps = .{ .mem, .unused },
106801 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108775 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106802 .each = .{ .once = &.{108776 .each = .{ .once = &.{
106803 .{ ._, ._, .movzx, .src0d, .src0w, ._, ._ },108777 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106804 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },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", ._, ._, ._ },
106805 } },108784 } },
106806 }, .{108785 }, .{
106807 .required_features = .{ .sse, null, null, null },108786 .required_features = .{ .@"64bit", .sse4_1, null, null },
106808 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },108787 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106809 .dst_constraints = .{ .{ .float = .word }, .any },108788 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106810 .patterns = &.{108789 .patterns = &.{
106811 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },108790 .{ .src = .{ .to_mem, .none, .none } },
106812 },108791 },
106813 .call_frame = .{ .alignment = .@"16" },108792 .call_frame = .{ .alignment = .@"16" },
106814 .extra_temps = .{108793 .extra_temps = .{
106815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },108794 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106816 .unused,108795 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106817 .unused,108796 .{ .type = .i64, .kind = .{ .reg = .rsi } },
106818 .unused,108797 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
106819 .unused,108798 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106820 .unused,108799 .unused,
106821 .unused,108800 .unused,
106822 .unused,108801 .unused,
...@@ -106824,25 +108803,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106824,25 +108803,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106824 .unused,108803 .unused,
106825 .unused,108804 .unused,
106826 },108805 },
106827 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108806 .dst_temps = .{ .mem, .unused },
106828 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108807 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106829 .each = .{ .once = &.{108808 .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", ._, ._, ._ },
106831 } },108816 } },
106832 }, .{108817 }, .{
106833 .required_features = .{ .sse, null, null, null },108818 .required_features = .{ .@"64bit", .sse2, null, null },
106834 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },108819 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106835 .dst_constraints = .{ .{ .float = .word }, .any },108820 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106836 .patterns = &.{108821 .patterns = &.{
106837 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },108822 .{ .src = .{ .to_mem, .none, .none } },
106838 },108823 },
106839 .call_frame = .{ .alignment = .@"16" },108824 .call_frame = .{ .alignment = .@"16" },
106840 .extra_temps = .{108825 .extra_temps = .{
106841 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },108826 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106842 .unused,108827 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106843 .unused,108828 .{ .type = .i64, .kind = .{ .reg = .rsi } },
106844 .unused,108829 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },
106845 .unused,108830 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106846 .unused,108831 .unused,
106847 .unused,108832 .unused,
106848 .unused,108833 .unused,
...@@ -106850,51 +108835,98 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106850,51 +108835,98 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106850 .unused,108835 .unused,
106851 .unused,108836 .unused,
106852 },108837 },
106853 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108838 .dst_temps = .{ .mem, .unused },
106854 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108839 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106855 .each = .{ .once = &.{108840 .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", ._, ._, ._ },
106857 } },108849 } },
106858 }, .{108850 }, .{
106859 .required_features = .{ .@"64bit", .sse, null, null },108851 .required_features = .{ .@"64bit", .sse, null, null },
106860 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },108852 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106861 .dst_constraints = .{ .{ .float = .word }, .any },108853 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106862 .patterns = &.{108854 .patterns = &.{
106863 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },108855 .{ .src = .{ .to_mem, .none, .none } },
106864 },108856 },
106865 .call_frame = .{ .alignment = .@"16" },108857 .call_frame = .{ .alignment = .@"16" },
106866 .extra_temps = .{108858 .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 },
106868 .unused,108865 .unused,
106869 .unused,108866 .unused,
106870 .unused,108867 .unused,
106871 .unused,108868 .unused,
106872 .unused,108869 .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,
106873 .unused,108899 .unused,
106874 .unused,108900 .unused,
106875 .unused,108901 .unused,
106876 .unused,108902 .unused,
106877 .unused,108903 .unused,
106878 },108904 },
106879 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108905 .dst_temps = .{ .mem, .unused },
106880 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108906 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106881 .each = .{ .once = &.{108907 .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", ._, ._, ._ },
106883 } },108915 } },
106884 }, .{108916 }, .{
106885 .required_features = .{ .@"64bit", .sse, null, null },108917 .required_features = .{ .@"64bit", .sse4_1, null, null },
106886 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },108918 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106887 .dst_constraints = .{ .{ .float = .word }, .any },108919 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106888 .patterns = &.{108920 .patterns = &.{
106889 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },108921 .{ .src = .{ .to_mem, .none, .none } },
106890 },108922 },
106891 .call_frame = .{ .alignment = .@"16" },108923 .call_frame = .{ .alignment = .@"16" },
106892 .extra_temps = .{108924 .extra_temps = .{
106893 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },108925 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106894 .unused,108926 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106895 .unused,108927 .{ .type = .u64, .kind = .{ .reg = .rsi } },
106896 .unused,108928 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
106897 .unused,108929 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106898 .unused,108930 .unused,
106899 .unused,108931 .unused,
106900 .unused,108932 .unused,
...@@ -106902,25 +108934,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106902,25 +108934,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106902 .unused,108934 .unused,
106903 .unused,108935 .unused,
106904 },108936 },
106905 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108937 .dst_temps = .{ .mem, .unused },
106906 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108938 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106907 .each = .{ .once = &.{108939 .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", ._, ._, ._ },
106909 } },108947 } },
106910 }, .{108948 }, .{
106911 .required_features = .{ .@"64bit", .sse, null, null },108949 .required_features = .{ .@"64bit", .sse2, null, null },
106912 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },108950 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106913 .dst_constraints = .{ .{ .float = .word }, .any },108951 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106914 .patterns = &.{108952 .patterns = &.{
106915 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },108953 .{ .src = .{ .to_mem, .none, .none } },
106916 },108954 },
106917 .call_frame = .{ .alignment = .@"16" },108955 .call_frame = .{ .alignment = .@"16" },
106918 .extra_temps = .{108956 .extra_temps = .{
106919 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },108957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106920 .unused,108958 .{ .type = .u64, .kind = .{ .reg = .rdi } },
106921 .unused,108959 .{ .type = .u64, .kind = .{ .reg = .rsi } },
106922 .unused,108960 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
106923 .unused,108961 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106924 .unused,108962 .unused,
106925 .unused,108963 .unused,
106926 .unused,108964 .unused,
...@@ -106928,193 +108966,206 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -106928,193 +108966,206 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
106928 .unused,108966 .unused,
106929 .unused,108967 .unused,
106930 },108968 },
106931 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },108969 .dst_temps = .{ .mem, .unused },
106932 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },108970 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106933 .each = .{ .once = &.{108971 .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", ._, ._, ._ },
106935 } },108980 } },
106936 }, .{108981 }, .{
106937 .required_features = .{ .@"64bit", .sse, null, null },108982 .required_features = .{ .@"64bit", .sse, null, null },
106938 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },108983 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
106939 .dst_constraints = .{ .{ .float = .word }, .any },108984 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106940 .patterns = &.{108985 .patterns = &.{
106941 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },108986 .{ .src = .{ .to_mem, .none, .none } },
106942 },108987 },
106943 .call_frame = .{ .alignment = .@"16" },108988 .call_frame = .{ .alignment = .@"16" },
106944 .extra_temps = .{108989 .extra_temps = .{
108990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108991 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108992 .{ .type = .u64, .kind = .{ .reg = .rsi } },
106945 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },108993 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },
106946 .unused,108994 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106947 .unused,108995 .{ .type = .f32, .kind = .mem },
106948 .unused,
106949 .unused,
106950 .unused,
106951 .unused,108996 .unused,
106952 .unused,108997 .unused,
106953 .unused,108998 .unused,
106954 .unused,108999 .unused,
106955 .unused,109000 .unused,
106956 },109001 },
106957 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },109002 .dst_temps = .{ .mem, .unused },
106958 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106959 .each = .{ .once = &.{109004 .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", ._, ._, ._ },
106961 } },109014 } },
106962 }, .{109015 }, .{
106963 .required_features = .{ .@"64bit", .sse, null, null },109016 .required_features = .{ .@"64bit", .avx, null, null },
106964 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },109017 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106965 .dst_constraints = .{ .{ .float = .word }, .any },109018 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106966 .patterns = &.{109019 .patterns = &.{
106967 .{ .src = .{ .to_mem, .none, .none } },109020 .{ .src = .{ .to_mem, .none, .none } },
106968 },109021 },
106969 .call_frame = .{ .alignment = .@"16" },109022 .call_frame = .{ .alignment = .@"16" },
106970 .extra_temps = .{109023 .extra_temps = .{
109024 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109025 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106971 .{ .type = .usize, .kind = .{ .reg = .rdi } },109026 .{ .type = .usize, .kind = .{ .reg = .rdi } },
106972 .{ .type = .usize, .kind = .{ .reg = .rsi } },109027 .{ .type = .usize, .kind = .{ .reg = .rsi } },
106973 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },109028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
106974 .unused,109029 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
106975 .unused,
106976 .unused,
106977 .unused,109030 .unused,
106978 .unused,109031 .unused,
106979 .unused,109032 .unused,
106980 .unused,109033 .unused,
106981 .unused,109034 .unused,
106982 },109035 },
106983 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },109036 .dst_temps = .{ .mem, .unused },
106984 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109037 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
106985 .each = .{ .once = &.{109038 .each = .{ .once = &.{
106986 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },109039 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
106987 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },109040 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
106988 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },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", ._, ._, ._ },
106989 } },109048 } },
106990 }, .{109049 }, .{
106991 .required_features = .{ .@"64bit", .sse, null, null },109050 .required_features = .{ .@"64bit", .sse4_1, null, null },
106992 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },109051 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
106993 .dst_constraints = .{ .{ .float = .word }, .any },109052 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
106994 .patterns = &.{109053 .patterns = &.{
106995 .{ .src = .{ .to_mem, .none, .none } },109054 .{ .src = .{ .to_mem, .none, .none } },
106996 },109055 },
106997 .call_frame = .{ .alignment = .@"16" },109056 .call_frame = .{ .alignment = .@"16" },
106998 .extra_temps = .{109057 .extra_temps = .{
109058 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109059 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
106999 .{ .type = .usize, .kind = .{ .reg = .rdi } },109060 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107000 .{ .type = .usize, .kind = .{ .reg = .rsi } },109061 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107001 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },109062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
107002 .unused,109063 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107003 .unused,
107004 .unused,
107005 .unused,109064 .unused,
107006 .unused,109065 .unused,
107007 .unused,109066 .unused,
107008 .unused,109067 .unused,
107009 .unused,109068 .unused,
107010 },109069 },
107011 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },109070 .dst_temps = .{ .mem, .unused },
107012 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109071 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107013 .each = .{ .once = &.{109072 .each = .{ .once = &.{
107014 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },109073 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107015 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },109074 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107016 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109075 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
107017 } },109076 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
107018 }, .{109077 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
107019 .required_features = .{ .f16c, null, null, null },109078 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },
107020 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },109079 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
107021 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },109080 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
107022 .patterns = &.{109081 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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(.{}), ._ },
107045 } },109082 } },
107046 }, .{109083 }, .{
107047 .required_features = .{ .f16c, null, null, null },109084 .required_features = .{ .@"64bit", .sse2, null, null },
107048 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },109085 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107049 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },109086 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107050 .patterns = &.{109087 .patterns = &.{
107051 .{ .src = .{ .mem, .none, .none } },109088 .{ .src = .{ .to_mem, .none, .none } },
107052 .{ .src = .{ .to_sse, .none, .none } },
107053 },109089 },
107054 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },109090 .call_frame = .{ .alignment = .@"16" },
107055 .each = .{ .once = &.{109091 .extra_temps = .{
107056 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },109092 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107057 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },109093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107058 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },109094 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107059 } },109095 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107060 }, .{109096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
107061 .required_features = .{ .f16c, .avx2, null, null },109097 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107062 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },109098 .unused,
107063 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },109099 .unused,
107064 .patterns = &.{109100 .unused,
107065 .{ .src = .{ .mem, .none, .none } },109101 .unused,
107066 .{ .src = .{ .to_sse, .none, .none } },109102 .unused,
107067 },109103 },
107068 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },109104 .dst_temps = .{ .mem, .unused },
109105 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107069 .each = .{ .once = &.{109106 .each = .{ .once = &.{
107070 .{ ._, .vp_d, .movzxb, .dst0y, .src0q, ._, ._ },109107 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107071 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },109108 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107072 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },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", ._, ._, ._ },
107073 } },109117 } },
107074 }, .{109118 }, .{
107075 .required_features = .{ .f16c, .avx2, null, null },109119 .required_features = .{ .@"64bit", .sse, null, null },
107076 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },109120 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107077 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },109121 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107078 .patterns = &.{109122 .patterns = &.{
107079 .{ .src = .{ .to_mem, .none, .none } },109123 .{ .src = .{ .to_mem, .none, .none } },
107080 },109124 },
109125 .call_frame = .{ .alignment = .@"16" },
107081 .extra_temps = .{109126 .extra_temps = .{
109127 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107082 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109128 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107083 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },109129 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107084 .unused,109130 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107085 .unused,109131 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },
107086 .unused,109132 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107087 .unused,109133 .{ .type = .f32, .kind = .mem },
107088 .unused,
107089 .unused,109134 .unused,
107090 .unused,109135 .unused,
107091 .unused,109136 .unused,
107092 .unused,109137 .unused,
107093 },109138 },
107094 .dst_temps = .{ .mem, .unused },109139 .dst_temps = .{ .mem, .unused },
107095 .clobbers = .{ .eflags = true },109140 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107096 .each = .{ .once = &.{109141 .each = .{ .once = &.{
107097 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109142 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107098 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },109143 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107099 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },109144 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
107100 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },109145 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
107101 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
107102 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109152 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107103 } },109153 } },
107104 }, .{109154 }, .{
107105 .required_features = .{ .f16c, null, null, null },109155 .required_features = .{ .@"64bit", .avx, null, null },
107106 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },109156 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107107 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },109157 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107108 .patterns = &.{109158 .patterns = &.{
107109 .{ .src = .{ .to_mem, .none, .none } },109159 .{ .src = .{ .to_mem, .none, .none } },
107110 },109160 },
109161 .call_frame = .{ .alignment = .@"16" },
107111 .extra_temps = .{109162 .extra_temps = .{
109163 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107112 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109164 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107113 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },109165 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107114 .unused,109166 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107115 .unused,109167 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107116 .unused,109168 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107117 .unused,
107118 .unused,109169 .unused,
107119 .unused,109170 .unused,
107120 .unused,109171 .unused,
...@@ -107122,29 +109173,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107122,29 +109173,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107122 .unused,109173 .unused,
107123 },109174 },
107124 .dst_temps = .{ .mem, .unused },109175 .dst_temps = .{ .mem, .unused },
107125 .clobbers = .{ .eflags = true },109176 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107126 .each = .{ .once = &.{109177 .each = .{ .once = &.{
107127 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109178 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107128 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },109179 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107129 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },109180 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
107130 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },109181 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
107131 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
107132 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109186 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107133 } },109187 } },
107134 }, .{109188 }, .{
107135 .required_features = .{ .f16c, .avx2, null, null },109189 .required_features = .{ .@"64bit", .sse4_1, null, null },
107136 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },109190 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107137 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },109191 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107138 .patterns = &.{109192 .patterns = &.{
107139 .{ .src = .{ .to_mem, .none, .none } },109193 .{ .src = .{ .to_mem, .none, .none } },
107140 },109194 },
109195 .call_frame = .{ .alignment = .@"16" },
107141 .extra_temps = .{109196 .extra_temps = .{
109197 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107142 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109198 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107143 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },109199 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107144 .unused,109200 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107145 .unused,109201 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107146 .unused,109202 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107147 .unused,
107148 .unused,109203 .unused,
107149 .unused,109204 .unused,
107150 .unused,109205 .unused,
...@@ -107152,29 +109207,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107152,29 +109207,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107152 .unused,109207 .unused,
107153 },109208 },
107154 .dst_temps = .{ .mem, .unused },109209 .dst_temps = .{ .mem, .unused },
107155 .clobbers = .{ .eflags = true },109210 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107156 .each = .{ .once = &.{109211 .each = .{ .once = &.{
107157 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109212 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107158 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },109213 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107159 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },109214 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
107160 .{ ._, .v_, .cvtps2ph, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },109215 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
107161 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
107162 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109220 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107163 } },109221 } },
107164 }, .{109222 }, .{
107165 .required_features = .{ .f16c, null, null, null },109223 .required_features = .{ .@"64bit", .sse2, null, null },
107166 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },109224 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107167 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },109225 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107168 .patterns = &.{109226 .patterns = &.{
107169 .{ .src = .{ .to_mem, .none, .none } },109227 .{ .src = .{ .to_mem, .none, .none } },
107170 },109228 },
109229 .call_frame = .{ .alignment = .@"16" },
107171 .extra_temps = .{109230 .extra_temps = .{
109231 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107172 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107173 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },109233 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107174 .unused,109234 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107175 .unused,109235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107176 .unused,109236 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107177 .unused,
107178 .unused,109237 .unused,
107179 .unused,109238 .unused,
107180 .unused,109239 .unused,
...@@ -107182,31 +109241,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107182,31 +109241,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107182 .unused,109241 .unused,
107183 },109242 },
107184 .dst_temps = .{ .mem, .unused },109243 .dst_temps = .{ .mem, .unused },
107185 .clobbers = .{ .eflags = true },109244 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107186 .each = .{ .once = &.{109245 .each = .{ .once = &.{
107187 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109246 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107188 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },109247 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107189 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },109248 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
107190 .{ ._, .v_, .cvtps2ph, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },109249 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
107191 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },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), ._, ._ },
107192 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107193 } },109256 } },
107194 }, .{109257 }, .{
107195 .required_features = .{ .avx, .slow_incdec, null, null },109258 .required_features = .{ .@"64bit", .sse, null, null },
107196 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109259 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107197 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109260 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },
107198 .patterns = &.{109261 .patterns = &.{
107199 .{ .src = .{ .to_mem, .none, .none } },109262 .{ .src = .{ .to_mem, .none, .none } },
107200 },109263 },
107201 .call_frame = .{ .alignment = .@"16" },109264 .call_frame = .{ .alignment = .@"16" },
107202 .extra_temps = .{109265 .extra_temps = .{
109266 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
107203 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109267 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107204 .{ .type = .i32, .kind = .{ .reg = .edi } },109268 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107205 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109269 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109270 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },
107206 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109271 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
107207 .unused,109272 .{ .type = .f32, .kind = .mem },
107208 .unused,
107209 .unused,
107210 .unused,109273 .unused,
107211 .unused,109274 .unused,
107212 .unused,109275 .unused,
...@@ -107215,26 +109278,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107215,26 +109278,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107215 .dst_temps = .{ .mem, .unused },109278 .dst_temps = .{ .mem, .unused },
107216 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109279 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107217 .each = .{ .once = &.{109280 .each = .{ .once = &.{
107218 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109281 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107219 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109282 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
107220 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109283 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
107221 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },109284 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
107222 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },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), ._, ._ },
107223 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109291 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107224 } },109292 } },
107225 }, .{109293 }, .{
107226 .required_features = .{ .avx, null, null, null },109294 .required_features = .{ .avx, null, null, null },
107227 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109295 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
107228 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109296 .dst_constraints = .{ .{ .float = .dword }, .any },
107229 .patterns = &.{109297 .patterns = &.{
107230 .{ .src = .{ .to_mem, .none, .none } },109298 .{ .src = .{ .mem, .none, .none } },
109299 .{ .src = .{ .to_gpr, .none, .none } },
107231 },109300 },
107232 .call_frame = .{ .alignment = .@"16" },
107233 .extra_temps = .{109301 .extra_temps = .{
107234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109302 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107235 .{ .type = .i32, .kind = .{ .reg = .edi } },109303 .unused,
107236 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109304 .unused,
107237 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109305 .unused,
107238 .unused,109306 .unused,
107239 .unused,109307 .unused,
107240 .unused,109308 .unused,
...@@ -107243,29 +109311,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107243,29 +109311,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107243 .unused,109311 .unused,
107244 .unused,109312 .unused,
107245 },109313 },
107246 .dst_temps = .{ .mem, .unused },109314 .dst_temps = .{ .{ .rc = .sse }, .unused },
107247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107248 .each = .{ .once = &.{109315 .each = .{ .once = &.{
107249 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109316 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
107250 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109317 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
107251 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109318 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
107252 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107253 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107254 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107255 } },109319 } },
107256 }, .{109320 }, .{
107257 .required_features = .{ .sse4_1, .slow_incdec, null, null },109321 .required_features = .{ .sse, null, null, null },
107258 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109322 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
107259 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109323 .dst_constraints = .{ .{ .float = .dword }, .any },
107260 .patterns = &.{109324 .patterns = &.{
107261 .{ .src = .{ .to_mem, .none, .none } },109325 .{ .src = .{ .mem, .none, .none } },
109326 .{ .src = .{ .to_gpr, .none, .none } },
107262 },109327 },
107263 .call_frame = .{ .alignment = .@"16" },
107264 .extra_temps = .{109328 .extra_temps = .{
107265 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109329 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107266 .{ .type = .i32, .kind = .{ .reg = .edi } },109330 .unused,
107267 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109331 .unused,
107268 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109332 .unused,
107269 .unused,109333 .unused,
107270 .unused,109334 .unused,
107271 .unused,109335 .unused,
...@@ -107274,29 +109338,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107274,29 +109338,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107274 .unused,109338 .unused,
107275 .unused,109339 .unused,
107276 },109340 },
107277 .dst_temps = .{ .mem, .unused },109341 .dst_temps = .{ .{ .rc = .sse }, .unused },
107278 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107279 .each = .{ .once = &.{109342 .each = .{ .once = &.{
107280 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109343 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
107281 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109344 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
107282 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109345 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
107283 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107284 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107285 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107286 } },109346 } },
107287 }, .{109347 }, .{
107288 .required_features = .{ .sse4_1, null, null, null },109348 .required_features = .{ .avx, null, null, null },
107289 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109349 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
107290 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109350 .dst_constraints = .{ .{ .float = .dword }, .any },
107291 .patterns = &.{109351 .patterns = &.{
107292 .{ .src = .{ .to_mem, .none, .none } },109352 .{ .src = .{ .mem, .none, .none } },
109353 .{ .src = .{ .to_gpr, .none, .none } },
107293 },109354 },
107294 .call_frame = .{ .alignment = .@"16" },
107295 .extra_temps = .{109355 .extra_temps = .{
107296 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109356 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107297 .{ .type = .i32, .kind = .{ .reg = .edi } },109357 .unused,
107298 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109358 .unused,
107299 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109359 .unused,
107300 .unused,109360 .unused,
107301 .unused,109361 .unused,
107302 .unused,109362 .unused,
...@@ -107305,29 +109365,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107305,29 +109365,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107305 .unused,109365 .unused,
107306 .unused,109366 .unused,
107307 },109367 },
107308 .dst_temps = .{ .mem, .unused },109368 .dst_temps = .{ .{ .rc = .sse }, .unused },
107309 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107310 .each = .{ .once = &.{109369 .each = .{ .once = &.{
107311 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109370 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
107312 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109371 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
107313 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109372 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
107314 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107315 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107316 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107317 } },109373 } },
107318 }, .{109374 }, .{
107319 .required_features = .{ .sse2, .slow_incdec, null, null },109375 .required_features = .{ .sse, null, null, null },
107320 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109376 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
107321 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109377 .dst_constraints = .{ .{ .float = .dword }, .any },
107322 .patterns = &.{109378 .patterns = &.{
107323 .{ .src = .{ .to_mem, .none, .none } },109379 .{ .src = .{ .mem, .none, .none } },
109380 .{ .src = .{ .to_gpr, .none, .none } },
107324 },109381 },
107325 .call_frame = .{ .alignment = .@"16" },
107326 .extra_temps = .{109382 .extra_temps = .{
107327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109383 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107328 .{ .type = .i32, .kind = .{ .reg = .edi } },109384 .unused,
107329 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109385 .unused,
107330 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109386 .unused,
107331 .unused,109387 .unused,
107332 .unused,109388 .unused,
107333 .unused,109389 .unused,
...@@ -107336,30 +109392,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107336,30 +109392,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107336 .unused,109392 .unused,
107337 .unused,109393 .unused,
107338 },109394 },
107339 .dst_temps = .{ .mem, .unused },109395 .dst_temps = .{ .{ .rc = .sse }, .unused },
107340 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107341 .each = .{ .once = &.{109396 .each = .{ .once = &.{
107342 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109397 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
107343 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109398 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
107344 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109399 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
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", ._, ._, ._ },
107349 } },109400 } },
107350 }, .{109401 }, .{
107351 .required_features = .{ .sse2, null, null, null },109402 .required_features = .{ .avx, null, null, null },
107352 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109403 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
107353 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109404 .dst_constraints = .{ .{ .float = .dword }, .any },
107354 .patterns = &.{109405 .patterns = &.{
107355 .{ .src = .{ .to_mem, .none, .none } },109406 .{ .src = .{ .mem, .none, .none } },
109407 .{ .src = .{ .to_gpr, .none, .none } },
107356 },109408 },
107357 .call_frame = .{ .alignment = .@"16" },
107358 .extra_temps = .{109409 .extra_temps = .{
107359 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109410 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107360 .{ .type = .i32, .kind = .{ .reg = .edi } },109411 .unused,
107361 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109412 .unused,
107362 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109413 .unused,
107363 .unused,109414 .unused,
107364 .unused,109415 .unused,
107365 .unused,109416 .unused,
...@@ -107368,31 +109419,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107368,31 +109419,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107368 .unused,109419 .unused,
107369 .unused,109420 .unused,
107370 },109421 },
107371 .dst_temps = .{ .mem, .unused },109422 .dst_temps = .{ .{ .rc = .sse }, .unused },
107372 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107373 .each = .{ .once = &.{109423 .each = .{ .once = &.{
107374 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109424 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
107375 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109425 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
107376 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109426 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
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", ._, ._, ._ },
107381 } },109427 } },
107382 }, .{109428 }, .{
107383 .required_features = .{ .sse, .slow_incdec, null, null },109429 .required_features = .{ .sse, null, null, null },
107384 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109430 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
107385 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109431 .dst_constraints = .{ .{ .float = .dword }, .any },
107386 .patterns = &.{109432 .patterns = &.{
107387 .{ .src = .{ .to_mem, .none, .none } },109433 .{ .src = .{ .mem, .none, .none } },
109434 .{ .src = .{ .to_gpr, .none, .none } },
107388 },109435 },
107389 .call_frame = .{ .alignment = .@"16" },
107390 .extra_temps = .{109436 .extra_temps = .{
107391 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109437 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107392 .{ .type = .i32, .kind = .{ .reg = .edi } },109438 .unused,
107393 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109439 .unused,
107394 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109440 .unused,
107395 .{ .type = .f32, .kind = .mem },109441 .unused,
107396 .unused,109442 .unused,
107397 .unused,109443 .unused,
107398 .unused,109444 .unused,
...@@ -107400,32 +109446,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107400,32 +109446,53 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107400 .unused,109446 .unused,
107401 .unused,109447 .unused,
107402 },109448 },
107403 .dst_temps = .{ .mem, .unused },109449 .dst_temps = .{ .{ .rc = .sse }, .unused },
107404 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107405 .each = .{ .once = &.{109450 .each = .{ .once = &.{
107406 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109451 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
107407 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109452 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
107408 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109453 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
107409 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },109454 } },
107410 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },109455 }, .{
107411 .{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },109456 .required_features = .{ .avx, null, null, null },
107412 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },109457 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
107413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._ },
107414 } },109481 } },
107415 }, .{109482 }, .{
107416 .required_features = .{ .sse, null, null, null },109483 .required_features = .{ .sse, null, null, null },
107417 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },109484 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
107418 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109485 .dst_constraints = .{ .{ .float = .dword }, .any },
107419 .patterns = &.{109486 .patterns = &.{
107420 .{ .src = .{ .to_mem, .none, .none } },109487 .{ .src = .{ .mem, .none, .none } },
109488 .{ .src = .{ .to_gpr, .none, .none } },
107421 },109489 },
107422 .call_frame = .{ .alignment = .@"16" },
107423 .extra_temps = .{109490 .extra_temps = .{
107424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109491 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107425 .{ .type = .i32, .kind = .{ .reg = .edi } },109492 .unused,
107426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },109493 .unused,
107427 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109494 .unused,
107428 .{ .type = .f32, .kind = .mem },109495 .unused,
107429 .unused,109496 .unused,
107430 .unused,109497 .unused,
107431 .unused,109498 .unused,
...@@ -107433,31 +109500,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107433,31 +109500,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107433 .unused,109500 .unused,
107434 .unused,109501 .unused,
107435 },109502 },
107436 .dst_temps = .{ .mem, .unused },109503 .dst_temps = .{ .{ .rc = .sse }, .unused },
107437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107438 .each = .{ .once = &.{109504 .each = .{ .once = &.{
107439 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109505 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
107440 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109506 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
107441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109507 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
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", ._, ._, ._ },
107447 } },109508 } },
107448 }, .{109509 }, .{
107449 .required_features = .{ .avx, .slow_incdec, null, null },109510 .required_features = .{ .avx, null, null, null },
107450 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109511 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
107451 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109512 .dst_constraints = .{ .{ .float = .dword }, .any },
107452 .patterns = &.{109513 .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 } },
107454 },109542 },
107455 .call_frame = .{ .alignment = .@"16" },
107456 .extra_temps = .{109543 .extra_temps = .{
107457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109544 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107458 .{ .type = .u32, .kind = .{ .reg = .edi } },109545 .unused,
107459 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109546 .unused,
107460 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109547 .unused,
107461 .unused,109548 .unused,
107462 .unused,109549 .unused,
107463 .unused,109550 .unused,
...@@ -107466,29 +109553,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107466,29 +109553,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107466 .unused,109553 .unused,
107467 .unused,109554 .unused,
107468 },109555 },
107469 .dst_temps = .{ .mem, .unused },109556 .dst_temps = .{ .{ .rc = .sse }, .unused },
107470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107471 .each = .{ .once = &.{109557 .each = .{ .once = &.{
107472 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109558 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
107473 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109559 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
107474 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109560 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
107475 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107476 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107477 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107478 } },109561 } },
107479 }, .{109562 }, .{
107480 .required_features = .{ .avx, null, null, null },109563 .required_features = .{ .sse, null, null, null },
107481 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109564 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
107482 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109565 .dst_constraints = .{ .{ .float = .dword }, .any },
107483 .patterns = &.{109566 .patterns = &.{
107484 .{ .src = .{ .to_mem, .none, .none } },109567 .{ .src = .{ .mem, .none, .none } },
109568 .{ .src = .{ .to_gpr, .none, .none } },
107485 },109569 },
107486 .call_frame = .{ .alignment = .@"16" },
107487 .extra_temps = .{109570 .extra_temps = .{
107488 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109571 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
107489 .{ .type = .u32, .kind = .{ .reg = .edi } },109572 .unused,
107490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109573 .unused,
107491 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109574 .unused,
107492 .unused,109575 .unused,
107493 .unused,109576 .unused,
107494 .unused,109577 .unused,
...@@ -107497,29 +109580,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107497,29 +109580,50 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107497 .unused,109580 .unused,
107498 .unused,109581 .unused,
107499 },109582 },
107500 .dst_temps = .{ .mem, .unused },109583 .dst_temps = .{ .{ .rc = .sse }, .unused },
107501 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107502 .each = .{ .once = &.{109584 .each = .{ .once = &.{
107503 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109585 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
107504 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109586 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
107505 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109587 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0q, ._, ._ },
107506 .{ ._, .vp_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },
107507 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107508 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107509 } },109588 } },
107510 }, .{109589 }, .{
107511 .required_features = .{ .sse4_1, .slow_incdec, null, null },109590 .required_features = .{ .@"64bit", .avx, null, null },
107512 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109591 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
107513 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109592 .dst_constraints = .{ .{ .float = .dword }, .any },
107514 .patterns = &.{109593 .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 } },
107516 },109621 },
107517 .call_frame = .{ .alignment = .@"16" },
107518 .extra_temps = .{109622 .extra_temps = .{
107519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109623 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
107520 .{ .type = .u32, .kind = .{ .reg = .edi } },109624 .unused,
107521 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109625 .unused,
107522 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109626 .unused,
107523 .unused,109627 .unused,
107524 .unused,109628 .unused,
107525 .unused,109629 .unused,
...@@ -107528,29 +109632,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107528,29 +109632,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107528 .unused,109632 .unused,
107529 .unused,109633 .unused,
107530 },109634 },
107531 .dst_temps = .{ .mem, .unused },109635 .dst_temps = .{ .{ .rc = .sse }, .unused },
107532 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109636 .clobbers = .{ .eflags = true },
107533 .each = .{ .once = &.{109637 .each = .{ .once = &.{
107534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109638 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },
107535 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109639 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
107536 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109640 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
107537 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },109641 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
107538 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },109642 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
107539 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._ },
107540 } },109649 } },
107541 }, .{109650 }, .{
107542 .required_features = .{ .sse4_1, null, null, null },109651 .required_features = .{ .@"64bit", .sse, null, null },
107543 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109652 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
107544 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109653 .dst_constraints = .{ .{ .float = .dword }, .any },
107545 .patterns = &.{109654 .patterns = &.{
107546 .{ .src = .{ .to_mem, .none, .none } },109655 .{ .src = .{ .to_mut_gpr, .none, .none } },
107547 },109656 },
107548 .call_frame = .{ .alignment = .@"16" },
107549 .extra_temps = .{109657 .extra_temps = .{
107550 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109658 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
107551 .{ .type = .u32, .kind = .{ .reg = .edi } },109659 .unused,
107552 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109660 .unused,
107553 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109661 .unused,
107554 .unused,109662 .unused,
107555 .unused,109663 .unused,
107556 .unused,109664 .unused,
...@@ -107559,29 +109667,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107559,29 +109667,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107559 .unused,109667 .unused,
107560 .unused,109668 .unused,
107561 },109669 },
107562 .dst_temps = .{ .mem, .unused },109670 .dst_temps = .{ .{ .rc = .sse }, .unused },
107563 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109671 .clobbers = .{ .eflags = true },
107564 .each = .{ .once = &.{109672 .each = .{ .once = &.{
107565 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109673 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
107566 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109674 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
107567 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109675 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
107568 .{ ._, .p_w, .extr, .memsia(.dst0w, .@"2", .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },109676 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
107569 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },109677 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
107570 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
107571 } },109684 } },
107572 }, .{109685 }, .{
107573 .required_features = .{ .sse2, .slow_incdec, null, null },109686 .required_features = .{ .@"64bit", .sse, null, null },
107574 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109687 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
107575 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109688 .dst_constraints = .{ .{ .float = .dword }, .any },
107576 .patterns = &.{109689 .patterns = &.{
107577 .{ .src = .{ .to_mem, .none, .none } },109690 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
107578 },109691 },
107579 .call_frame = .{ .alignment = .@"16" },109692 .call_frame = .{ .alignment = .@"16" },
107580 .extra_temps = .{109693 .extra_temps = .{
107581 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109694 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
107582 .{ .type = .u32, .kind = .{ .reg = .edi } },109695 .unused,
107583 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109696 .unused,
107584 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109697 .unused,
107585 .unused,109698 .unused,
107586 .unused,109699 .unused,
107587 .unused,109700 .unused,
...@@ -107590,30 +109703,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107590,30 +109703,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107590 .unused,109703 .unused,
107591 .unused,109704 .unused,
107592 },109705 },
107593 .dst_temps = .{ .mem, .unused },109706 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107594 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107595 .each = .{ .once = &.{109708 .each = .{ .once = &.{
107596 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109709 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
107603 } },109710 } },
107604 }, .{109711 }, .{
107605 .required_features = .{ .sse2, null, null, null },109712 .required_features = .{ .@"64bit", .sse, null, null },
107606 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109713 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
107607 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109714 .dst_constraints = .{ .{ .float = .dword }, .any },
107608 .patterns = &.{109715 .patterns = &.{
107609 .{ .src = .{ .to_mem, .none, .none } },109716 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
107610 },109717 },
107611 .call_frame = .{ .alignment = .@"16" },109718 .call_frame = .{ .alignment = .@"16" },
107612 .extra_temps = .{109719 .extra_temps = .{
107613 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109720 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
107614 .{ .type = .u32, .kind = .{ .reg = .edi } },109721 .unused,
107615 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109722 .unused,
107616 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109723 .unused,
107617 .unused,109724 .unused,
107618 .unused,109725 .unused,
107619 .unused,109726 .unused,
...@@ -107622,31 +109729,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107622,31 +109729,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107622 .unused,109729 .unused,
107623 .unused,109730 .unused,
107624 },109731 },
107625 .dst_temps = .{ .mem, .unused },109732 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107626 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109733 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107627 .each = .{ .once = &.{109734 .each = .{ .once = &.{
107628 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109735 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
107635 } },109736 } },
107636 }, .{109737 }, .{
107637 .required_features = .{ .sse, .slow_incdec, null, null },109738 .required_features = .{ .@"64bit", .sse, null, null },
107638 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109739 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107639 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109740 .dst_constraints = .{ .{ .float = .dword }, .any },
107640 .patterns = &.{109741 .patterns = &.{
107641 .{ .src = .{ .to_mem, .none, .none } },109742 .{ .src = .{ .to_mem, .none, .none } },
107642 },109743 },
107643 .call_frame = .{ .alignment = .@"16" },109744 .call_frame = .{ .alignment = .@"16" },
107644 .extra_temps = .{109745 .extra_temps = .{
107645 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109746 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107646 .{ .type = .u32, .kind = .{ .reg = .edi } },109747 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107647 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109748 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
107648 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109749 .unused,
107649 .{ .type = .f32, .kind = .mem },109750 .unused,
107650 .unused,109751 .unused,
107651 .unused,109752 .unused,
107652 .unused,109753 .unused,
...@@ -107654,32 +109755,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107654,32 +109755,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107654 .unused,109755 .unused,
107655 .unused,109756 .unused,
107656 },109757 },
107657 .dst_temps = .{ .mem, .unused },109758 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107658 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109759 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107659 .each = .{ .once = &.{109760 .each = .{ .once = &.{
107660 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109761 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107661 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109762 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
107662 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109763 .{ ._, ._, .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", ._, ._, ._ },
107668 } },109764 } },
107669 }, .{109765 }, .{
107670 .required_features = .{ .sse, null, null, null },109766 .required_features = .{ .@"64bit", .sse, null, null },
107671 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },109767 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
107672 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },109768 .dst_constraints = .{ .{ .float = .dword }, .any },
107673 .patterns = &.{109769 .patterns = &.{
107674 .{ .src = .{ .to_mem, .none, .none } },109770 .{ .src = .{ .to_mem, .none, .none } },
107675 },109771 },
107676 .call_frame = .{ .alignment = .@"16" },109772 .call_frame = .{ .alignment = .@"16" },
107677 .extra_temps = .{109773 .extra_temps = .{
107678 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },109774 .{ .type = .usize, .kind = .{ .reg = .rdi } },
107679 .{ .type = .u32, .kind = .{ .reg = .edi } },109775 .{ .type = .usize, .kind = .{ .reg = .rsi } },
107680 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },109776 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
107681 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },109777 .unused,
107682 .{ .type = .f32, .kind = .mem },109778 .unused,
107683 .unused,109779 .unused,
107684 .unused,109780 .unused,
107685 .unused,109781 .unused,
...@@ -107687,78 +109783,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107687,78 +109783,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107687 .unused,109783 .unused,
107688 .unused,109784 .unused,
107689 },109785 },
107690 .dst_temps = .{ .mem, .unused },109786 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
107691 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },109787 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107692 .each = .{ .once = &.{109788 .each = .{ .once = &.{
107693 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109789 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
107694 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },109790 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
107695 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },109791 .{ ._, ._, .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", ._, ._, ._ },
107701 } },109792 } },
107702 }, .{109793 }, .{
107703 .required_features = .{ .f16c, null, null, null },109794 .required_features = .{ .avx, null, null, null },
107704 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },109795 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107705 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },109796 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107706 .patterns = &.{109797 .patterns = &.{
107707 .{ .src = .{ .mem, .none, .none } },109798 .{ .src = .{ .mem, .none, .none } },
107708 .{ .src = .{ .to_sse, .none, .none } },109799 .{ .src = .{ .to_sse, .none, .none } },
107709 },109800 },
107710 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },109801 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107711 .each = .{ .once = &.{109802 .each = .{ .once = &.{
107712 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },109803 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
107713 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },109804 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107714 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107715 } },109805 } },
107716 }, .{109806 }, .{
107717 .required_features = .{ .f16c, .avx2, null, null },109807 .required_features = .{ .sse4_1, null, null, null },
107718 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },109808 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107719 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },109809 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107720 .patterns = &.{109810 .patterns = &.{
107721 .{ .src = .{ .mem, .none, .none } },109811 .{ .src = .{ .mem, .none, .none } },
107722 .{ .src = .{ .to_sse, .none, .none } },109812 .{ .src = .{ .to_sse, .none, .none } },
107723 },109813 },
107724 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },109814 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107725 .each = .{ .once = &.{109815 .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, ._, ._ },
107727 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },109830 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107728 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
107729 } },109831 } },
107730 }, .{109832 }, .{
107731 .required_features = .{ .f16c, null, null, null },109833 .required_features = .{ .avx, null, null, null },
107732 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },109834 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107733 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },109835 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107734 .patterns = &.{109836 .patterns = &.{
107735 .{ .src = .{ .mem, .none, .none } },109837 .{ .src = .{ .mem, .none, .none } },
107736 .{ .src = .{ .to_sse, .none, .none } },109838 .{ .src = .{ .to_sse, .none, .none } },
107737 },109839 },
107738 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },109840 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107739 .each = .{ .once = &.{109841 .each = .{ .once = &.{
107740 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },109842 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
107741 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },109843 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
107742 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
107743 } },109844 } },
107744 }, .{109845 }, .{
107745 .required_features = .{ .f16c, .avx2, null, null },109846 .required_features = .{ .sse4_1, null, null, null },
107746 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },109847 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107747 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },109848 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107748 .patterns = &.{109849 .patterns = &.{
107749 .{ .src = .{ .mem, .none, .none } },109850 .{ .src = .{ .mem, .none, .none } },
107750 .{ .src = .{ .to_sse, .none, .none } },109851 .{ .src = .{ .to_sse, .none, .none } },
107751 },109852 },
107752 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },109853 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
107753 .each = .{ .once = &.{109854 .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, ._, ._ },
107755 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },109869 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },
107756 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
107757 } },109870 } },
107758 }, .{109871 }, .{
107759 .required_features = .{ .f16c, .avx2, null, null },109872 .required_features = .{ .avx2, null, null, null },
107760 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },109873 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .byte } }, .any, .any },
107761 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any },109874 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
107762 .patterns = &.{109875 .patterns = &.{
107763 .{ .src = .{ .to_mem, .none, .none } },109876 .{ .src = .{ .to_mem, .none, .none } },
107764 },109877 },
...@@ -107779,16 +109892,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107779,16 +109892,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107779 .clobbers = .{ .eflags = true },109892 .clobbers = .{ .eflags = true },
107780 .each = .{ .once = &.{109893 .each = .{ .once = &.{
107781 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109894 .{ ._, ._, .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), ._, ._ },
107783 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },109896 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107784 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },109897 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
107785 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109898 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107786 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109899 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107787 } },109900 } },
107788 }, .{109901 }, .{
107789 .required_features = .{ .f16c, null, null, null },109902 .required_features = .{ .avx, null, null, null },
107790 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },109903 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107791 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },109904 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107792 .patterns = &.{109905 .patterns = &.{
107793 .{ .src = .{ .to_mem, .none, .none } },109906 .{ .src = .{ .to_mem, .none, .none } },
107794 },109907 },
...@@ -107809,16 +109922,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107809,16 +109922,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107809 .clobbers = .{ .eflags = true },109922 .clobbers = .{ .eflags = true },
107810 .each = .{ .once = &.{109923 .each = .{ .once = &.{
107811 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109924 .{ ._, ._, .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), ._, ._ },
107813 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },109926 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107814 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },109927 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
107815 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },109928 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107816 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107817 } },109930 } },
107818 }, .{109931 }, .{
107819 .required_features = .{ .f16c, .avx2, null, null },109932 .required_features = .{ .sse4_1, null, null, null },
107820 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },109933 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107821 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .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 },
107822 .patterns = &.{109965 .patterns = &.{
107823 .{ .src = .{ .to_mem, .none, .none } },109966 .{ .src = .{ .to_mem, .none, .none } },
107824 },109967 },
...@@ -107839,16 +109982,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107839,16 +109982,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107839 .clobbers = .{ .eflags = true },109982 .clobbers = .{ .eflags = true },
107840 .each = .{ .once = &.{109983 .each = .{ .once = &.{
107841 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },109984 .{ ._, ._, .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), ._, ._ },
107843 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },109986 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
107844 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },109987 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
107845 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },109988 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
107846 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },109989 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107847 } },109990 } },
107848 }, .{109991 }, .{
107849 .required_features = .{ .f16c, null, null, null },109992 .required_features = .{ .avx, null, null, null },
107850 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },109993 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107851 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },109994 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
107852 .patterns = &.{109995 .patterns = &.{
107853 .{ .src = .{ .to_mem, .none, .none } },109996 .{ .src = .{ .to_mem, .none, .none } },
107854 },109997 },
...@@ -107869,16 +110012,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107869,16 +110012,46 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107869 .clobbers = .{ .eflags = true },110012 .clobbers = .{ .eflags = true },
107870 .each = .{ .once = &.{110013 .each = .{ .once = &.{
107871 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110014 .{ ._, ._, .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), ._, ._ },
107873 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },110016 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
107874 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },110017 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
107875 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110018 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
107876 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110019 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107877 } },110020 } },
107878 }, .{110021 }, .{
107879 .required_features = .{ .avx, null, null, null },110022 .required_features = .{ .sse4_1, null, null, null },
107880 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },110023 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
107881 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .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 },
107882 .patterns = &.{110055 .patterns = &.{
107883 .{ .src = .{ .to_mem, .none, .none } },110056 .{ .src = .{ .to_mem, .none, .none } },
107884 },110057 },
...@@ -107886,8 +110059,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107886,8 +110059,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107886 .extra_temps = .{110059 .extra_temps = .{
107887 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110060 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107888 .{ .type = .i32, .kind = .{ .reg = .edi } },110061 .{ .type = .i32, .kind = .{ .reg = .edi } },
107889 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110062 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
107890 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110063 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107891 .unused,110064 .unused,
107892 .unused,110065 .unused,
107893 .unused,110066 .unused,
...@@ -107900,16 +110073,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107900,16 +110073,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107900 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110073 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107901 .each = .{ .once = &.{110074 .each = .{ .once = &.{
107902 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110075 .{ ._, ._, .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), ._, ._ },
107904 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110077 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107905 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110078 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
107906 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110079 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110080 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107908 } },110081 } },
107909 }, .{110082 }, .{
107910 .required_features = .{ .sse4_1, null, null, null },110083 .required_features = .{ .avx, null, null, null },
107911 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },110084 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107912 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110085 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107913 .patterns = &.{110086 .patterns = &.{
107914 .{ .src = .{ .to_mem, .none, .none } },110087 .{ .src = .{ .to_mem, .none, .none } },
107915 },110088 },
...@@ -107917,8 +110090,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107917,8 +110090,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107917 .extra_temps = .{110090 .extra_temps = .{
107918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107919 .{ .type = .i32, .kind = .{ .reg = .edi } },110092 .{ .type = .i32, .kind = .{ .reg = .edi } },
107920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110093 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
107921 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110094 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107922 .unused,110095 .unused,
107923 .unused,110096 .unused,
107924 .unused,110097 .unused,
...@@ -107931,16 +110104,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107931,16 +110104,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107931 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110104 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107932 .each = .{ .once = &.{110105 .each = .{ .once = &.{
107933 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110106 .{ ._, ._, .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), ._, ._ },
107935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110108 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107936 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110109 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
107937 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110110 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
107938 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110111 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
107939 } },110112 } },
107940 }, .{110113 }, .{
107941 .required_features = .{ .sse2, null, null, null },110114 .required_features = .{ .sse, .slow_incdec, null, null },
107942 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },110115 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107943 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110116 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107944 .patterns = &.{110117 .patterns = &.{
107945 .{ .src = .{ .to_mem, .none, .none } },110118 .{ .src = .{ .to_mem, .none, .none } },
107946 },110119 },
...@@ -107948,8 +110121,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107948,8 +110121,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107948 .extra_temps = .{110121 .extra_temps = .{
107949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110122 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107950 .{ .type = .i32, .kind = .{ .reg = .edi } },110123 .{ .type = .i32, .kind = .{ .reg = .edi } },
107951 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110124 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
107952 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110125 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107953 .unused,110126 .unused,
107954 .unused,110127 .unused,
107955 .unused,110128 .unused,
...@@ -107962,17 +110135,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107962,17 +110135,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107962 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110135 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107963 .each = .{ .once = &.{110136 .each = .{ .once = &.{
107964 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110137 .{ ._, ._, .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), ._, ._ },
107966 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110139 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107967 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },110140 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
107968 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },110141 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
107969 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
107970 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110142 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
107971 } },110143 } },
107972 }, .{110144 }, .{
107973 .required_features = .{ .sse, null, null, null },110145 .required_features = .{ .sse, null, null, null },
107974 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },110146 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
107975 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110147 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
107976 .patterns = &.{110148 .patterns = &.{
107977 .{ .src = .{ .to_mem, .none, .none } },110149 .{ .src = .{ .to_mem, .none, .none } },
107978 },110150 },
...@@ -107980,9 +110152,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107980,9 +110152,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107980 .extra_temps = .{110152 .extra_temps = .{
107981 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110153 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
107982 .{ .type = .i32, .kind = .{ .reg = .edi } },110154 .{ .type = .i32, .kind = .{ .reg = .edi } },
107983 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110155 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
107984 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110156 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
107985 .{ .type = .f32, .kind = .mem },110157 .unused,
107986 .unused,110158 .unused,
107987 .unused,110159 .unused,
107988 .unused,110160 .unused,
...@@ -107994,18 +110166,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -107994,18 +110166,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
107994 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110166 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
107995 .each = .{ .once = &.{110167 .each = .{ .once = &.{
107996 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110168 .{ ._, ._, .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), ._, ._ },
107998 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110170 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
107999 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },110171 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108000 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },110172 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108001 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },110173 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108002 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108003 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108004 } },110174 } },
108005 }, .{110175 }, .{
108006 .required_features = .{ .avx, null, null, null },110176 .required_features = .{ .avx, .slow_incdec, null, null },
108007 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },110177 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
108008 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110178 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108009 .patterns = &.{110179 .patterns = &.{
108010 .{ .src = .{ .to_mem, .none, .none } },110180 .{ .src = .{ .to_mem, .none, .none } },
108011 },110181 },
...@@ -108013,8 +110183,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108013,8 +110183,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108013 .extra_temps = .{110183 .extra_temps = .{
108014 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110184 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108015 .{ .type = .u32, .kind = .{ .reg = .edi } },110185 .{ .type = .u32, .kind = .{ .reg = .edi } },
108016 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110186 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108017 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110187 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108018 .unused,110188 .unused,
108019 .unused,110189 .unused,
108020 .unused,110190 .unused,
...@@ -108027,16 +110197,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108027,16 +110197,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108027 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110197 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108028 .each = .{ .once = &.{110198 .each = .{ .once = &.{
108029 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110199 .{ ._, ._, .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), ._, ._ },
108031 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110201 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108032 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110202 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108033 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110203 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108034 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110204 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108035 } },110205 } },
108036 }, .{110206 }, .{
108037 .required_features = .{ .sse4_1, null, null, null },110207 .required_features = .{ .avx, null, null, null },
108038 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },110208 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
108039 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110209 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108040 .patterns = &.{110210 .patterns = &.{
108041 .{ .src = .{ .to_mem, .none, .none } },110211 .{ .src = .{ .to_mem, .none, .none } },
108042 },110212 },
...@@ -108044,8 +110214,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108044,8 +110214,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108044 .extra_temps = .{110214 .extra_temps = .{
108045 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110215 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108046 .{ .type = .u32, .kind = .{ .reg = .edi } },110216 .{ .type = .u32, .kind = .{ .reg = .edi } },
108047 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108048 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110218 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108049 .unused,110219 .unused,
108050 .unused,110220 .unused,
108051 .unused,110221 .unused,
...@@ -108058,16 +110228,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108058,16 +110228,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108058 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110228 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108059 .each = .{ .once = &.{110229 .each = .{ .once = &.{
108060 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110230 .{ ._, ._, .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), ._, ._ },
108062 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110232 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108063 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110233 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108064 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110234 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110235 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108066 } },110236 } },
108067 }, .{110237 }, .{
108068 .required_features = .{ .sse2, null, null, null },110238 .required_features = .{ .sse, .slow_incdec, null, null },
108069 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },110239 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
108070 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110240 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108071 .patterns = &.{110241 .patterns = &.{
108072 .{ .src = .{ .to_mem, .none, .none } },110242 .{ .src = .{ .to_mem, .none, .none } },
108073 },110243 },
...@@ -108075,8 +110245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108075,8 +110245,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108075 .extra_temps = .{110245 .extra_temps = .{
108076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108077 .{ .type = .u32, .kind = .{ .reg = .edi } },110247 .{ .type = .u32, .kind = .{ .reg = .edi } },
108078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110248 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108079 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110249 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108080 .unused,110250 .unused,
108081 .unused,110251 .unused,
108082 .unused,110252 .unused,
...@@ -108089,17 +110259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108089,17 +110259,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110259 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108090 .each = .{ .once = &.{110260 .each = .{ .once = &.{
108091 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110261 .{ ._, ._, .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), ._, ._ },
108093 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110263 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108094 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },110264 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108095 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },110265 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
108096 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108097 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110266 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108098 } },110267 } },
108099 }, .{110268 }, .{
108100 .required_features = .{ .sse, null, null, null },110269 .required_features = .{ .sse, null, null, null },
108101 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },110270 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
108102 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110271 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108103 .patterns = &.{110272 .patterns = &.{
108104 .{ .src = .{ .to_mem, .none, .none } },110273 .{ .src = .{ .to_mem, .none, .none } },
108105 },110274 },
...@@ -108107,9 +110276,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108107,9 +110276,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108107 .extra_temps = .{110276 .extra_temps = .{
108108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110277 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108109 .{ .type = .u32, .kind = .{ .reg = .edi } },110278 .{ .type = .u32, .kind = .{ .reg = .edi } },
108110 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110279 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108111 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110280 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108112 .{ .type = .f32, .kind = .mem },110281 .unused,
108113 .unused,110282 .unused,
108114 .unused,110283 .unused,
108115 .unused,110284 .unused,
...@@ -108121,44 +110290,94 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108121,44 +110290,94 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108121 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110290 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108122 .each = .{ .once = &.{110291 .each = .{ .once = &.{
108123 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },110292 .{ ._, ._, .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), ._, ._ },
108125 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110294 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108126 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },110295 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108127 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },110296 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
108128 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },110297 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
108129 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108130 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108131 } },110298 } },
108132 }, .{110299 }, .{
108133 .required_features = .{ .f16c, null, null, null },110300 .required_features = .{ .avx, null, null, null },
108134 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },110301 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
108135 .dst_constraints = .{ .{ .scalar_float = .{ .of = .qword, .is = .word } }, .any },110302 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108136 .patterns = &.{110303 .patterns = &.{
108137 .{ .src = .{ .mem, .none, .none } },110304 .{ .src = .{ .mem, .none, .none } },
108138 .{ .src = .{ .to_sse, .none, .none } },110305 .{ .src = .{ .to_sse, .none, .none } },
108139 },110306 },
108140 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },110307 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108141 .each = .{ .once = &.{110308 .each = .{ .once = &.{
108142 .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ },110309 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
108143 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },110310 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
108144 } },110311 } },
108145 }, .{110312 }, .{
108146 .required_features = .{ .f16c, .avx2, null, null },110313 .required_features = .{ .sse4_1, null, null, null },
108147 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },110314 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
108148 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .word } }, .any },110315 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108149 .patterns = &.{110316 .patterns = &.{
108150 .{ .src = .{ .mem, .none, .none } },110317 .{ .src = .{ .mem, .none, .none } },
108151 .{ .src = .{ .to_sse, .none, .none } },110318 .{ .src = .{ .to_sse, .none, .none } },
108152 },110319 },
108153 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },110320 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108154 .each = .{ .once = &.{110321 .each = .{ .once = &.{
108155 .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ },110322 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
108156 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },110323 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },
108157 } },110324 } },
108158 }, .{110325 }, .{
108159 .required_features = .{ .f16c, .avx2, null, null },110326 .required_features = .{ .avx2, null, null, null },
108160 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },110327 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },
108161 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } }, .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 },
108162 .patterns = &.{110381 .patterns = &.{
108163 .{ .src = .{ .to_mem, .none, .none } },110382 .{ .src = .{ .to_mem, .none, .none } },
108164 },110383 },
...@@ -108178,16 +110397,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108178,16 +110397,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108178 .dst_temps = .{ .mem, .unused },110397 .dst_temps = .{ .mem, .unused },
108179 .clobbers = .{ .eflags = true },110398 .clobbers = .{ .eflags = true },
108180 .each = .{ .once = &.{110399 .each = .{ .once = &.{
108181 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110400 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108182 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memsia(.src0y, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110401 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108183 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },110402 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
110403 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
108184 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },110404 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108185 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108186 } },110406 } },
108187 }, .{110407 }, .{
108188 .required_features = .{ .f16c, null, null, null },110408 .required_features = .{ .avx, null, null, null },
108189 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },110409 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
108190 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .word } }, .any },110410 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108191 .patterns = &.{110411 .patterns = &.{
108192 .{ .src = .{ .to_mem, .none, .none } },110412 .{ .src = .{ .to_mem, .none, .none } },
108193 },110413 },
...@@ -108207,25 +110427,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108207,25 +110427,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108207 .dst_temps = .{ .mem, .unused },110427 .dst_temps = .{ .mem, .unused },
108208 .clobbers = .{ .eflags = true },110428 .clobbers = .{ .eflags = true },
108209 .each = .{ .once = &.{110429 .each = .{ .once = &.{
108210 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110430 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108211 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memsia(.src0x, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110431 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
108212 .{ ._, .v_, .cvtps2ph, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, .rm(.{}), ._ },110432 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
110433 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108213 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },110434 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108214 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108215 } },110436 } },
108216 }, .{110437 }, .{
108217 .required_features = .{ .avx, null, null, null },110438 .required_features = .{ .sse4_1, null, null, null },
108218 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },110439 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
108219 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110440 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108220 .patterns = &.{110441 .patterns = &.{
108221 .{ .src = .{ .to_mem, .none, .none } },110442 .{ .src = .{ .to_mem, .none, .none } },
108222 },110443 },
108223 .call_frame = .{ .alignment = .@"16" },
108224 .extra_temps = .{110444 .extra_temps = .{
108225 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108226 .{ .type = .i32, .kind = .{ .reg = .edi } },110446 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108227 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110447 .unused,
108228 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110448 .unused,
108229 .unused,110449 .unused,
108230 .unused,110450 .unused,
108231 .unused,110451 .unused,
...@@ -108235,28 +110455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108235,28 +110455,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108235 .unused,110455 .unused,
108236 },110456 },
108237 .dst_temps = .{ .mem, .unused },110457 .dst_temps = .{ .mem, .unused },
108238 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110458 .clobbers = .{ .eflags = true },
108239 .each = .{ .once = &.{110459 .each = .{ .once = &.{
108240 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110460 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108241 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110461 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
108242 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110462 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108243 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110463 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108244 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110464 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108245 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110465 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108246 } },110466 } },
108247 }, .{110467 }, .{
108248 .required_features = .{ .sse4_1, null, null, null },110468 .required_features = .{ .avx2, null, null, null },
108249 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },110469 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },
108250 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110470 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108251 .patterns = &.{110471 .patterns = &.{
108252 .{ .src = .{ .to_mem, .none, .none } },110472 .{ .src = .{ .to_mem, .none, .none } },
108253 },110473 },
108254 .call_frame = .{ .alignment = .@"16" },
108255 .extra_temps = .{110474 .extra_temps = .{
108256 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110475 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108257 .{ .type = .i32, .kind = .{ .reg = .edi } },110476 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108258 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110477 .unused,
108259 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110478 .unused,
108260 .unused,110479 .unused,
108261 .unused,110480 .unused,
108262 .unused,110481 .unused,
...@@ -108266,28 +110485,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108266,28 +110485,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108266 .unused,110485 .unused,
108267 },110486 },
108268 .dst_temps = .{ .mem, .unused },110487 .dst_temps = .{ .mem, .unused },
108269 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110488 .clobbers = .{ .eflags = true },
108270 .each = .{ .once = &.{110489 .each = .{ .once = &.{
108271 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110490 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108272 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110491 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108273 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110492 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },
108274 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110493 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
108275 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110494 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108276 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110495 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108277 } },110496 } },
108278 }, .{110497 }, .{
108279 .required_features = .{ .sse2, null, null, null },110498 .required_features = .{ .avx, null, null, null },
108280 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },110499 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
108281 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110500 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108282 .patterns = &.{110501 .patterns = &.{
108283 .{ .src = .{ .to_mem, .none, .none } },110502 .{ .src = .{ .to_mem, .none, .none } },
108284 },110503 },
108285 .call_frame = .{ .alignment = .@"16" },
108286 .extra_temps = .{110504 .extra_temps = .{
108287 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110505 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108288 .{ .type = .i32, .kind = .{ .reg = .edi } },110506 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110507 .unused,
108290 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110508 .unused,
108291 .unused,110509 .unused,
108292 .unused,110510 .unused,
108293 .unused,110511 .unused,
...@@ -108297,30 +110515,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108297,30 +110515,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108297 .unused,110515 .unused,
108298 },110516 },
108299 .dst_temps = .{ .mem, .unused },110517 .dst_temps = .{ .mem, .unused },
108300 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110518 .clobbers = .{ .eflags = true },
108301 .each = .{ .once = &.{110519 .each = .{ .once = &.{
108302 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110520 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108303 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110521 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
108304 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110522 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108305 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },110523 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108306 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },110524 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108307 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108308 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110525 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108309 } },110526 } },
108310 }, .{110527 }, .{
108311 .required_features = .{ .sse, null, null, null },110528 .required_features = .{ .sse4_1, null, null, null },
108312 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },110529 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
108313 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110530 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108314 .patterns = &.{110531 .patterns = &.{
108315 .{ .src = .{ .to_mem, .none, .none } },110532 .{ .src = .{ .to_mem, .none, .none } },
108316 },110533 },
108317 .call_frame = .{ .alignment = .@"16" },
108318 .extra_temps = .{110534 .extra_temps = .{
108319 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110535 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108320 .{ .type = .i32, .kind = .{ .reg = .edi } },110536 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108321 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsihf" } } },110537 .unused,
108322 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110538 .unused,
108323 .{ .type = .f32, .kind = .mem },110539 .unused,
108324 .unused,110540 .unused,
108325 .unused,110541 .unused,
108326 .unused,110542 .unused,
...@@ -108329,30 +110545,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108329,30 +110545,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108329 .unused,110545 .unused,
108330 },110546 },
108331 .dst_temps = .{ .mem, .unused },110547 .dst_temps = .{ .mem, .unused },
108332 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110548 .clobbers = .{ .eflags = true },
108333 .each = .{ .once = &.{110549 .each = .{ .once = &.{
108334 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110550 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108335 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110551 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
108336 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110552 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },
108337 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },110553 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108338 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },110554 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
108339 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108340 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108341 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110555 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108342 } },110556 } },
108343 }, .{110557 }, .{
108344 .required_features = .{ .avx, null, null, null },110558 .required_features = .{ .avx, null, null, null },
108345 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },110559 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
108346 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110560 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108347 .patterns = &.{110561 .patterns = &.{
108348 .{ .src = .{ .to_mem, .none, .none } },110562 .{ .src = .{ .to_mem, .none, .none } },
108349 },110563 },
108350 .call_frame = .{ .alignment = .@"16" },110564 .call_frame = .{ .alignment = .@"16" },
108351 .extra_temps = .{110565 .extra_temps = .{
108352 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110566 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108353 .{ .type = .u32, .kind = .{ .reg = .edi } },110567 .{ .type = .i32, .kind = .{ .reg = .edi } },
108354 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110568 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
108355 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110569 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108356 .unused,110570 .unused,
108357 .unused,110571 .unused,
108358 .unused,110572 .unused,
...@@ -108364,26 +110578,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108364,26 +110578,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108364 .dst_temps = .{ .mem, .unused },110578 .dst_temps = .{ .mem, .unused },
108365 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110579 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108366 .each = .{ .once = &.{110580 .each = .{ .once = &.{
108367 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110581 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108368 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110582 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108369 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110583 .{ ._, ._, .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, ._, ._ },
108371 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110585 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108372 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110586 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108373 } },110587 } },
108374 }, .{110588 }, .{
108375 .required_features = .{ .sse4_1, null, null, null },110589 .required_features = .{ .sse, null, null, null },
108376 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },110590 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
108377 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110591 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108378 .patterns = &.{110592 .patterns = &.{
108379 .{ .src = .{ .to_mem, .none, .none } },110593 .{ .src = .{ .to_mem, .none, .none } },
108380 },110594 },
108381 .call_frame = .{ .alignment = .@"16" },110595 .call_frame = .{ .alignment = .@"16" },
108382 .extra_temps = .{110596 .extra_temps = .{
108383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110597 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108384 .{ .type = .u32, .kind = .{ .reg = .edi } },110598 .{ .type = .i32, .kind = .{ .reg = .edi } },
108385 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110599 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
108386 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110600 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108387 .unused,110601 .unused,
108388 .unused,110602 .unused,
108389 .unused,110603 .unused,
...@@ -108395,17 +110609,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108395,17 +110609,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108395 .dst_temps = .{ .mem, .unused },110609 .dst_temps = .{ .mem, .unused },
108396 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110610 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108397 .each = .{ .once = &.{110611 .each = .{ .once = &.{
108398 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110612 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108399 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110613 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108400 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110614 .{ ._, ._, .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, ._, ._ },
108402 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110616 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108403 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110617 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108404 } },110618 } },
108405 }, .{110619 }, .{
108406 .required_features = .{ .sse2, null, null, null },110620 .required_features = .{ .avx, null, null, null },
108407 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },110621 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108408 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110622 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108409 .patterns = &.{110623 .patterns = &.{
108410 .{ .src = .{ .to_mem, .none, .none } },110624 .{ .src = .{ .to_mem, .none, .none } },
108411 },110625 },
...@@ -108413,8 +110627,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108413,8 +110627,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108413 .extra_temps = .{110627 .extra_temps = .{
108414 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108415 .{ .type = .u32, .kind = .{ .reg = .edi } },110629 .{ .type = .u32, .kind = .{ .reg = .edi } },
108416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110630 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108417 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110631 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108418 .unused,110632 .unused,
108419 .unused,110633 .unused,
108420 .unused,110634 .unused,
...@@ -108426,18 +110640,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108426,18 +110640,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108426 .dst_temps = .{ .mem, .unused },110640 .dst_temps = .{ .mem, .unused },
108427 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108428 .each = .{ .once = &.{110642 .each = .{ .once = &.{
108429 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110643 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108430 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110644 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108431 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110645 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108432 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },110646 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108433 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108434 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110647 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110648 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108436 } },110649 } },
108437 }, .{110650 }, .{
108438 .required_features = .{ .sse, null, null, null },110651 .required_features = .{ .sse, null, null, null },
108439 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },110652 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
108440 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110653 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108441 .patterns = &.{110654 .patterns = &.{
108442 .{ .src = .{ .to_mem, .none, .none } },110655 .{ .src = .{ .to_mem, .none, .none } },
108443 },110656 },
...@@ -108445,9 +110658,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108445,9 +110658,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108445 .extra_temps = .{110658 .extra_temps = .{
108446 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110659 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108447 .{ .type = .u32, .kind = .{ .reg = .edi } },110660 .{ .type = .u32, .kind = .{ .reg = .edi } },
108448 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsihf" } } },110661 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108449 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110662 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108450 .{ .type = .f32, .kind = .mem },110663 .unused,
108451 .unused,110664 .unused,
108452 .unused,110665 .unused,
108453 .unused,110666 .unused,
...@@ -108458,121 +110671,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108458,121 +110671,61 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108458 .dst_temps = .{ .mem, .unused },110671 .dst_temps = .{ .mem, .unused },
108459 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110672 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108460 .each = .{ .once = &.{110673 .each = .{ .once = &.{
108461 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110674 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108462 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"2", .tmp0, .add_unaligned_size), ._, ._ },110675 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
108463 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110676 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108464 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },110677 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108465 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108466 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108467 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },110678 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108468 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110679 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108469 } },110680 } },
108470 }, .{110681 }, .{
108471 .required_features = .{ .@"64bit", .f16c, null, null },110682 .required_features = .{ .avx, null, null, null },
108472 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },110683 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108473 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110684 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108474 .patterns = &.{110685 .patterns = &.{
108475 .{ .src = .{ .to_mem, .none, .none } },110686 .{ .src = .{ .mem, .none, .none } },
108476 },110687 .{ .src = .{ .to_sse, .none, .none } },
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,
108489 },110688 },
108490 .dst_temps = .{ .mem, .unused },110689 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108491 .clobbers = .{ .eflags = true },
108492 .each = .{ .once = &.{110690 .each = .{ .once = &.{
108493 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110691 .{ ._, .v_ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
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", ._, ._, ._ },
108500 } },110692 } },
108501 }, .{110693 }, .{
108502 .required_features = .{ .@"64bit", .avx, null, null },110694 .required_features = .{ .sse2, null, null, null },
108503 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },110695 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108504 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110696 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108505 .patterns = &.{110697 .patterns = &.{
108506 .{ .src = .{ .to_mem, .none, .none } },110698 .{ .src = .{ .mem, .none, .none } },
108507 },110699 .{ .src = .{ .to_sse, .none, .none } },
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,
108521 },110700 },
108522 .dst_temps = .{ .mem, .unused },110701 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108523 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108524 .each = .{ .once = &.{110702 .each = .{ .once = &.{
108525 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110703 .{ ._, ._ps, .cvtdq2, .dst0x, .src0x, ._, ._ },
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", ._, ._, ._ },
108531 } },110704 } },
108532 }, .{110705 }, .{
108533 .required_features = .{ .@"64bit", .sse4_1, null, null },110706 .required_features = .{ .avx2, null, null, null },
108534 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },110707 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
108535 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110708 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108536 .patterns = &.{110709 .patterns = &.{
108537 .{ .src = .{ .to_mem, .none, .none } },110710 .{ .src = .{ .mem, .none, .none } },
108538 },110711 .{ .src = .{ .to_sse, .none, .none } },
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,
108552 },110712 },
108553 .dst_temps = .{ .mem, .unused },110713 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
108554 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108555 .each = .{ .once = &.{110714 .each = .{ .once = &.{
108556 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110715 .{ ._, .v_ps, .cvtdq2, .dst0y, .src0y, ._, ._ },
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", ._, ._, ._ },
108562 } },110716 } },
108563 }, .{110717 }, .{
108564 .required_features = .{ .@"64bit", .sse2, null, null },110718 .required_features = .{ .avx2, null, null, null },
108565 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },110719 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },
108566 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110720 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
108567 .patterns = &.{110721 .patterns = &.{
108568 .{ .src = .{ .to_mem, .none, .none } },110722 .{ .src = .{ .to_mem, .none, .none } },
108569 },110723 },
108570 .call_frame = .{ .alignment = .@"16" },
108571 .extra_temps = .{110724 .extra_temps = .{
108572 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110725 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108573 .{ .type = .i64, .kind = .{ .reg = .rdi } },110726 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
108574 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },110727 .unused,
108575 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110728 .unused,
108576 .unused,110729 .unused,
108577 .unused,110730 .unused,
108578 .unused,110731 .unused,
...@@ -108582,30 +110735,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108582,30 +110735,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108582 .unused,110735 .unused,
108583 },110736 },
108584 .dst_temps = .{ .mem, .unused },110737 .dst_temps = .{ .mem, .unused },
108585 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110738 .clobbers = .{ .eflags = true },
108586 .each = .{ .once = &.{110739 .each = .{ .once = &.{
108587 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110740 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
108588 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110741 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
108589 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110742 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
108590 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },110743 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
108591 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108592 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108593 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110744 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108594 } },110745 } },
108595 }, .{110746 }, .{
108596 .required_features = .{ .@"64bit", .sse, null, null },110747 .required_features = .{ .avx, null, null, null },
108597 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },110748 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108598 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110749 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108599 .patterns = &.{110750 .patterns = &.{
108600 .{ .src = .{ .to_mem, .none, .none } },110751 .{ .src = .{ .to_mem, .none, .none } },
108601 },110752 },
108602 .call_frame = .{ .alignment = .@"16" },
108603 .extra_temps = .{110753 .extra_temps = .{
108604 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110754 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108605 .{ .type = .i64, .kind = .{ .reg = .rdi } },110755 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108606 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdihf" } } },110756 .unused,
108607 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110757 .unused,
108608 .{ .type = .f32, .kind = .mem },110758 .unused,
108609 .unused,110759 .unused,
108610 .unused,110760 .unused,
108611 .unused,110761 .unused,
...@@ -108614,30 +110764,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108614,30 +110764,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108614 .unused,110764 .unused,
108615 },110765 },
108616 .dst_temps = .{ .mem, .unused },110766 .dst_temps = .{ .mem, .unused },
108617 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110767 .clobbers = .{ .eflags = true },
108618 .each = .{ .once = &.{110768 .each = .{ .once = &.{
108619 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110769 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108620 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110770 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108621 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110771 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108622 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },110772 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108623 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },
108624 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108625 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108626 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110773 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108627 } },110774 } },
108628 }, .{110775 }, .{
108629 .required_features = .{ .@"64bit", .avx, null, null },110776 .required_features = .{ .sse2, null, null, null },
108630 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },110777 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
108631 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110778 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
108632 .patterns = &.{110779 .patterns = &.{
108633 .{ .src = .{ .to_mem, .none, .none } },110780 .{ .src = .{ .to_mem, .none, .none } },
108634 },110781 },
108635 .call_frame = .{ .alignment = .@"16" },
108636 .extra_temps = .{110782 .extra_temps = .{
108637 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110783 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108638 .{ .type = .u64, .kind = .{ .reg = .rdi } },110784 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
108639 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },110785 .unused,
108640 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110786 .unused,
108641 .unused,110787 .unused,
108642 .unused,110788 .unused,
108643 .unused,110789 .unused,
...@@ -108647,28 +110793,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108647,28 +110793,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108647 .unused,110793 .unused,
108648 },110794 },
108649 .dst_temps = .{ .mem, .unused },110795 .dst_temps = .{ .mem, .unused },
108650 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110796 .clobbers = .{ .eflags = true },
108651 .each = .{ .once = &.{110797 .each = .{ .once = &.{
108652 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110798 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108653 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110799 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
108654 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110800 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108655 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110801 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
108656 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108657 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110802 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108658 } },110803 } },
108659 }, .{110804 }, .{
108660 .required_features = .{ .@"64bit", .sse4_1, null, null },110805 .required_features = .{ .sse, null, null, null },
108661 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },110806 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108662 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110807 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108663 .patterns = &.{110808 .patterns = &.{
108664 .{ .src = .{ .to_mem, .none, .none } },110809 .{ .src = .{ .to_mem, .none, .none } },
108665 },110810 },
108666 .call_frame = .{ .alignment = .@"16" },
108667 .extra_temps = .{110811 .extra_temps = .{
108668 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108669 .{ .type = .u64, .kind = .{ .reg = .rdi } },110813 .{ .type = .f32, .kind = .{ .rc = .sse } },
108670 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },110814 .unused,
108671 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110815 .unused,
108672 .unused,110816 .unused,
108673 .unused,110817 .unused,
108674 .unused,110818 .unused,
...@@ -108678,28 +110822,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108678,28 +110822,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108678 .unused,110822 .unused,
108679 },110823 },
108680 .dst_temps = .{ .mem, .unused },110824 .dst_temps = .{ .mem, .unused },
108681 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110825 .clobbers = .{ .eflags = true },
108682 .each = .{ .once = &.{110826 .each = .{ .once = &.{
108683 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110827 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108684 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },110828 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
108685 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110829 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108686 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp3x, .ui(0), ._ },110830 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108687 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108688 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110831 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108689 } },110832 } },
108690 }, .{110833 }, .{
108691 .required_features = .{ .@"64bit", .sse2, null, null },110834 .required_features = .{ .avx, null, null, null },
108692 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },110835 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108693 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110836 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108694 .patterns = &.{110837 .patterns = &.{
108695 .{ .src = .{ .to_mem, .none, .none } },110838 .{ .src = .{ .to_mem, .none, .none } },
108696 },110839 },
108697 .call_frame = .{ .alignment = .@"16" },110840 .call_frame = .{ .alignment = .@"16" },
108698 .extra_temps = .{110841 .extra_temps = .{
108699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108700 .{ .type = .u64, .kind = .{ .reg = .rdi } },110843 .{ .type = .i32, .kind = .{ .reg = .edi } },
108701 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },110844 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
108702 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110845 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108703 .unused,110846 .unused,
108704 .unused,110847 .unused,
108705 .unused,110848 .unused,
...@@ -108712,27 +110855,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108712,27 +110855,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108712 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110855 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108713 .each = .{ .once = &.{110856 .each = .{ .once = &.{
108714 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110857 .{ ._, ._, .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), ._, ._ },
108716 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110859 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108717 .{ ._, .p_w, .extr, .tmp1d, .tmp3x, .ui(0), ._ },110860 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108718 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },110861 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108719 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108720 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110862 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108721 } },110863 } },
108722 }, .{110864 }, .{
108723 .required_features = .{ .@"64bit", .sse, null, null },110865 .required_features = .{ .sse, null, null, null },
108724 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },110866 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108725 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110867 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108726 .patterns = &.{110868 .patterns = &.{
108727 .{ .src = .{ .to_mem, .none, .none } },110869 .{ .src = .{ .to_mem, .none, .none } },
108728 },110870 },
108729 .call_frame = .{ .alignment = .@"16" },110871 .call_frame = .{ .alignment = .@"16" },
108730 .extra_temps = .{110872 .extra_temps = .{
108731 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110873 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108732 .{ .type = .u64, .kind = .{ .reg = .rdi } },110874 .{ .type = .i32, .kind = .{ .reg = .edi } },
108733 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundihf" } } },110875 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },
108734 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110876 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108735 .{ .type = .f32, .kind = .mem },110877 .unused,
108736 .unused,110878 .unused,
108737 .unused,110879 .unused,
108738 .unused,110880 .unused,
...@@ -108744,28 +110886,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108744,28 +110886,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108744 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110886 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108745 .each = .{ .once = &.{110887 .each = .{ .once = &.{
108746 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110888 .{ ._, ._, .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), ._, ._ },
108748 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },110890 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108749 .{ ._, ._ss, .mov, .tmp4d, .tmp3d, ._, ._ },110891 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108750 .{ ._, ._, .mov, .tmp1d, .tmp4d, ._, ._ },110892 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108751 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108752 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108753 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110893 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108754 } },110894 } },
108755 }, .{110895 }, .{
108756 .required_features = .{ .@"64bit", .avx, null, null },110896 .required_features = .{ .avx, null, null, null },
108757 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },110897 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108758 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110898 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108759 .patterns = &.{110899 .patterns = &.{
108760 .{ .src = .{ .to_mem, .none, .none } },110900 .{ .src = .{ .to_mem, .none, .none } },
108761 },110901 },
108762 .call_frame = .{ .alignment = .@"16" },110902 .call_frame = .{ .alignment = .@"16" },
108763 .extra_temps = .{110903 .extra_temps = .{
108764 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110904 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108765 .{ .type = .u64, .kind = .{ .reg = .rdi } },110905 .{ .type = .u32, .kind = .{ .reg = .edi } },
108766 .{ .type = .i64, .kind = .{ .reg = .rsi } },110906 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108767 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110907 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108768 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110908 .unused,
108769 .unused,110909 .unused,
108770 .unused,110910 .unused,
108771 .unused,110911 .unused,
...@@ -108777,27 +110917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108777,27 +110917,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108777 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110917 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108778 .each = .{ .once = &.{110918 .each = .{ .once = &.{
108779 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110919 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108780 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },110920 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
108781 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },110921 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108782 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },110922 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108783 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },110923 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108784 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108785 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110924 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108786 } },110925 } },
108787 }, .{110926 }, .{
108788 .required_features = .{ .@"64bit", .sse4_1, null, null },110927 .required_features = .{ .sse, null, null, null },
108789 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },110928 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
108790 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110929 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108791 .patterns = &.{110930 .patterns = &.{
108792 .{ .src = .{ .to_mem, .none, .none } },110931 .{ .src = .{ .to_mem, .none, .none } },
108793 },110932 },
108794 .call_frame = .{ .alignment = .@"16" },110933 .call_frame = .{ .alignment = .@"16" },
108795 .extra_temps = .{110934 .extra_temps = .{
108796 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108797 .{ .type = .u64, .kind = .{ .reg = .rdi } },110936 .{ .type = .u32, .kind = .{ .reg = .edi } },
108798 .{ .type = .i64, .kind = .{ .reg = .rsi } },110937 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },
108799 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110938 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108800 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110939 .unused,
108801 .unused,110940 .unused,
108802 .unused,110941 .unused,
108803 .unused,110942 .unused,
...@@ -108809,27 +110948,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108809,27 +110948,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108809 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108810 .each = .{ .once = &.{110949 .each = .{ .once = &.{
108811 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108812 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },110951 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
108813 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },110952 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108814 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },110953 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108815 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },110954 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108816 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108817 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110955 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108818 } },110956 } },
108819 }, .{110957 }, .{
108820 .required_features = .{ .@"64bit", .sse2, null, null },110958 .required_features = .{ .@"64bit", .avx, null, null },
108821 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },110959 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108822 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110960 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108823 .patterns = &.{110961 .patterns = &.{
108824 .{ .src = .{ .to_mem, .none, .none } },110962 .{ .src = .{ .to_mem, .none, .none } },
108825 },110963 },
108826 .call_frame = .{ .alignment = .@"16" },
108827 .extra_temps = .{110964 .extra_temps = .{
108828 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110965 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108829 .{ .type = .u64, .kind = .{ .reg = .rdi } },110966 .{ .type = .f32, .kind = .{ .rc = .sse } },
108830 .{ .type = .i64, .kind = .{ .reg = .rsi } },110967 .unused,
108831 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110968 .unused,
108832 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110969 .unused,
108833 .unused,110970 .unused,
108834 .unused,110971 .unused,
108835 .unused,110972 .unused,
...@@ -108838,32 +110975,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108838,32 +110975,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108838 .unused,110975 .unused,
108839 },110976 },
108840 .dst_temps = .{ .mem, .unused },110977 .dst_temps = .{ .mem, .unused },
108841 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },110978 .clobbers = .{ .eflags = true },
108842 .each = .{ .once = &.{110979 .each = .{ .once = &.{
108843 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },110980 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108844 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },110981 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
108845 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },110982 .{ ._, .v_ss, .cvtsi2, .tmp1x, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._ },
108846 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },110983 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108847 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },110984 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108848 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108849 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108850 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },110985 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108851 } },110986 } },
108852 }, .{110987 }, .{
108853 .required_features = .{ .@"64bit", .sse, null, null },110988 .required_features = .{ .@"64bit", .sse, null, null },
108854 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },110989 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108855 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },110990 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108856 .patterns = &.{110991 .patterns = &.{
108857 .{ .src = .{ .to_mem, .none, .none } },110992 .{ .src = .{ .to_mem, .none, .none } },
108858 },110993 },
108859 .call_frame = .{ .alignment = .@"16" },
108860 .extra_temps = .{110994 .extra_temps = .{
108861 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },110995 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108862 .{ .type = .u64, .kind = .{ .reg = .rdi } },110996 .{ .type = .f32, .kind = .{ .rc = .sse } },
108863 .{ .type = .i64, .kind = .{ .reg = .rsi } },110997 .unused,
108864 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattihf" } } },110998 .unused,
108865 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },110999 .unused,
108866 .{ .type = .f32, .kind = .mem },111000 .unused,
108867 .unused,111001 .unused,
108868 .unused,111002 .unused,
108869 .unused,111003 .unused,
...@@ -108871,32 +111005,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108871,32 +111005,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108871 .unused,111005 .unused,
108872 },111006 },
108873 .dst_temps = .{ .mem, .unused },111007 .dst_temps = .{ .mem, .unused },
108874 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111008 .clobbers = .{ .eflags = true },
108875 .each = .{ .once = &.{111009 .each = .{ .once = &.{
108876 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111010 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108877 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },111011 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
108878 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },111012 .{ ._, ._ss, .cvtsi2, .tmp1x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108879 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },111013 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
108880 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },111014 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108881 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
108882 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108883 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108884 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111015 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108885 } },111016 } },
108886 }, .{111017 }, .{
108887 .required_features = .{ .@"64bit", .avx, null, null },111018 .required_features = .{ .@"64bit", .avx, null, null },
108888 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },111019 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108889 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111020 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108890 .patterns = &.{111021 .patterns = &.{
108891 .{ .src = .{ .to_mem, .none, .none } },111022 .{ .src = .{ .to_mem, .none, .none } },
108892 },111023 },
108893 .call_frame = .{ .alignment = .@"16" },111024 .call_frame = .{ .alignment = .@"16" },
108894 .extra_temps = .{111025 .extra_temps = .{
108895 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111026 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108896 .{ .type = .u64, .kind = .{ .reg = .rdi } },111027 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108897 .{ .type = .u64, .kind = .{ .reg = .rsi } },111028 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
108898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },111029 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108899 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111030 .unused,
108900 .unused,111031 .unused,
108901 .unused,111032 .unused,
108902 .unused,111033 .unused,
...@@ -108908,27 +111039,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108908,27 +111039,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108908 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108909 .each = .{ .once = &.{111040 .each = .{ .once = &.{
108910 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111041 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108911 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },111042 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108912 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },111043 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108913 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },111044 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108914 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },111045 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108915 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111046 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108917 } },111047 } },
108918 }, .{111048 }, .{
108919 .required_features = .{ .@"64bit", .sse4_1, null, null },111049 .required_features = .{ .@"64bit", .sse, null, null },
108920 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },111050 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108921 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111051 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108922 .patterns = &.{111052 .patterns = &.{
108923 .{ .src = .{ .to_mem, .none, .none } },111053 .{ .src = .{ .to_mem, .none, .none } },
108924 },111054 },
108925 .call_frame = .{ .alignment = .@"16" },111055 .call_frame = .{ .alignment = .@"16" },
108926 .extra_temps = .{111056 .extra_temps = .{
108927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111057 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108928 .{ .type = .u64, .kind = .{ .reg = .rdi } },111058 .{ .type = .i64, .kind = .{ .reg = .rdi } },
108929 .{ .type = .u64, .kind = .{ .reg = .rsi } },111059 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdisf" } } },
108930 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },111060 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108931 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111061 .unused,
108932 .unused,111062 .unused,
108933 .unused,111063 .unused,
108934 .unused,111064 .unused,
...@@ -108940,17 +111070,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108940,17 +111070,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111070 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108941 .each = .{ .once = &.{111071 .each = .{ .once = &.{
108942 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111072 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108943 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },111073 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108944 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },111074 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108945 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },111075 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108946 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4x, .ui(0), ._ },111076 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108947 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108948 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111077 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108949 } },111078 } },
108950 }, .{111079 }, .{
108951 .required_features = .{ .@"64bit", .sse2, null, null },111080 .required_features = .{ .@"64bit", .avx, null, null },
108952 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },111081 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108953 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111082 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108954 .patterns = &.{111083 .patterns = &.{
108955 .{ .src = .{ .to_mem, .none, .none } },111084 .{ .src = .{ .to_mem, .none, .none } },
108956 },111085 },
...@@ -108958,9 +111087,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108958,9 +111087,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108958 .extra_temps = .{111087 .extra_temps = .{
108959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111088 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108960 .{ .type = .u64, .kind = .{ .reg = .rdi } },111089 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108961 .{ .type = .u64, .kind = .{ .reg = .rsi } },111090 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
108962 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },111091 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108963 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111092 .unused,
108964 .unused,111093 .unused,
108965 .unused,111094 .unused,
108966 .unused,111095 .unused,
...@@ -108972,18 +111101,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108972,18 +111101,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111101 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
108973 .each = .{ .once = &.{111102 .each = .{ .once = &.{
108974 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111103 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
108975 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },111104 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
108976 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },111105 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
108977 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },111106 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
108978 .{ ._, .p_w, .extr, .tmp1d, .tmp4x, .ui(0), ._ },111107 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
108979 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
108980 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
108981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111108 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
108982 } },111109 } },
108983 }, .{111110 }, .{
108984 .required_features = .{ .@"64bit", .sse, null, null },111111 .required_features = .{ .@"64bit", .sse, null, null },
108985 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },111112 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
108986 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111113 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
108987 .patterns = &.{111114 .patterns = &.{
108988 .{ .src = .{ .to_mem, .none, .none } },111115 .{ .src = .{ .to_mem, .none, .none } },
108989 },111116 },
...@@ -108991,10 +111118,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -108991,10 +111118,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
108991 .extra_temps = .{111118 .extra_temps = .{
108992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111119 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
108993 .{ .type = .u64, .kind = .{ .reg = .rdi } },111120 .{ .type = .u64, .kind = .{ .reg = .rdi } },
108994 .{ .type = .u64, .kind = .{ .reg = .rsi } },111121 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundisf" } } },
108995 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntihf" } } },111122 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
108996 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111123 .unused,
108997 .{ .type = .f32, .kind = .mem },111124 .unused,
108998 .unused,111125 .unused,
108999 .unused,111126 .unused,
109000 .unused,111127 .unused,
...@@ -109005,30 +111132,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109005,30 +111132,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109005 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111132 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109006 .each = .{ .once = &.{111133 .each = .{ .once = &.{
109007 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111134 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109008 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._ },111135 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
109009 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"8", .tmp0, .add_unaligned_size, 8), ._, ._ },111136 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
109010 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },111137 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
109011 .{ ._, ._ss, .mov, .tmp5d, .tmp4d, ._, ._ },111138 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109012 .{ ._, ._, .mov, .tmp1d, .tmp5d, ._, ._ },
109013 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
109014 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
109015 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111139 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109016 } },111140 } },
109017 }, .{111141 }, .{
109018 .required_features = .{ .@"64bit", .avx, null, null },111142 .required_features = .{ .@"64bit", .avx, null, null },
109019 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },111143 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
109020 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111144 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109021 .patterns = &.{111145 .patterns = &.{
109022 .{ .src = .{ .to_mem, .none, .none } },111146 .{ .src = .{ .to_mem, .none, .none } },
109023 },111147 },
109024 .call_frame = .{ .alignment = .@"16" },111148 .call_frame = .{ .alignment = .@"16" },
109025 .extra_temps = .{111149 .extra_temps = .{
109026 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109027 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111150 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109028 .{ .type = .usize, .kind = .{ .reg = .rdi } },111151 .{ .type = .u64, .kind = .{ .reg = .rdi } },
109029 .{ .type = .usize, .kind = .{ .reg = .rsi } },111152 .{ .type = .i64, .kind = .{ .reg = .rsi } },
109030 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },111153 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
109031 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111154 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111155 .unused,
109032 .unused,111156 .unused,
109033 .unused,111157 .unused,
109034 .unused,111158 .unused,
...@@ -109038,31 +111162,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109038,31 +111162,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109038 .dst_temps = .{ .mem, .unused },111162 .dst_temps = .{ .mem, .unused },
109039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111163 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109040 .each = .{ .once = &.{111164 .each = .{ .once = &.{
109041 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },111165 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109042 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111166 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
109043 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111167 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
109044 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111168 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109045 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111169 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
109046 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },111170 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109047 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109048 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
109049 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111171 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109050 } },111172 } },
109051 }, .{111173 }, .{
109052 .required_features = .{ .@"64bit", .sse4_1, null, null },111174 .required_features = .{ .@"64bit", .sse, null, null },
109053 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },111175 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
109054 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111176 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109055 .patterns = &.{111177 .patterns = &.{
109056 .{ .src = .{ .to_mem, .none, .none } },111178 .{ .src = .{ .to_mem, .none, .none } },
109057 },111179 },
109058 .call_frame = .{ .alignment = .@"16" },111180 .call_frame = .{ .alignment = .@"16" },
109059 .extra_temps = .{111181 .extra_temps = .{
109060 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111182 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109062 .{ .type = .usize, .kind = .{ .reg = .rdi } },111183 .{ .type = .u64, .kind = .{ .reg = .rdi } },
109063 .{ .type = .usize, .kind = .{ .reg = .rsi } },111184 .{ .type = .i64, .kind = .{ .reg = .rsi } },
109064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },111185 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },
109065 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111186 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111187 .unused,
109066 .unused,111188 .unused,
109067 .unused,111189 .unused,
109068 .unused,111190 .unused,
...@@ -109072,31 +111194,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109072,31 +111194,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109072 .dst_temps = .{ .mem, .unused },111194 .dst_temps = .{ .mem, .unused },
109073 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111195 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109074 .each = .{ .once = &.{111196 .each = .{ .once = &.{
109075 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },111197 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109076 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111198 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
109077 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111199 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
109078 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111200 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109079 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111201 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
109080 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp5x, .ui(0), ._ },111202 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109081 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109082 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
109083 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111203 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109084 } },111204 } },
109085 }, .{111205 }, .{
109086 .required_features = .{ .@"64bit", .sse2, null, null },111206 .required_features = .{ .@"64bit", .avx, null, null },
109087 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },111207 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
109088 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111208 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109089 .patterns = &.{111209 .patterns = &.{
109090 .{ .src = .{ .to_mem, .none, .none } },111210 .{ .src = .{ .to_mem, .none, .none } },
109091 },111211 },
109092 .call_frame = .{ .alignment = .@"16" },111212 .call_frame = .{ .alignment = .@"16" },
109093 .extra_temps = .{111213 .extra_temps = .{
109094 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109095 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111214 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109096 .{ .type = .usize, .kind = .{ .reg = .rdi } },111215 .{ .type = .u64, .kind = .{ .reg = .rdi } },
109097 .{ .type = .usize, .kind = .{ .reg = .rsi } },111216 .{ .type = .u64, .kind = .{ .reg = .rsi } },
109098 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },111217 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
109099 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111218 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111219 .unused,
109100 .unused,111220 .unused,
109101 .unused,111221 .unused,
109102 .unused,111222 .unused,
...@@ -109106,33 +111226,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109106,33 +111226,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109106 .dst_temps = .{ .mem, .unused },111226 .dst_temps = .{ .mem, .unused },
109107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111227 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109108 .each = .{ .once = &.{111228 .each = .{ .once = &.{
109109 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },111229 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109110 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111230 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
109111 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111231 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
109112 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111232 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109113 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111233 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
109114 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },111234 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
109115 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109116 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109117 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },
109118 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111235 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109119 } },111236 } },
109120 }, .{111237 }, .{
109121 .required_features = .{ .@"64bit", .sse, null, null },111238 .required_features = .{ .@"64bit", .sse, null, null },
109122 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },111239 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
109123 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111240 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109124 .patterns = &.{111241 .patterns = &.{
109125 .{ .src = .{ .to_mem, .none, .none } },111242 .{ .src = .{ .to_mem, .none, .none } },
109126 },111243 },
109127 .call_frame = .{ .alignment = .@"16" },111244 .call_frame = .{ .alignment = .@"16" },
109128 .extra_temps = .{111245 .extra_temps = .{
109129 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
109130 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111246 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109131 .{ .type = .usize, .kind = .{ .reg = .rdi } },111247 .{ .type = .u64, .kind = .{ .reg = .rdi } },
109132 .{ .type = .usize, .kind = .{ .reg = .rsi } },111248 .{ .type = .u64, .kind = .{ .reg = .rsi } },
109133 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateihf" } } },111249 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },
109134 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111250 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109135 .{ .type = .f32, .kind = .mem },111251 .unused,
111252 .unused,
109136 .unused,111253 .unused,
109137 .unused,111254 .unused,
109138 .unused,111255 .unused,
...@@ -109141,22 +111258,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109141,22 +111258,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109141 .dst_temps = .{ .mem, .unused },111258 .dst_temps = .{ .mem, .unused },
109142 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111259 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109143 .each = .{ .once = &.{111260 .each = .{ .once = &.{
109144 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },111261 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
109145 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },111262 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },
109146 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111263 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },
109147 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111264 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
109148 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111265 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
109149 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },111266 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
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), ._, ._ },
109154 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111267 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109155 } },111268 } },
109156 }, .{111269 }, .{
109157 .required_features = .{ .@"64bit", .avx, null, null },111270 .required_features = .{ .@"64bit", .avx, null, null },
109158 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },111271 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109159 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111272 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109160 .patterns = &.{111273 .patterns = &.{
109161 .{ .src = .{ .to_mem, .none, .none } },111274 .{ .src = .{ .to_mem, .none, .none } },
109162 },111275 },
...@@ -109166,8 +111279,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109166,8 +111279,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109166 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109167 .{ .type = .usize, .kind = .{ .reg = .rdi } },111280 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109168 .{ .type = .usize, .kind = .{ .reg = .rsi } },111281 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109169 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },111282 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
109170 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111283 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109171 .unused,111284 .unused,
109172 .unused,111285 .unused,
109173 .unused,111286 .unused,
...@@ -109182,15 +111295,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109182,15 +111295,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109182 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111295 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109183 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111296 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109184 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111297 .{ ._, ._, .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, ._, ._ },
109186 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },111299 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109187 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },111300 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109188 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109189 } },111302 } },
109190 }, .{111303 }, .{
109191 .required_features = .{ .@"64bit", .sse4_1, null, null },111304 .required_features = .{ .@"64bit", .sse, null, null },
109192 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },111305 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
109193 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any },111306 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },
109194 .patterns = &.{111307 .patterns = &.{
109195 .{ .src = .{ .to_mem, .none, .none } },111308 .{ .src = .{ .to_mem, .none, .none } },
109196 },111309 },
...@@ -109200,8 +111313,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109200,8 +111313,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109200 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109201 .{ .type = .usize, .kind = .{ .reg = .rdi } },111314 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109202 .{ .type = .usize, .kind = .{ .reg = .rsi } },111315 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109203 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },111316 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
109204 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111317 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109205 .unused,111318 .unused,
109206 .unused,111319 .unused,
109207 .unused,111320 .unused,
...@@ -109216,15 +111329,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109216,15 +111329,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109216 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111329 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109217 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111330 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109218 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111331 .{ ._, ._, .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, ._, ._ },
109220 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },111333 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109221 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },111334 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109222 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111335 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109223 } },111336 } },
109224 }, .{111337 }, .{
109225 .required_features = .{ .@"64bit", .sse2, null, null },111338 .required_features = .{ .@"64bit", .avx, null, null },
109226 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },111339 .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 },
109228 .patterns = &.{111341 .patterns = &.{
109229 .{ .src = .{ .to_mem, .none, .none } },111342 .{ .src = .{ .to_mem, .none, .none } },
109230 },111343 },
...@@ -109234,8 +111347,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109234,8 +111347,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109234 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109235 .{ .type = .usize, .kind = .{ .reg = .rdi } },111348 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109236 .{ .type = .usize, .kind = .{ .reg = .rsi } },111349 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109237 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },111350 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
109238 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111351 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109239 .unused,111352 .unused,
109240 .unused,111353 .unused,
109241 .unused,111354 .unused,
...@@ -109250,16 +111363,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109250,16 +111363,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109250 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111363 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109251 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111364 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109252 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111365 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109253 .{ ._, .p_w, .extr, .tmp2d, .tmp5x, .ui(0), ._ },111366 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
109254 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109255 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },111367 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109256 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },111368 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109257 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111369 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109258 } },111370 } },
109259 }, .{111371 }, .{
109260 .required_features = .{ .@"64bit", .sse, null, null },111372 .required_features = .{ .@"64bit", .sse, null, null },
109261 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },111373 .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 },
109263 .patterns = &.{111375 .patterns = &.{
109264 .{ .src = .{ .to_mem, .none, .none } },111376 .{ .src = .{ .to_mem, .none, .none } },
109265 },111377 },
...@@ -109269,9 +111381,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109269,9 +111381,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111381 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
109270 .{ .type = .usize, .kind = .{ .reg = .rdi } },111382 .{ .type = .usize, .kind = .{ .reg = .rdi } },
109271 .{ .type = .usize, .kind = .{ .reg = .rsi } },111383 .{ .type = .usize, .kind = .{ .reg = .rsi } },
109272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneihf" } } },111384 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },
109273 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },111385 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
109274 .{ .type = .f32, .kind = .mem },111386 .unused,
109275 .unused,111387 .unused,
109276 .unused,111388 .unused,
109277 .unused,111389 .unused,
...@@ -109285,23 +111397,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109285,23 +111397,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109285 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },111397 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
109286 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },111398 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
109287 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },111399 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
109288 .{ ._, ._ss, .mov, .tmp6d, .tmp5d, ._, ._ },111400 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
109289 .{ ._, ._, .mov, .tmp2d, .tmp6d, ._, ._ },
109290 .{ ._, ._, .mov, .memia(.dst0w, .tmp1, .add_unaligned_size), .tmp2w, ._, ._ },
109291 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },111401 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
109292 .{ ._, ._, .add, .tmp1p, .si(2), ._, ._ },111402 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
109293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111403 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109294 } },111404 } },
109295 }, .{111405 }, .{
109296 .required_features = .{ .avx, null, null, null },111406 .required_features = .{ .avx, null, null, null },
109297 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },111407 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109298 .dst_constraints = .{ .{ .float = .dword }, .any },111408 .dst_constraints = .{ .{ .float = .qword }, .any },
109299 .patterns = &.{111409 .patterns = &.{
109300 .{ .src = .{ .mem, .none, .none } },111410 .{ .src = .{ .mem, .none, .none } },
109301 .{ .src = .{ .to_gpr, .none, .none } },111411 .{ .src = .{ .to_gpr, .none, .none } },
109302 },111412 },
109303 .extra_temps = .{111413 .extra_temps = .{
109304 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },111414 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109305 .unused,111415 .unused,
109306 .unused,111416 .unused,
109307 .unused,111417 .unused,
...@@ -109316,19 +111426,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109316,19 +111426,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109316 .dst_temps = .{ .{ .rc = .sse }, .unused },111426 .dst_temps = .{ .{ .rc = .sse }, .unused },
109317 .each = .{ .once = &.{111427 .each = .{ .once = &.{
109318 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },111428 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
109319 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },111429 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
109320 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },111430 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109321 } },111431 } },
109322 }, .{111432 }, .{
109323 .required_features = .{ .sse, null, null, null },111433 .required_features = .{ .sse2, null, null, null },
109324 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },111434 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109325 .dst_constraints = .{ .{ .float = .dword }, .any },111435 .dst_constraints = .{ .{ .float = .qword }, .any },
109326 .patterns = &.{111436 .patterns = &.{
109327 .{ .src = .{ .mem, .none, .none } },111437 .{ .src = .{ .mem, .none, .none } },
109328 .{ .src = .{ .to_gpr, .none, .none } },111438 .{ .src = .{ .to_gpr, .none, .none } },
109329 },111439 },
109330 .extra_temps = .{111440 .extra_temps = .{
109331 .{ .type = .i8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },111441 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109332 .unused,111442 .unused,
109333 .unused,111443 .unused,
109334 .unused,111444 .unused,
...@@ -109343,19 +111453,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109343,19 +111453,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109343 .dst_temps = .{ .{ .rc = .sse }, .unused },111453 .dst_temps = .{ .{ .rc = .sse }, .unused },
109344 .each = .{ .once = &.{111454 .each = .{ .once = &.{
109345 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },111455 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
109346 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },111456 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
109347 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },111457 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109348 } },111458 } },
109349 }, .{111459 }, .{
109350 .required_features = .{ .avx, null, null, null },111460 .required_features = .{ .avx, null, null, null },
109351 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },111461 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109352 .dst_constraints = .{ .{ .float = .dword }, .any },111462 .dst_constraints = .{ .{ .float = .qword }, .any },
109353 .patterns = &.{111463 .patterns = &.{
109354 .{ .src = .{ .mem, .none, .none } },111464 .{ .src = .{ .mem, .none, .none } },
109355 .{ .src = .{ .to_gpr, .none, .none } },111465 .{ .src = .{ .to_gpr, .none, .none } },
109356 },111466 },
109357 .extra_temps = .{111467 .extra_temps = .{
109358 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },111468 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109359 .unused,111469 .unused,
109360 .unused,111470 .unused,
109361 .unused,111471 .unused,
...@@ -109370,19 +111480,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109370,19 +111480,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109370 .dst_temps = .{ .{ .rc = .sse }, .unused },111480 .dst_temps = .{ .{ .rc = .sse }, .unused },
109371 .each = .{ .once = &.{111481 .each = .{ .once = &.{
109372 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },111482 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
109373 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },111483 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
109374 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },111484 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109375 } },111485 } },
109376 }, .{111486 }, .{
109377 .required_features = .{ .sse, null, null, null },111487 .required_features = .{ .sse2, null, null, null },
109378 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },111488 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109379 .dst_constraints = .{ .{ .float = .dword }, .any },111489 .dst_constraints = .{ .{ .float = .qword }, .any },
109380 .patterns = &.{111490 .patterns = &.{
109381 .{ .src = .{ .mem, .none, .none } },111491 .{ .src = .{ .mem, .none, .none } },
109382 .{ .src = .{ .to_gpr, .none, .none } },111492 .{ .src = .{ .to_gpr, .none, .none } },
109383 },111493 },
109384 .extra_temps = .{111494 .extra_temps = .{
109385 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },111495 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109386 .unused,111496 .unused,
109387 .unused,111497 .unused,
109388 .unused,111498 .unused,
...@@ -109397,13 +111507,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109397,13 +111507,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109397 .dst_temps = .{ .{ .rc = .sse }, .unused },111507 .dst_temps = .{ .{ .rc = .sse }, .unused },
109398 .each = .{ .once = &.{111508 .each = .{ .once = &.{
109399 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },111509 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
109400 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },111510 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
109401 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },111511 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109402 } },111512 } },
109403 }, .{111513 }, .{
109404 .required_features = .{ .avx, null, null, null },111514 .required_features = .{ .avx, null, null, null },
109405 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },111515 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
109406 .dst_constraints = .{ .{ .float = .dword }, .any },111516 .dst_constraints = .{ .{ .float = .qword }, .any },
109407 .patterns = &.{111517 .patterns = &.{
109408 .{ .src = .{ .mem, .none, .none } },111518 .{ .src = .{ .mem, .none, .none } },
109409 .{ .src = .{ .to_gpr, .none, .none } },111519 .{ .src = .{ .to_gpr, .none, .none } },
...@@ -109424,13 +111534,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109424,13 +111534,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109424 .dst_temps = .{ .{ .rc = .sse }, .unused },111534 .dst_temps = .{ .{ .rc = .sse }, .unused },
109425 .each = .{ .once = &.{111535 .each = .{ .once = &.{
109426 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },111536 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
109427 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },111537 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
109428 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },111538 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109429 } },111539 } },
109430 }, .{111540 }, .{
109431 .required_features = .{ .sse, null, null, null },111541 .required_features = .{ .sse2, null, null, null },
109432 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },111542 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
109433 .dst_constraints = .{ .{ .float = .dword }, .any },111543 .dst_constraints = .{ .{ .float = .qword }, .any },
109434 .patterns = &.{111544 .patterns = &.{
109435 .{ .src = .{ .mem, .none, .none } },111545 .{ .src = .{ .mem, .none, .none } },
109436 .{ .src = .{ .to_gpr, .none, .none } },111546 .{ .src = .{ .to_gpr, .none, .none } },
...@@ -109451,13 +111561,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109451,13 +111561,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109451 .dst_temps = .{ .{ .rc = .sse }, .unused },111561 .dst_temps = .{ .{ .rc = .sse }, .unused },
109452 .each = .{ .once = &.{111562 .each = .{ .once = &.{
109453 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },111563 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
109454 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },111564 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
109455 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },111565 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109456 } },111566 } },
109457 }, .{111567 }, .{
109458 .required_features = .{ .avx, null, null, null },111568 .required_features = .{ .avx, null, null, null },
109459 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },111569 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
109460 .dst_constraints = .{ .{ .float = .dword }, .any },111570 .dst_constraints = .{ .{ .float = .qword }, .any },
109461 .patterns = &.{111571 .patterns = &.{
109462 .{ .src = .{ .mem, .none, .none } },111572 .{ .src = .{ .mem, .none, .none } },
109463 .{ .src = .{ .to_gpr, .none, .none } },111573 .{ .src = .{ .to_gpr, .none, .none } },
...@@ -109478,13 +111588,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109478,13 +111588,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109478 .dst_temps = .{ .{ .rc = .sse }, .unused },111588 .dst_temps = .{ .{ .rc = .sse }, .unused },
109479 .each = .{ .once = &.{111589 .each = .{ .once = &.{
109480 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },111590 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109481 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },111591 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
109482 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },111592 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },
109483 } },111593 } },
109484 }, .{111594 }, .{
109485 .required_features = .{ .sse, null, null, null },111595 .required_features = .{ .sse2, null, null, null },
109486 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },111596 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
109487 .dst_constraints = .{ .{ .float = .dword }, .any },111597 .dst_constraints = .{ .{ .float = .qword }, .any },
109488 .patterns = &.{111598 .patterns = &.{
109489 .{ .src = .{ .mem, .none, .none } },111599 .{ .src = .{ .mem, .none, .none } },
109490 .{ .src = .{ .to_gpr, .none, .none } },111600 .{ .src = .{ .to_gpr, .none, .none } },
...@@ -109505,39 +111615,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109505,39 +111615,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109505 .dst_temps = .{ .{ .rc = .sse }, .unused },111615 .dst_temps = .{ .{ .rc = .sse }, .unused },
109506 .each = .{ .once = &.{111616 .each = .{ .once = &.{
109507 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },111617 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109508 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },111618 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
109509 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0d, ._, ._ },111619 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },
109510 } },111620 } },
109511 }, .{111621 }, .{
109512 .required_features = .{ .avx, null, null, null },111622 .required_features = .{ .avx, null, null, null },
109513 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },111623 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109514 .dst_constraints = .{ .{ .float = .dword }, .any },111624 .dst_constraints = .{ .{ .float = .qword }, .any },
109515 .patterns = &.{111625 .patterns = &.{
109516 .{ .src = .{ .mem, .none, .none } },111626 .{ .src = .{ .mem, .none, .none } },
109517 .{ .src = .{ .to_gpr, .none, .none } },111627 .{ .src = .{ .to_gpr, .none, .none } },
109518 },111628 },
109519 .dst_temps = .{ .{ .rc = .sse }, .unused },111629 .dst_temps = .{ .{ .rc = .sse }, .unused },
109520 .each = .{ .once = &.{111630 .each = .{ .once = &.{
109521 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },111631 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
109522 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },111632 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
109523 } },111633 } },
109524 }, .{111634 }, .{
109525 .required_features = .{ .sse, null, null, null },111635 .required_features = .{ .sse2, null, null, null },
109526 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },111636 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109527 .dst_constraints = .{ .{ .float = .dword }, .any },111637 .dst_constraints = .{ .{ .float = .qword }, .any },
109528 .patterns = &.{111638 .patterns = &.{
109529 .{ .src = .{ .mem, .none, .none } },111639 .{ .src = .{ .mem, .none, .none } },
109530 .{ .src = .{ .to_gpr, .none, .none } },111640 .{ .src = .{ .to_gpr, .none, .none } },
109531 },111641 },
109532 .dst_temps = .{ .{ .rc = .sse }, .unused },111642 .dst_temps = .{ .{ .rc = .sse }, .unused },
109533 .each = .{ .once = &.{111643 .each = .{ .once = &.{
109534 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },111644 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
109535 .{ ._, ._ss, .cvtsi2, .dst0x, .src0d, ._, ._ },111645 .{ ._, ._sd, .cvtsi2, .dst0x, .src0d, ._, ._ },
109536 } },111646 } },
109537 }, .{111647 }, .{
109538 .required_features = .{ .avx, null, null, null },111648 .required_features = .{ .avx, null, null, null },
109539 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },111649 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109540 .dst_constraints = .{ .{ .float = .dword }, .any },111650 .dst_constraints = .{ .{ .float = .qword }, .any },
109541 .patterns = &.{111651 .patterns = &.{
109542 .{ .src = .{ .mem, .none, .none } },111652 .{ .src = .{ .mem, .none, .none } },
109543 .{ .src = .{ .to_gpr, .none, .none } },111653 .{ .src = .{ .to_gpr, .none, .none } },
...@@ -109558,13 +111668,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109558,13 +111668,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109558 .dst_temps = .{ .{ .rc = .sse }, .unused },111668 .dst_temps = .{ .{ .rc = .sse }, .unused },
109559 .each = .{ .once = &.{111669 .each = .{ .once = &.{
109560 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },111670 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109561 .{ ._, .v_ps, .xor, .dst0x, .dst0x, .dst0x, ._ },111671 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
109562 .{ ._, .v_ss, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },111672 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
109563 } },111673 } },
109564 }, .{111674 }, .{
109565 .required_features = .{ .sse, null, null, null },111675 .required_features = .{ .sse2, null, null, null },
109566 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },111676 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109567 .dst_constraints = .{ .{ .float = .dword }, .any },111677 .dst_constraints = .{ .{ .float = .qword }, .any },
109568 .patterns = &.{111678 .patterns = &.{
109569 .{ .src = .{ .mem, .none, .none } },111679 .{ .src = .{ .mem, .none, .none } },
109570 .{ .src = .{ .to_gpr, .none, .none } },111680 .{ .src = .{ .to_gpr, .none, .none } },
...@@ -109585,117 +111695,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109585,117 +111695,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109585 .dst_temps = .{ .{ .rc = .sse }, .unused },111695 .dst_temps = .{ .{ .rc = .sse }, .unused },
109586 .each = .{ .once = &.{111696 .each = .{ .once = &.{
109587 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },111697 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109588 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },111698 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
109589 .{ ._, ._ss, .cvtsi2, .dst0x, .tmp0q, ._, ._ },111699 .{ ._, ._sd, .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, ._ },
109603 } },111700 } },
109604 }, .{111701 }, .{
109605 .required_features = .{ .@"64bit", .sse, null, null },111702 .required_features = .{ .x87, null, null, null },
109606 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },111703 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
109607 .dst_constraints = .{ .{ .float = .dword }, .any },111704 .dst_constraints = .{ .{ .float = .qword }, .any },
109608 .patterns = &.{111705 .patterns = &.{
109609 .{ .src = .{ .mem, .none, .none } },111706 .{ .src = .{ .mem, .none, .none } },
109610 .{ .src = .{ .to_gpr, .none, .none } },111707 .{ .src = .{ .to_gpr, .none, .none } },
109611 },111708 },
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" },
109695 .extra_temps = .{111709 .extra_temps = .{
109696 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattisf" } } },111710 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109697 .unused,111711 .{ .type = .i16, .kind = .mem },
109698 .unused,111712 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109699 .unused,111713 .unused,
109700 .unused,111714 .unused,
109701 .unused,111715 .unused,
...@@ -109705,23 +111719,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109705,23 +111719,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109705 .unused,111719 .unused,
109706 .unused,111720 .unused,
109707 },111721 },
109708 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111722 .dst_temps = .{ .mem, .unused },
109709 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109710 .each = .{ .once = &.{111723 .each = .{ .once = &.{
109711 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111724 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
111725 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
111726 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
111727 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109712 } },111728 } },
109713 }, .{111729 }, .{
109714 .required_features = .{ .@"64bit", .sse, null, null },111730 .required_features = .{ .x87, null, null, null },
109715 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },111731 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
109716 .dst_constraints = .{ .{ .float = .dword }, .any },111732 .dst_constraints = .{ .{ .float = .qword }, .any },
109717 .patterns = &.{111733 .patterns = &.{
109718 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },111734 .{ .src = .{ .mem, .none, .none } },
111735 .{ .src = .{ .to_gpr, .none, .none } },
109719 },111736 },
109720 .call_frame = .{ .alignment = .@"16" },
109721 .extra_temps = .{111737 .extra_temps = .{
109722 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntisf" } } },111738 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109723 .unused,111739 .{ .type = .i16, .kind = .mem },
109724 .unused,111740 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109725 .unused,111741 .unused,
109726 .unused,111742 .unused,
109727 .unused,111743 .unused,
...@@ -109731,51 +111747,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109731,51 +111747,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109731 .unused,111747 .unused,
109732 .unused,111748 .unused,
109733 },111749 },
109734 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111750 .dst_temps = .{ .mem, .unused },
109735 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
109736 .each = .{ .once = &.{111751 .each = .{ .once = &.{
109737 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },111752 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
111753 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
111754 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
111755 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109738 } },111756 } },
109739 }, .{111757 }, .{
109740 .required_features = .{ .@"64bit", .sse, null, null },111758 .required_features = .{ .x87, null, null, null },
109741 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },111759 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },
109742 .dst_constraints = .{ .{ .float = .dword }, .any },111760 .dst_constraints = .{ .{ .float = .qword }, .any },
109743 .patterns = &.{111761 .patterns = &.{
109744 .{ .src = .{ .to_mem, .none, .none } },111762 .{ .src = .{ .to_mem, .none, .none } },
109745 },111763 },
109746 .call_frame = .{ .alignment = .@"16" },
109747 .extra_temps = .{111764 .extra_temps = .{
109748 .{ .type = .usize, .kind = .{ .reg = .rdi } },111765 .{ .type = .f64, .kind = .{ .reg = .st7 } },
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,
109757 .unused,111766 .unused,
109758 .unused,111767 .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" } } },
109779 .unused,111768 .unused,
109780 .unused,111769 .unused,
109781 .unused,111770 .unused,
...@@ -109785,102 +111774,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109785,102 +111774,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109785 .unused,111774 .unused,
109786 .unused,111775 .unused,
109787 },111776 },
109788 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },111777 .dst_temps = .{ .mem, .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 },
109856 .each = .{ .once = &.{111778 .each = .{ .once = &.{
109857 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },111779 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },
109858 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },111780 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109859 } },111781 } },
109860 }, .{111782 }, .{
109861 .required_features = .{ .avx2, null, null, null },111783 .required_features = .{ .x87, null, null, null },
109862 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },111784 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },
109863 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },111785 .dst_constraints = .{ .{ .float = .qword }, .any },
109864 .patterns = &.{111786 .patterns = &.{
109865 .{ .src = .{ .mem, .none, .none } },111787 .{ .src = .{ .mem, .none, .none } },
109866 .{ .src = .{ .to_sse, .none, .none } },111788 .{ .src = .{ .to_gpr, .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 } },
109879 },111789 },
109880 .extra_temps = .{111790 .extra_temps = .{
109881 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111791 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109882 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },111792 .{ .type = .i32, .kind = .mem },
109883 .unused,111793 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109884 .unused,111794 .unused,
109885 .unused,111795 .unused,
109886 .unused,111796 .unused,
...@@ -109891,55 +111801,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109891,55 +111801,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109891 .unused,111801 .unused,
109892 },111802 },
109893 .dst_temps = .{ .mem, .unused },111803 .dst_temps = .{ .mem, .unused },
109894 .clobbers = .{ .eflags = true },
109895 .each = .{ .once = &.{111804 .each = .{ .once = &.{
109896 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111805 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
109897 .{ .@"0:", .vp_d, .movsxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },111806 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },
109898 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },111807 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },
109899 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },111808 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109900 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109901 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109902 } },111809 } },
109903 }, .{111810 }, .{
109904 .required_features = .{ .avx, null, null, null },111811 .required_features = .{ .x87, null, null, null },
109905 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },111812 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
109906 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },111813 .dst_constraints = .{ .{ .float = .qword }, .any },
109907 .patterns = &.{111814 .patterns = &.{
109908 .{ .src = .{ .to_mem, .none, .none } },111815 .{ .src = .{ .to_mem, .none, .none } },
109909 },111816 },
109910 .extra_temps = .{111817 .extra_temps = .{
109911 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111818 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109912 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
109913 .unused,
109914 .unused,
109915 .unused,
109916 .unused,
109917 .unused,
109918 .unused,
109919 .unused,
109920 .unused,
109921 .unused,111819 .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 } },
109943 .unused,111820 .unused,
109944 .unused,111821 .unused,
109945 .unused,111822 .unused,
...@@ -109951,26 +111828,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109951,26 +111828,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109951 .unused,111828 .unused,
109952 },111829 },
109953 .dst_temps = .{ .mem, .unused },111830 .dst_temps = .{ .mem, .unused },
109954 .clobbers = .{ .eflags = true },
109955 .each = .{ .once = &.{111831 .each = .{ .once = &.{
109956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111832 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },
109957 .{ .@"0:", .p_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },111833 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
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", ._, ._, ._ },
109962 } },111834 } },
109963 }, .{111835 }, .{
109964 .required_features = .{ .avx2, null, null, null },111836 .required_features = .{ .@"64bit", .x87, null, null },
109965 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .byte } }, .any, .any },111837 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
109966 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },111838 .dst_constraints = .{ .{ .float = .qword }, .any },
109967 .patterns = &.{111839 .patterns = &.{
109968 .{ .src = .{ .to_mem, .none, .none } },111840 .{ .src = .{ .mem, .none, .none } },
111841 .{ .src = .{ .to_gpr, .none, .none } },
109969 },111842 },
109970 .extra_temps = .{111843 .extra_temps = .{
109971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111844 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
109972 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },111845 .{ .type = .i64, .kind = .mem },
109973 .unused,111846 .{ .type = .f64, .kind = .{ .reg = .st7 } },
109974 .unused,111847 .unused,
109975 .unused,111848 .unused,
109976 .unused,111849 .unused,
...@@ -109981,88 +111854,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -109981,88 +111854,51 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
109981 .unused,111854 .unused,
109982 },111855 },
109983 .dst_temps = .{ .mem, .unused },111856 .dst_temps = .{ .mem, .unused },
109984 .clobbers = .{ .eflags = true },
109985 .each = .{ .once = &.{111857 .each = .{ .once = &.{
109986 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111858 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
109987 .{ .@"0:", .vp_d, .movzxb, .tmp1y, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },111859 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
109988 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },111860 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },
109989 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },111861 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
109990 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
109991 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
109992 } },111862 } },
109993 }, .{111863 }, .{
109994 .required_features = .{ .avx, null, null, null },111864 .required_features = .{ .@"64bit", .avx, null, null },
109995 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },111865 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
109996 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },111866 .dst_constraints = .{ .{ .float = .qword }, .any },
109997 .patterns = &.{111867 .patterns = &.{
109998 .{ .src = .{ .to_mem, .none, .none } },111868 .{ .src = .{ .mem, .none, .none } },
109999 },111869 .{ .src = .{ .to_gpr, .none, .none } },
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,
110012 },111870 },
110013 .dst_temps = .{ .mem, .unused },111871 .dst_temps = .{ .{ .rc = .sse }, .unused },
110014 .clobbers = .{ .eflags = true },
110015 .each = .{ .once = &.{111872 .each = .{ .once = &.{
110016 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111873 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
110017 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },111874 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0q, ._ },
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", ._, ._, ._ },
110022 } },111875 } },
110023 }, .{111876 }, .{
110024 .required_features = .{ .sse4_1, null, null, null },111877 .required_features = .{ .@"64bit", .sse2, null, null },
110025 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },111878 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
110026 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },111879 .dst_constraints = .{ .{ .float = .qword }, .any },
110027 .patterns = &.{111880 .patterns = &.{
110028 .{ .src = .{ .to_mem, .none, .none } },111881 .{ .src = .{ .mem, .none, .none } },
110029 },111882 .{ .src = .{ .to_gpr, .none, .none } },
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,
110042 },111883 },
110043 .dst_temps = .{ .mem, .unused },111884 .dst_temps = .{ .{ .rc = .sse }, .unused },
110044 .clobbers = .{ .eflags = true },
110045 .each = .{ .once = &.{111885 .each = .{ .once = &.{
110046 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111886 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },
110047 .{ .@"0:", .p_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },111887 .{ ._, ._sd, .cvtsi2, .dst0x, .src0q, ._, ._ },
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", ._, ._, ._ },
110052 } },111888 } },
110053 }, .{111889 }, .{
110054 .required_features = .{ .avx, .slow_incdec, null, null },111890 .required_features = .{ .@"64bit", .avx, null, null },
110055 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },111891 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
110056 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },111892 .dst_constraints = .{ .{ .float = .qword }, .any },
110057 .patterns = &.{111893 .patterns = &.{
110058 .{ .src = .{ .to_mem, .none, .none } },111894 .{ .src = .{ .mem, .none, .none } },
111895 .{ .src = .{ .to_gpr, .none, .none } },
110059 },111896 },
110060 .call_frame = .{ .alignment = .@"16" },111897 .extra_temps = .{
110061 .extra_temps = .{111898 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
110062 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111899 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110063 .{ .type = .i32, .kind = .{ .reg = .edi } },111900 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },
110064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111901 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },
110065 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
110066 .unused,111902 .unused,
110067 .unused,111903 .unused,
110068 .unused,111904 .unused,
...@@ -110071,29 +111907,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110071,29 +111907,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110071 .unused,111907 .unused,
110072 .unused,111908 .unused,
110073 },111909 },
110074 .dst_temps = .{ .mem, .unused },111910 .dst_temps = .{ .{ .rc = .sse }, .unused },
110075 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110076 .each = .{ .once = &.{111911 .each = .{ .once = &.{
110077 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111912 .{ ._, .v_q, .mov, .tmp0x, .src0q, ._, ._ },
110078 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },111913 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
110079 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },111914 .{ ._, .vp_, .unpckldq, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },
110080 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },111915 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
110081 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },111916 .{ ._, .v_pd, .sub, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },
110082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },111917 .{ ._, .v_pd, .unpckh, .dst0x, .tmp0x, .tmp0x, ._ },
111918 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
110083 } },111919 } },
110084 }, .{111920 }, .{
110085 .required_features = .{ .avx, null, null, null },111921 .required_features = .{ .@"64bit", .sse2, null, null },
110086 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },111922 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
110087 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },111923 .dst_constraints = .{ .{ .float = .qword }, .any },
110088 .patterns = &.{111924 .patterns = &.{
110089 .{ .src = .{ .to_mem, .none, .none } },111925 .{ .src = .{ .mem, .none, .none } },
111926 .{ .src = .{ .to_gpr, .none, .none } },
110090 },111927 },
110091 .call_frame = .{ .alignment = .@"16" },
110092 .extra_temps = .{111928 .extra_temps = .{
110093 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111929 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
110094 .{ .type = .i32, .kind = .{ .reg = .edi } },111930 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
110095 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111931 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },
110096 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111932 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },
110097 .unused,111933 .unused,
110098 .unused,111934 .unused,
110099 .unused,111935 .unused,
...@@ -110102,29 +111938,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110102,29 +111938,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110102 .unused,111938 .unused,
110103 .unused,111939 .unused,
110104 },111940 },
110105 .dst_temps = .{ .mem, .unused },111941 .dst_temps = .{ .{ .rc = .sse }, .unused },
110106 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110107 .each = .{ .once = &.{111942 .each = .{ .once = &.{
110108 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111943 .{ ._, ._q, .mov, .tmp0x, .src0q, ._, ._ },
110109 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },111944 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },
110110 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },111945 .{ ._, .p_, .unpckldq, .tmp0x, .lea(.tmp1x), ._, ._ },
110111 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },111946 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
110112 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },111947 .{ ._, ._pd, .sub, .tmp0x, .lea(.tmp1x), ._, ._ },
110113 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },111948 .{ ._, ._pd, .mova, .dst0x, .tmp0x, ._, ._ },
111949 .{ ._, ._pd, .unpckh, .dst0x, .dst0x, ._, ._ },
111950 .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ },
110114 } },111951 } },
110115 }, .{111952 }, .{
110116 .required_features = .{ .sse, .slow_incdec, null, null },111953 .required_features = .{ .x87, null, null, null },
110117 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },111954 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
110118 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },111955 .dst_constraints = .{ .{ .float = .qword }, .any },
110119 .patterns = &.{111956 .patterns = &.{
110120 .{ .src = .{ .to_mem, .none, .none } },111957 .{ .src = .{ .to_mem, .none, .none } },
110121 },111958 },
110122 .call_frame = .{ .alignment = .@"16" },
110123 .extra_temps = .{111959 .extra_temps = .{
110124 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111960 .{ .type = .f64, .kind = .{ .reg = .st7 } },
110125 .{ .type = .i32, .kind = .{ .reg = .edi } },111961 .unused,
110126 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111962 .unused,
110127 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111963 .unused,
110128 .unused,111964 .unused,
110129 .unused,111965 .unused,
110130 .unused,111966 .unused,
...@@ -110134,28 +111970,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110134,28 +111970,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110134 .unused,111970 .unused,
110135 },111971 },
110136 .dst_temps = .{ .mem, .unused },111972 .dst_temps = .{ .mem, .unused },
110137 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110138 .each = .{ .once = &.{111973 .each = .{ .once = &.{
110139 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },111974 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
110140 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },111975 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
110141 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110142 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110143 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110144 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110145 } },111976 } },
110146 }, .{111977 }, .{
110147 .required_features = .{ .sse, null, null, null },111978 .required_features = .{ .@"64bit", .x87, null, null },
110148 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },111979 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
110149 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },111980 .dst_constraints = .{ .{ .float = .qword }, .any },
110150 .patterns = &.{111981 .patterns = &.{
110151 .{ .src = .{ .to_mem, .none, .none } },111982 .{ .src = .{ .to_mut_gpr, .none, .none } },
110152 },111983 },
110153 .call_frame = .{ .alignment = .@"16" },
110154 .extra_temps = .{111984 .extra_temps = .{
110155 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },111985 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },
110156 .{ .type = .i32, .kind = .{ .reg = .edi } },111986 .{ .type = .f64, .kind = .{ .reg = .st7 } },
110157 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },111987 .unused,
110158 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },111988 .unused,
110159 .unused,111989 .unused,
110160 .unused,111990 .unused,
110161 .unused,111991 .unused,
...@@ -110165,28 +111995,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110165,28 +111995,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110165 .unused,111995 .unused,
110166 },111996 },
110167 .dst_temps = .{ .mem, .unused },111997 .dst_temps = .{ .mem, .unused },
110168 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },111998 .clobbers = .{ .eflags = true },
110169 .each = .{ .once = &.{111999 .each = .{ .once = &.{
110170 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112000 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },
110171 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112001 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },
110172 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112002 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
110173 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112003 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },
110174 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },112004 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },
110175 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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, ._, ._, ._ },
110176 } },112014 } },
110177 }, .{112015 }, .{
110178 .required_features = .{ .avx, .slow_incdec, null, null },112016 .required_features = .{ .@"64bit", .sse, null, null },
110179 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },112017 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
110180 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112018 .dst_constraints = .{ .{ .float = .qword }, .any },
110181 .patterns = &.{112019 .patterns = &.{
110182 .{ .src = .{ .to_mem, .none, .none } },112020 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
110183 },112021 },
110184 .call_frame = .{ .alignment = .@"16" },112022 .call_frame = .{ .alignment = .@"16" },
110185 .extra_temps = .{112023 .extra_temps = .{
110186 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112024 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
110187 .{ .type = .u32, .kind = .{ .reg = .edi } },112025 .unused,
110188 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112026 .unused,
110189 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112027 .unused,
110190 .unused,112028 .unused,
110191 .unused,112029 .unused,
110192 .unused,112030 .unused,
...@@ -110195,29 +112033,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110195,29 +112033,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110195 .unused,112033 .unused,
110196 .unused,112034 .unused,
110197 },112035 },
110198 .dst_temps = .{ .mem, .unused },112036 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110199 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112037 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110200 .each = .{ .once = &.{112038 .each = .{ .once = &.{
110201 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112039 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
110207 } },112040 } },
110208 }, .{112041 }, .{
110209 .required_features = .{ .avx, null, null, null },112042 .required_features = .{ .@"64bit", .sse, null, null },
110210 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },112043 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
110211 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112044 .dst_constraints = .{ .{ .float = .qword }, .any },
110212 .patterns = &.{112045 .patterns = &.{
110213 .{ .src = .{ .to_mem, .none, .none } },112046 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
110214 },112047 },
110215 .call_frame = .{ .alignment = .@"16" },112048 .call_frame = .{ .alignment = .@"16" },
110216 .extra_temps = .{112049 .extra_temps = .{
110217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112050 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
110218 .{ .type = .u32, .kind = .{ .reg = .edi } },112051 .unused,
110219 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112052 .unused,
110220 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112053 .unused,
110221 .unused,112054 .unused,
110222 .unused,112055 .unused,
110223 .unused,112056 .unused,
...@@ -110226,29 +112059,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110226,29 +112059,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110226 .unused,112059 .unused,
110227 .unused,112060 .unused,
110228 },112061 },
110229 .dst_temps = .{ .mem, .unused },112062 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110230 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112063 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110231 .each = .{ .once = &.{112064 .each = .{ .once = &.{
110232 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112065 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
110238 } },112066 } },
110239 }, .{112067 }, .{
110240 .required_features = .{ .sse, .slow_incdec, null, null },112068 .required_features = .{ .@"64bit", .sse, null, null },
110241 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },112069 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110242 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112070 .dst_constraints = .{ .{ .float = .qword }, .any },
110243 .patterns = &.{112071 .patterns = &.{
110244 .{ .src = .{ .to_mem, .none, .none } },112072 .{ .src = .{ .to_mem, .none, .none } },
110245 },112073 },
110246 .call_frame = .{ .alignment = .@"16" },112074 .call_frame = .{ .alignment = .@"16" },
110247 .extra_temps = .{112075 .extra_temps = .{
110248 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112076 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110249 .{ .type = .u32, .kind = .{ .reg = .edi } },112077 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110250 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112078 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
110251 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112079 .unused,
110252 .unused,112080 .unused,
110253 .unused,112081 .unused,
110254 .unused,112082 .unused,
...@@ -110257,29 +112085,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110257,29 +112085,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110257 .unused,112085 .unused,
110258 .unused,112086 .unused,
110259 },112087 },
110260 .dst_temps = .{ .mem, .unused },112088 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110261 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112089 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110262 .each = .{ .once = &.{112090 .each = .{ .once = &.{
110263 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112091 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110264 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112092 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
110265 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112093 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110266 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110267 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110268 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110269 } },112094 } },
110270 }, .{112095 }, .{
110271 .required_features = .{ .sse, null, null, null },112096 .required_features = .{ .@"64bit", .sse, null, null },
110272 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },112097 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
110273 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112098 .dst_constraints = .{ .{ .float = .qword }, .any },
110274 .patterns = &.{112099 .patterns = &.{
110275 .{ .src = .{ .to_mem, .none, .none } },112100 .{ .src = .{ .to_mem, .none, .none } },
110276 },112101 },
110277 .call_frame = .{ .alignment = .@"16" },112102 .call_frame = .{ .alignment = .@"16" },
110278 .extra_temps = .{112103 .extra_temps = .{
110279 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112104 .{ .type = .usize, .kind = .{ .reg = .rdi } },
110280 .{ .type = .u32, .kind = .{ .reg = .edi } },112105 .{ .type = .usize, .kind = .{ .reg = .rsi } },
110281 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112106 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
110282 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112107 .unused,
110283 .unused,112108 .unused,
110284 .unused,112109 .unused,
110285 .unused,112110 .unused,
...@@ -110288,98 +112113,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110288,98 +112113,95 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110288 .unused,112113 .unused,
110289 .unused,112114 .unused,
110290 },112115 },
110291 .dst_temps = .{ .mem, .unused },112116 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
110292 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112117 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110293 .each = .{ .once = &.{112118 .each = .{ .once = &.{
110294 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112119 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
110295 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },112120 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
110296 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112121 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110297 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110298 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110299 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110300 } },112122 } },
110301 }, .{112123 }, .{
110302 .required_features = .{ .avx, null, null, null },112124 .required_features = .{ .avx, null, null, null },
110303 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },112125 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
110304 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },112126 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110305 .patterns = &.{112127 .patterns = &.{
110306 .{ .src = .{ .mem, .none, .none } },112128 .{ .src = .{ .mem, .none, .none } },
110307 .{ .src = .{ .to_sse, .none, .none } },112129 .{ .src = .{ .to_sse, .none, .none } },
110308 },112130 },
110309 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },112131 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110310 .each = .{ .once = &.{112132 .each = .{ .once = &.{
110311 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },112133 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
110312 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },112134 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110313 } },112135 } },
110314 }, .{112136 }, .{
110315 .required_features = .{ .sse4_1, null, null, null },112137 .required_features = .{ .sse4_1, null, null, null },
110316 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },112138 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
110317 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },112139 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110318 .patterns = &.{112140 .patterns = &.{
110319 .{ .src = .{ .mem, .none, .none } },112141 .{ .src = .{ .mem, .none, .none } },
110320 .{ .src = .{ .to_sse, .none, .none } },112142 .{ .src = .{ .to_sse, .none, .none } },
110321 },112143 },
110322 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },112144 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110323 .each = .{ .once = &.{112145 .each = .{ .once = &.{
110324 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },112146 .{ ._, .p_d, .movsxb, .dst0x, .src0d, ._, ._ },
110325 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },112147 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110326 } },112148 } },
110327 }, .{112149 }, .{
110328 .required_features = .{ .avx2, null, null, null },112150 .required_features = .{ .avx2, null, null, null },
110329 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },112151 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
110330 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },112152 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110331 .patterns = &.{112153 .patterns = &.{
110332 .{ .src = .{ .mem, .none, .none } },112154 .{ .src = .{ .mem, .none, .none } },
110333 .{ .src = .{ .to_sse, .none, .none } },112155 .{ .src = .{ .to_sse, .none, .none } },
110334 },112156 },
110335 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },112157 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110336 .each = .{ .once = &.{112158 .each = .{ .once = &.{
110337 .{ ._, .vp_d, .movsxw, .dst0y, .src0x, ._, ._ },112159 .{ ._, .vp_d, .movsxb, .dst0x, .src0d, ._, ._ },
110338 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },112160 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
110339 } },112161 } },
110340 }, .{112162 }, .{
110341 .required_features = .{ .avx, null, null, null },112163 .required_features = .{ .avx, null, null, null },
110342 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },112164 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
110343 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },112165 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110344 .patterns = &.{112166 .patterns = &.{
110345 .{ .src = .{ .mem, .none, .none } },112167 .{ .src = .{ .mem, .none, .none } },
110346 .{ .src = .{ .to_sse, .none, .none } },112168 .{ .src = .{ .to_sse, .none, .none } },
110347 },112169 },
110348 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },112170 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110349 .each = .{ .once = &.{112171 .each = .{ .once = &.{
110350 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },112172 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
110351 .{ ._, .v_ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },112173 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110352 } },112174 } },
110353 }, .{112175 }, .{
110354 .required_features = .{ .sse4_1, null, null, null },112176 .required_features = .{ .sse4_1, null, null, null },
110355 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },112177 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
110356 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .dword } }, .any },112178 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110357 .patterns = &.{112179 .patterns = &.{
110358 .{ .src = .{ .mem, .none, .none } },112180 .{ .src = .{ .mem, .none, .none } },
110359 .{ .src = .{ .to_sse, .none, .none } },112181 .{ .src = .{ .to_sse, .none, .none } },
110360 },112182 },
110361 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },112183 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110362 .each = .{ .once = &.{112184 .each = .{ .once = &.{
110363 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },112185 .{ ._, .p_d, .movzxb, .dst0x, .src0d, ._, ._ },
110364 .{ ._, ._ps, .cvtdq2, .dst0x, .dst0x, ._, ._ },112186 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
110365 } },112187 } },
110366 }, .{112188 }, .{
110367 .required_features = .{ .avx2, null, null, null },112189 .required_features = .{ .avx2, null, null, null },
110368 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },112190 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
110369 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .dword } }, .any },112191 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110370 .patterns = &.{112192 .patterns = &.{
110371 .{ .src = .{ .mem, .none, .none } },112193 .{ .src = .{ .mem, .none, .none } },
110372 .{ .src = .{ .to_sse, .none, .none } },112194 .{ .src = .{ .to_sse, .none, .none } },
110373 },112195 },
110374 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },112196 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110375 .each = .{ .once = &.{112197 .each = .{ .once = &.{
110376 .{ ._, .vp_d, .movzxw, .dst0y, .src0x, ._, ._ },112198 .{ ._, .vp_d, .movzxb, .dst0x, .src0d, ._, ._ },
110377 .{ ._, .v_ps, .cvtdq2, .dst0y, .dst0y, ._, ._ },112199 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
110378 } },112200 } },
110379 }, .{112201 }, .{
110380 .required_features = .{ .avx2, null, null, null },112202 .required_features = .{ .avx2, null, null, null },
110381 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .word } }, .any, .any },112203 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .byte } }, .any, .any },
110382 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },112204 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110383 .patterns = &.{112205 .patterns = &.{
110384 .{ .src = .{ .to_mem, .none, .none } },112206 .{ .src = .{ .to_mem, .none, .none } },
110385 },112207 },
...@@ -110400,16 +112222,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110400,16 +112222,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110400 .clobbers = .{ .eflags = true },112222 .clobbers = .{ .eflags = true },
110401 .each = .{ .once = &.{112223 .each = .{ .once = &.{
110402 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110403 .{ .@"0:", .vp_d, .movsxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },112225 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110404 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },112226 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
110405 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },112227 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110406 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },112228 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110407 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110408 } },112230 } },
110409 }, .{112231 }, .{
110410 .required_features = .{ .avx, null, null, null },112232 .required_features = .{ .avx, null, null, null },
110411 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },112233 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
110412 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },112234 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110413 .patterns = &.{112235 .patterns = &.{
110414 .{ .src = .{ .to_mem, .none, .none } },112236 .{ .src = .{ .to_mem, .none, .none } },
110415 },112237 },
...@@ -110430,16 +112252,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110430,16 +112252,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110430 .clobbers = .{ .eflags = true },112252 .clobbers = .{ .eflags = true },
110431 .each = .{ .once = &.{112253 .each = .{ .once = &.{
110432 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112254 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110433 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112255 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
110434 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112256 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
110435 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112257 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
110436 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112258 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112259 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112260 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110437 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112261 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110438 } },112262 } },
110439 }, .{112263 }, .{
110440 .required_features = .{ .sse4_1, null, null, null },112264 .required_features = .{ .sse4_1, null, null, null },
110441 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },112265 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },
110442 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },112266 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110443 .patterns = &.{112267 .patterns = &.{
110444 .{ .src = .{ .to_mem, .none, .none } },112268 .{ .src = .{ .to_mem, .none, .none } },
110445 },112269 },
...@@ -110460,16 +112284,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110460,16 +112284,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110460 .clobbers = .{ .eflags = true },112284 .clobbers = .{ .eflags = true },
110461 .each = .{ .once = &.{112285 .each = .{ .once = &.{
110462 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110463 .{ .@"0:", .p_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112287 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
110464 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112288 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
110465 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112289 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },
110466 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112290 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112291 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112292 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110467 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110468 } },112294 } },
110469 }, .{112295 }, .{
110470 .required_features = .{ .avx2, null, null, null },112296 .required_features = .{ .avx2, null, null, null },
110471 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .word } }, .any, .any },112297 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },
110472 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },112298 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
110473 .patterns = &.{112299 .patterns = &.{
110474 .{ .src = .{ .to_mem, .none, .none } },112300 .{ .src = .{ .to_mem, .none, .none } },
110475 },112301 },
...@@ -110490,16 +112316,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110490,16 +112316,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110490 .clobbers = .{ .eflags = true },112316 .clobbers = .{ .eflags = true },
110491 .each = .{ .once = &.{112317 .each = .{ .once = &.{
110492 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112318 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110493 .{ .@"0:", .vp_d, .movzxw, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },112319 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
110494 .{ ._, .v_ps, .cvtdq2, .tmp1y, .tmp1y, ._, ._ },112320 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
110495 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },112321 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
110496 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },112322 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
110497 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112323 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110498 } },112324 } },
110499 }, .{112325 }, .{
110500 .required_features = .{ .avx, null, null, null },112326 .required_features = .{ .avx, null, null, null },
110501 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },112327 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
110502 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },112328 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110503 .patterns = &.{112329 .patterns = &.{
110504 .{ .src = .{ .to_mem, .none, .none } },112330 .{ .src = .{ .to_mem, .none, .none } },
110505 },112331 },
...@@ -110520,16 +112346,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110520,16 +112346,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110520 .clobbers = .{ .eflags = true },112346 .clobbers = .{ .eflags = true },
110521 .each = .{ .once = &.{112347 .each = .{ .once = &.{
110522 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110523 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112349 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
110524 .{ ._, .v_ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112350 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
110525 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112351 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
110526 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112352 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112353 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112354 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110527 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112355 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110528 } },112356 } },
110529 }, .{112357 }, .{
110530 .required_features = .{ .sse4_1, null, null, null },112358 .required_features = .{ .sse4_1, null, null, null },
110531 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },112359 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },
110532 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },112360 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110533 .patterns = &.{112361 .patterns = &.{
110534 .{ .src = .{ .to_mem, .none, .none } },112362 .{ .src = .{ .to_mem, .none, .none } },
110535 },112363 },
...@@ -110550,16 +112378,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110550,16 +112378,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110550 .clobbers = .{ .eflags = true },112378 .clobbers = .{ .eflags = true },
110551 .each = .{ .once = &.{112379 .each = .{ .once = &.{
110552 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112380 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110553 .{ .@"0:", .p_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },112381 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
110554 .{ ._, ._ps, .cvtdq2, .tmp1x, .tmp1x, ._, ._ },112382 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
110555 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112383 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },
110556 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },112384 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
112385 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112386 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
110557 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112387 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110558 } },112388 } },
110559 }, .{112389 }, .{
110560 .required_features = .{ .avx, null, null, null },112390 .required_features = .{ .avx, .slow_incdec, null, null },
110561 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },112391 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110562 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112392 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110563 .patterns = &.{112393 .patterns = &.{
110564 .{ .src = .{ .to_mem, .none, .none } },112394 .{ .src = .{ .to_mem, .none, .none } },
110565 },112395 },
...@@ -110567,8 +112397,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110567,8 +112397,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110567 .extra_temps = .{112397 .extra_temps = .{
110568 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112398 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110569 .{ .type = .i32, .kind = .{ .reg = .edi } },112399 .{ .type = .i32, .kind = .{ .reg = .edi } },
110570 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },112400 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
110571 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112401 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110572 .unused,112402 .unused,
110573 .unused,112403 .unused,
110574 .unused,112404 .unused,
...@@ -110581,16 +112411,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110581,16 +112411,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110581 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112411 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110582 .each = .{ .once = &.{112412 .each = .{ .once = &.{
110583 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112413 .{ ._, ._, .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), ._, ._ },
110585 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112415 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110586 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112416 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110587 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112417 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110588 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112418 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110589 } },112419 } },
110590 }, .{112420 }, .{
110591 .required_features = .{ .sse, null, null, null },112421 .required_features = .{ .avx, null, null, null },
110592 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },112422 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110593 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112423 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110594 .patterns = &.{112424 .patterns = &.{
110595 .{ .src = .{ .to_mem, .none, .none } },112425 .{ .src = .{ .to_mem, .none, .none } },
110596 },112426 },
...@@ -110598,8 +112428,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110598,8 +112428,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110598 .extra_temps = .{112428 .extra_temps = .{
110599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112429 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110600 .{ .type = .i32, .kind = .{ .reg = .edi } },112430 .{ .type = .i32, .kind = .{ .reg = .edi } },
110601 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },112431 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
110602 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112432 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110603 .unused,112433 .unused,
110604 .unused,112434 .unused,
110605 .unused,112435 .unused,
...@@ -110612,25 +112442,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110612,25 +112442,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110612 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112442 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110613 .each = .{ .once = &.{112443 .each = .{ .once = &.{
110614 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112444 .{ ._, ._, .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), ._, ._ },
110616 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112446 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110617 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112447 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110618 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112448 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110619 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112449 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110620 } },112450 } },
110621 }, .{112451 }, .{
110622 .required_features = .{ .avx, null, null, null },112452 .required_features = .{ .sse2, .slow_incdec, null, null },
110623 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },112453 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110624 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112454 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110625 .patterns = &.{112455 .patterns = &.{
110626 .{ .src = .{ .to_mem, .none, .none } },112456 .{ .src = .{ .to_mem, .none, .none } },
110627 },112457 },
110628 .call_frame = .{ .alignment = .@"16" },112458 .call_frame = .{ .alignment = .@"16" },
110629 .extra_temps = .{112459 .extra_temps = .{
110630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112460 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110631 .{ .type = .u32, .kind = .{ .reg = .edi } },112461 .{ .type = .i32, .kind = .{ .reg = .edi } },
110632 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112462 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
110633 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112463 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110634 .unused,112464 .unused,
110635 .unused,112465 .unused,
110636 .unused,112466 .unused,
...@@ -110643,25 +112473,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110643,25 +112473,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110643 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112473 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110644 .each = .{ .once = &.{112474 .each = .{ .once = &.{
110645 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112475 .{ ._, ._, .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), ._, ._ },
110647 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112477 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110648 .{ ._, .v_ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112478 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110649 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112479 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110650 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112480 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110651 } },112481 } },
110652 }, .{112482 }, .{
110653 .required_features = .{ .sse, null, null, null },112483 .required_features = .{ .sse2, null, null, null },
110654 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },112484 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110655 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112485 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110656 .patterns = &.{112486 .patterns = &.{
110657 .{ .src = .{ .to_mem, .none, .none } },112487 .{ .src = .{ .to_mem, .none, .none } },
110658 },112488 },
110659 .call_frame = .{ .alignment = .@"16" },112489 .call_frame = .{ .alignment = .@"16" },
110660 .extra_temps = .{112490 .extra_temps = .{
110661 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112491 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110662 .{ .type = .u32, .kind = .{ .reg = .edi } },112492 .{ .type = .i32, .kind = .{ .reg = .edi } },
110663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112493 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
110664 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112494 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110665 .unused,112495 .unused,
110666 .unused,112496 .unused,
110667 .unused,112497 .unused,
...@@ -110674,60 +112504,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110674,60 +112504,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110674 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112504 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110675 .each = .{ .once = &.{112505 .each = .{ .once = &.{
110676 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112506 .{ ._, ._, .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), ._, ._ },
110678 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112508 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110679 .{ ._, ._ss, .mov, .memsia(.dst0d, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112509 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110680 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },112510 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110681 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112511 .{ ._, ._nz, .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, ._, ._ },
110718 } },112512 } },
110719 }, .{112513 }, .{
110720 .required_features = .{ .avx2, null, null, null },112514 .required_features = .{ .sse, .slow_incdec, null, null },
110721 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .yword, .is = .dword } }, .any, .any },112515 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110722 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },112516 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110723 .patterns = &.{112517 .patterns = &.{
110724 .{ .src = .{ .to_mem, .none, .none } },112518 .{ .src = .{ .to_mem, .none, .none } },
110725 },112519 },
112520 .call_frame = .{ .alignment = .@"16" },
110726 .extra_temps = .{112521 .extra_temps = .{
110727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112522 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110728 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },112523 .{ .type = .i32, .kind = .{ .reg = .edi } },
110729 .unused,112524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
110730 .unused,112525 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110731 .unused,112526 .unused,
110732 .unused,112527 .unused,
110733 .unused,112528 .unused,
...@@ -110737,26 +112532,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110737,26 +112532,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110737 .unused,112532 .unused,
110738 },112533 },
110739 .dst_temps = .{ .mem, .unused },112534 .dst_temps = .{ .mem, .unused },
110740 .clobbers = .{ .eflags = true },112535 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110741 .each = .{ .once = &.{112536 .each = .{ .once = &.{
110742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },112537 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110743 .{ .@"0:", .v_ps, .cvtdq2, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },112538 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110744 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },112539 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110745 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },112540 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112541 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110746 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110747 } },112543 } },
110748 }, .{112544 }, .{
110749 .required_features = .{ .avx, null, null, null },112545 .required_features = .{ .sse, null, null, null },
110750 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },112546 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110751 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },112547 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110752 .patterns = &.{112548 .patterns = &.{
110753 .{ .src = .{ .to_mem, .none, .none } },112549 .{ .src = .{ .to_mem, .none, .none } },
110754 },112550 },
112551 .call_frame = .{ .alignment = .@"16" },
110755 .extra_temps = .{112552 .extra_temps = .{
110756 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110757 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },112554 .{ .type = .i32, .kind = .{ .reg = .edi } },
110758 .unused,112555 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
110759 .unused,112556 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110760 .unused,112557 .unused,
110761 .unused,112558 .unused,
110762 .unused,112559 .unused,
...@@ -110766,26 +112563,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110766,26 +112563,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110766 .unused,112563 .unused,
110767 },112564 },
110768 .dst_temps = .{ .mem, .unused },112565 .dst_temps = .{ .mem, .unused },
110769 .clobbers = .{ .eflags = true },112566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110770 .each = .{ .once = &.{112567 .each = .{ .once = &.{
110771 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110772 .{ .@"0:", .v_ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },112569 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110773 .{ ._, .v_ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112570 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110774 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },112571 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110775 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112572 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112573 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110776 } },112574 } },
110777 }, .{112575 }, .{
110778 .required_features = .{ .sse2, null, null, null },112576 .required_features = .{ .avx, .slow_incdec, null, null },
110779 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },112577 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110780 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },112578 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110781 .patterns = &.{112579 .patterns = &.{
110782 .{ .src = .{ .to_mem, .none, .none } },112580 .{ .src = .{ .to_mem, .none, .none } },
110783 },112581 },
112582 .call_frame = .{ .alignment = .@"16" },
110784 .extra_temps = .{112583 .extra_temps = .{
110785 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112584 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110786 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },112585 .{ .type = .u32, .kind = .{ .reg = .edi } },
110787 .unused,112586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
110788 .unused,112587 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110789 .unused,112588 .unused,
110790 .unused,112589 .unused,
110791 .unused,112590 .unused,
...@@ -110795,26 +112594,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110795,26 +112594,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110795 .unused,112594 .unused,
110796 },112595 },
110797 .dst_temps = .{ .mem, .unused },112596 .dst_temps = .{ .mem, .unused },
110798 .clobbers = .{ .eflags = true },112597 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110799 .each = .{ .once = &.{112598 .each = .{ .once = &.{
110800 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112599 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110801 .{ .@"0:", ._ps, .cvtdq2, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },112600 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110802 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112601 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110803 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },112602 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112603 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110804 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112604 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110805 } },112605 } },
110806 }, .{112606 }, .{
110807 .required_features = .{ .sse, null, null, null },112607 .required_features = .{ .avx, null, null, null },
110808 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },112608 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110809 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112609 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110810 .patterns = &.{112610 .patterns = &.{
110811 .{ .src = .{ .to_mem, .none, .none } },112611 .{ .src = .{ .to_mem, .none, .none } },
110812 },112612 },
112613 .call_frame = .{ .alignment = .@"16" },
110813 .extra_temps = .{112614 .extra_temps = .{
110814 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110815 .{ .type = .f32, .kind = .{ .rc = .sse } },112616 .{ .type = .u32, .kind = .{ .reg = .edi } },
110816 .unused,112617 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
110817 .unused,112618 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110818 .unused,112619 .unused,
110819 .unused,112620 .unused,
110820 .unused,112621 .unused,
...@@ -110824,27 +112625,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110824,27 +112625,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110824 .unused,112625 .unused,
110825 },112626 },
110826 .dst_temps = .{ .mem, .unused },112627 .dst_temps = .{ .mem, .unused },
110827 .clobbers = .{ .eflags = true },112628 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110828 .each = .{ .once = &.{112629 .each = .{ .once = &.{
110829 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112630 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110830 .{ .@"0:", ._ss, .cvtsi2, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112631 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110831 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },112632 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110832 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112633 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110833 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112634 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112635 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110834 } },112636 } },
110835 }, .{112637 }, .{
110836 .required_features = .{ .avx, null, null, null },112638 .required_features = .{ .sse2, .slow_incdec, null, null },
110837 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },112639 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110838 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112640 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110839 .patterns = &.{112641 .patterns = &.{
110840 .{ .src = .{ .to_mem, .none, .none } },112642 .{ .src = .{ .to_mem, .none, .none } },
110841 },112643 },
110842 .call_frame = .{ .alignment = .@"16" },112644 .call_frame = .{ .alignment = .@"16" },
110843 .extra_temps = .{112645 .extra_temps = .{
110844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112646 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110845 .{ .type = .i32, .kind = .{ .reg = .edi } },112647 .{ .type = .u32, .kind = .{ .reg = .edi } },
110846 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },112648 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
110847 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112649 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110848 .unused,112650 .unused,
110849 .unused,112651 .unused,
110850 .unused,112652 .unused,
...@@ -110856,26 +112658,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110856,26 +112658,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110856 .dst_temps = .{ .mem, .unused },112658 .dst_temps = .{ .mem, .unused },
110857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112659 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110858 .each = .{ .once = &.{112660 .each = .{ .once = &.{
110859 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112661 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110860 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112662 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110861 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112663 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110862 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112664 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110863 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112665 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110864 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112666 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110865 } },112667 } },
110866 }, .{112668 }, .{
110867 .required_features = .{ .sse, null, null, null },112669 .required_features = .{ .sse2, null, null, null },
110868 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },112670 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110869 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112671 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110870 .patterns = &.{112672 .patterns = &.{
110871 .{ .src = .{ .to_mem, .none, .none } },112673 .{ .src = .{ .to_mem, .none, .none } },
110872 },112674 },
110873 .call_frame = .{ .alignment = .@"16" },112675 .call_frame = .{ .alignment = .@"16" },
110874 .extra_temps = .{112676 .extra_temps = .{
110875 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112677 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110876 .{ .type = .i32, .kind = .{ .reg = .edi } },112678 .{ .type = .u32, .kind = .{ .reg = .edi } },
110877 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsisf" } } },112679 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
110878 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112680 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110879 .unused,112681 .unused,
110880 .unused,112682 .unused,
110881 .unused,112683 .unused,
...@@ -110887,17 +112689,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110887,17 +112689,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110887 .dst_temps = .{ .mem, .unused },112689 .dst_temps = .{ .mem, .unused },
110888 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112690 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110889 .each = .{ .once = &.{112691 .each = .{ .once = &.{
110890 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112692 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110891 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112693 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110892 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112694 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110893 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112695 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110894 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112696 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112697 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110896 } },112698 } },
110897 }, .{112699 }, .{
110898 .required_features = .{ .avx, null, null, null },112700 .required_features = .{ .sse, .slow_incdec, null, null },
110899 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },112701 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110900 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112702 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110901 .patterns = &.{112703 .patterns = &.{
110902 .{ .src = .{ .to_mem, .none, .none } },112704 .{ .src = .{ .to_mem, .none, .none } },
110903 },112705 },
...@@ -110905,8 +112707,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110905,8 +112707,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110905 .extra_temps = .{112707 .extra_temps = .{
110906 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112708 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110907 .{ .type = .u32, .kind = .{ .reg = .edi } },112709 .{ .type = .u32, .kind = .{ .reg = .edi } },
110908 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112710 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
110909 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112711 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110910 .unused,112712 .unused,
110911 .unused,112713 .unused,
110912 .unused,112714 .unused,
...@@ -110918,17 +112720,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110918,17 +112720,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110918 .dst_temps = .{ .mem, .unused },112720 .dst_temps = .{ .mem, .unused },
110919 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112721 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110920 .each = .{ .once = &.{112722 .each = .{ .once = &.{
110921 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112723 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110922 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112724 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110923 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112725 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110924 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112726 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110925 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112727 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
110926 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112728 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
110927 } },112729 } },
110928 }, .{112730 }, .{
110929 .required_features = .{ .sse, null, null, null },112731 .required_features = .{ .sse, null, null, null },
110930 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },112732 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
110931 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112733 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
110932 .patterns = &.{112734 .patterns = &.{
110933 .{ .src = .{ .to_mem, .none, .none } },112735 .{ .src = .{ .to_mem, .none, .none } },
110934 },112736 },
...@@ -110936,8 +112738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110936,8 +112738,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110936 .extra_temps = .{112738 .extra_temps = .{
110937 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
110938 .{ .type = .u32, .kind = .{ .reg = .edi } },112740 .{ .type = .u32, .kind = .{ .reg = .edi } },
110939 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsisf" } } },112741 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
110940 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112742 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
110941 .unused,112743 .unused,
110942 .unused,112744 .unused,
110943 .unused,112745 .unused,
...@@ -110949,243 +112751,104 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -110949,243 +112751,104 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
110949 .dst_temps = .{ .mem, .unused },112751 .dst_temps = .{ .mem, .unused },
110950 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112752 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
110951 .each = .{ .once = &.{112753 .each = .{ .once = &.{
110952 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112754 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
110953 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },112755 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
110954 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },112756 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
110955 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },112757 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
110956 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112758 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
110957 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112759 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
110958 } },112760 } },
110959 }, .{112761 }, .{
110960 .required_features = .{ .@"64bit", .avx, null, null },112762 .required_features = .{ .avx, null, null, null },
110961 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },112763 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
110962 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112764 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110963 .patterns = &.{112765 .patterns = &.{
110964 .{ .src = .{ .to_mem, .none, .none } },112766 .{ .src = .{ .mem, .none, .none } },
110965 },112767 .{ .src = .{ .to_sse, .none, .none } },
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,
110978 },112768 },
110979 .dst_temps = .{ .mem, .unused },112769 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
110980 .clobbers = .{ .eflags = true },
110981 .each = .{ .once = &.{112770 .each = .{ .once = &.{
110982 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112771 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
110983 .{ .@"0:", .v_ps, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },112772 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
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", ._, ._, ._ },
110988 } },112773 } },
110989 }, .{112774 }, .{
110990 .required_features = .{ .@"64bit", .sse, null, null },112775 .required_features = .{ .sse4_1, null, null, null },
110991 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },112776 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
110992 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112777 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
110993 .patterns = &.{112778 .patterns = &.{
110994 .{ .src = .{ .to_mem, .none, .none } },112779 .{ .src = .{ .mem, .none, .none } },
110995 },112780 .{ .src = .{ .to_sse, .none, .none } },
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,
111008 },112781 },
111009 .dst_temps = .{ .mem, .unused },112782 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111010 .clobbers = .{ .eflags = true },
111011 .each = .{ .once = &.{112783 .each = .{ .once = &.{
111012 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112784 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },
111013 .{ .@"0:", ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },112785 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
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", ._, ._, ._ },
111018 } },112786 } },
111019 }, .{112787 }, .{
111020 .required_features = .{ .@"64bit", .avx, null, null },112788 .required_features = .{ .avx2, null, null, null },
111021 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },112789 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
111022 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112790 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111023 .patterns = &.{112791 .patterns = &.{
111024 .{ .src = .{ .to_mem, .none, .none } },112792 .{ .src = .{ .mem, .none, .none } },
111025 },112793 .{ .src = .{ .to_sse, .none, .none } },
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,
111039 },112794 },
111040 .dst_temps = .{ .mem, .unused },112795 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111041 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111042 .each = .{ .once = &.{112796 .each = .{ .once = &.{
111043 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112797 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },
111044 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },112798 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
111045 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111046 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111047 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111048 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111049 } },112799 } },
111050 }, .{112800 }, .{
111051 .required_features = .{ .@"64bit", .sse, null, null },112801 .required_features = .{ .avx, null, null, null },
111052 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },112802 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
111053 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112803 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111054 .patterns = &.{112804 .patterns = &.{
111055 .{ .src = .{ .to_mem, .none, .none } },112805 .{ .src = .{ .mem, .none, .none } },
111056 },112806 .{ .src = .{ .to_sse, .none, .none } },
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,
111070 },112807 },
111071 .dst_temps = .{ .mem, .unused },112808 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111072 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111073 .each = .{ .once = &.{112809 .each = .{ .once = &.{
111074 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112810 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
111075 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },112811 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
111076 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111077 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111078 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111079 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111080 } },112812 } },
111081 }, .{112813 }, .{
111082 .required_features = .{ .@"64bit", .avx, null, null },112814 .required_features = .{ .sse4_1, null, null, null },
111083 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },112815 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
111084 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112816 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111085 .patterns = &.{112817 .patterns = &.{
111086 .{ .src = .{ .to_mem, .none, .none } },112818 .{ .src = .{ .mem, .none, .none } },
111087 },112819 .{ .src = .{ .to_sse, .none, .none } },
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,
111101 },112820 },
111102 .dst_temps = .{ .mem, .unused },112821 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111103 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111104 .each = .{ .once = &.{112822 .each = .{ .once = &.{
111105 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112823 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },
111106 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },112824 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },
111107 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111108 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111109 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111110 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111111 } },112825 } },
111112 }, .{112826 }, .{
111113 .required_features = .{ .@"64bit", .sse, null, null },112827 .required_features = .{ .avx2, null, null, null },
111114 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },112828 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
111115 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112829 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111116 .patterns = &.{112830 .patterns = &.{
111117 .{ .src = .{ .to_mem, .none, .none } },112831 .{ .src = .{ .mem, .none, .none } },
111118 },112832 .{ .src = .{ .to_sse, .none, .none } },
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,
111132 },112833 },
111133 .dst_temps = .{ .mem, .unused },112834 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111134 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111135 .each = .{ .once = &.{112835 .each = .{ .once = &.{
111136 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112836 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },
111137 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },112837 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
111138 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111139 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111140 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111141 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111142 } },112838 } },
111143 }, .{112839 }, .{
111144 .required_features = .{ .@"64bit", .avx, null, null },112840 .required_features = .{ .avx2, null, null, null },
111145 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },112841 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },
111146 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112842 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111147 .patterns = &.{112843 .patterns = &.{
111148 .{ .src = .{ .to_mem, .none, .none } },112844 .{ .src = .{ .to_mem, .none, .none } },
111149 },112845 },
111150 .call_frame = .{ .alignment = .@"16" },
111151 .extra_temps = .{112846 .extra_temps = .{
111152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111153 .{ .type = .u64, .kind = .{ .reg = .rdi } },112848 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
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,
111160 .unused,112849 .unused,
111161 .unused,112850 .unused,
111162 .unused,112851 .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 } },
111189 .unused,112852 .unused,
111190 .unused,112853 .unused,
111191 .unused,112854 .unused,
...@@ -111194,62 +112857,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111194,62 +112857,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111194 .unused,112857 .unused,
111195 },112858 },
111196 .dst_temps = .{ .mem, .unused },112859 .dst_temps = .{ .mem, .unused },
111197 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112860 .clobbers = .{ .eflags = true },
111198 .each = .{ .once = &.{112861 .each = .{ .once = &.{
111199 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112862 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111200 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },112863 .{ .@"0:", .vp_d, .movsxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
111201 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },112864 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
111202 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },112865 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111203 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },112866 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111204 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111205 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112867 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111206 } },112868 } },
111207 }, .{112869 }, .{
111208 .required_features = .{ .@"64bit", .avx, null, null },112870 .required_features = .{ .avx, null, null, null },
111209 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },112871 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
111210 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112872 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111211 .patterns = &.{112873 .patterns = &.{
111212 .{ .src = .{ .to_mem, .none, .none } },112874 .{ .src = .{ .to_mem, .none, .none } },
111213 },112875 },
111214 .call_frame = .{ .alignment = .@"16" },
111215 .extra_temps = .{112876 .extra_temps = .{
111216 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112877 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111217 .{ .type = .u64, .kind = .{ .reg = .rdi } },112878 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
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,
111224 .unused,112879 .unused,
111225 .unused,112880 .unused,
111226 .unused,112881 .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 } },
111253 .unused,112882 .unused,
111254 .unused,112883 .unused,
111255 .unused,112884 .unused,
...@@ -111258,99 +112887,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111258,99 +112887,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111258 .unused,112887 .unused,
111259 },112888 },
111260 .dst_temps = .{ .mem, .unused },112889 .dst_temps = .{ .mem, .unused },
111261 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112890 .clobbers = .{ .eflags = true },
111262 .each = .{ .once = &.{112891 .each = .{ .once = &.{
111263 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112892 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111264 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._ },112893 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111265 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"4", .tmp0, .add_unaligned_size, 8), ._, ._ },112894 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
111266 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },112895 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
111267 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },112896 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111268 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },112897 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111269 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112898 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111270 } },112899 } },
111271 }, .{112900 }, .{
111272 .required_features = .{ .@"64bit", .avx, null, null },112901 .required_features = .{ .sse4_1, null, null, null },
111273 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },112902 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },
111274 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112903 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .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 },
111309 .patterns = &.{112904 .patterns = &.{
111310 .{ .src = .{ .to_mem, .none, .none } },112905 .{ .src = .{ .to_mem, .none, .none } },
111311 },112906 },
111312 .call_frame = .{ .alignment = .@"16" },
111313 .extra_temps = .{112907 .extra_temps = .{
111314 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111315 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112908 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111316 .{ .type = .usize, .kind = .{ .reg = .rdi } },112909 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111317 .{ .type = .usize, .kind = .{ .reg = .rsi } },
111318 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateisf" } } },
111319 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },
111320 .unused,
111321 .unused,112910 .unused,
111322 .unused,112911 .unused,
111323 .unused,112912 .unused,
111324 .unused,112913 .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 } },
111354 .unused,112914 .unused,
111355 .unused,112915 .unused,
111356 .unused,112916 .unused,
...@@ -111358,33 +112918,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111358,33 +112918,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111358 .unused,112918 .unused,
111359 },112919 },
111360 .dst_temps = .{ .mem, .unused },112920 .dst_temps = .{ .mem, .unused },
111361 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112921 .clobbers = .{ .eflags = true },
111362 .each = .{ .once = &.{112922 .each = .{ .once = &.{
111363 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },112923 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111364 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112924 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111365 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },112925 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },
111366 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },112926 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },
111367 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },112927 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111368 .{ ._, .v_ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },112928 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111369 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
111370 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
111371 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112929 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111372 } },112930 } },
111373 }, .{112931 }, .{
111374 .required_features = .{ .@"64bit", .sse, null, null },112932 .required_features = .{ .avx2, null, null, null },
111375 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },112933 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },
111376 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any },112934 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111377 .patterns = &.{112935 .patterns = &.{
111378 .{ .src = .{ .to_mem, .none, .none } },112936 .{ .src = .{ .to_mem, .none, .none } },
111379 },112937 },
111380 .call_frame = .{ .alignment = .@"16" },
111381 .extra_temps = .{112938 .extra_temps = .{
111382 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
111383 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },112939 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111384 .{ .type = .usize, .kind = .{ .reg = .rdi } },112940 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111385 .{ .type = .usize, .kind = .{ .reg = .rsi } },112941 .unused,
111386 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneisf" } } },112942 .unused,
111387 .{ .type = .f32, .kind = .{ .reg = .xmm0 } },112943 .unused,
112944 .unused,
111388 .unused,112945 .unused,
111389 .unused,112946 .unused,
111390 .unused,112947 .unused,
...@@ -111392,29 +112949,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111392,29 +112949,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111392 .unused,112949 .unused,
111393 },112950 },
111394 .dst_temps = .{ .mem, .unused },112951 .dst_temps = .{ .mem, .unused },
111395 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },112952 .clobbers = .{ .eflags = true },
111396 .each = .{ .once = &.{112953 .each = .{ .once = &.{
111397 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },112954 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111398 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },112955 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
111399 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },112956 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },
111400 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },112957 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111401 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },112958 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
111402 .{ ._, ._ss, .mov, .memia(.dst0d, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
111403 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
111404 .{ ._, ._, .add, .tmp1p, .si(4), ._, ._ },
111405 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },112959 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111406 } },112960 } },
111407 }, .{112961 }, .{
111408 .required_features = .{ .avx, null, null, null },112962 .required_features = .{ .avx, null, null, null },
111409 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },112963 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
111410 .dst_constraints = .{ .{ .float = .qword }, .any },112964 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111411 .patterns = &.{112965 .patterns = &.{
111412 .{ .src = .{ .mem, .none, .none } },112966 .{ .src = .{ .to_mem, .none, .none } },
111413 .{ .src = .{ .to_gpr, .none, .none } },
111414 },112967 },
111415 .extra_temps = .{112968 .extra_temps = .{
111416 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },112969 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111417 .unused,112970 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111418 .unused,112971 .unused,
111419 .unused,112972 .unused,
111420 .unused,112973 .unused,
...@@ -111425,23 +112978,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111425,23 +112978,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111425 .unused,112978 .unused,
111426 .unused,112979 .unused,
111427 },112980 },
111428 .dst_temps = .{ .{ .rc = .sse }, .unused },112981 .dst_temps = .{ .mem, .unused },
112982 .clobbers = .{ .eflags = true },
111429 .each = .{ .once = &.{112983 .each = .{ .once = &.{
111430 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },112984 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111431 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },112985 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111432 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },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", ._, ._, ._ },
111433 } },112991 } },
111434 }, .{112992 }, .{
111435 .required_features = .{ .sse2, null, null, null },112993 .required_features = .{ .sse4_1, null, null, null },
111436 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },112994 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },
111437 .dst_constraints = .{ .{ .float = .qword }, .any },112995 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111438 .patterns = &.{112996 .patterns = &.{
111439 .{ .src = .{ .mem, .none, .none } },112997 .{ .src = .{ .to_mem, .none, .none } },
111440 .{ .src = .{ .to_gpr, .none, .none } },
111441 },112998 },
111442 .extra_temps = .{112999 .extra_temps = .{
111443 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111444 .unused,113001 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111445 .unused,113002 .unused,
111446 .unused,113003 .unused,
111447 .unused,113004 .unused,
...@@ -111452,25 +113009,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111452,25 +113009,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111452 .unused,113009 .unused,
111453 .unused,113010 .unused,
111454 },113011 },
111455 .dst_temps = .{ .{ .rc = .sse }, .unused },113012 .dst_temps = .{ .mem, .unused },
113013 .clobbers = .{ .eflags = true },
111456 .each = .{ .once = &.{113014 .each = .{ .once = &.{
111457 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },113015 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111458 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },113016 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111459 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },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", ._, ._, ._ },
111460 } },113022 } },
111461 }, .{113023 }, .{
111462 .required_features = .{ .avx, null, null, null },113024 .required_features = .{ .avx, null, null, null },
111463 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },113025 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
111464 .dst_constraints = .{ .{ .float = .qword }, .any },113026 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111465 .patterns = &.{113027 .patterns = &.{
111466 .{ .src = .{ .mem, .none, .none } },113028 .{ .src = .{ .to_mem, .none, .none } },
111467 .{ .src = .{ .to_gpr, .none, .none } },
111468 },113029 },
113030 .call_frame = .{ .alignment = .@"16" },
111469 .extra_temps = .{113031 .extra_temps = .{
111470 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113032 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111471 .unused,113033 .{ .type = .i32, .kind = .{ .reg = .edi } },
111472 .unused,113034 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
111473 .unused,113035 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111474 .unused,113036 .unused,
111475 .unused,113037 .unused,
111476 .unused,113038 .unused,
...@@ -111479,25 +113041,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111479,25 +113041,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111479 .unused,113041 .unused,
111480 .unused,113042 .unused,
111481 },113043 },
111482 .dst_temps = .{ .{ .rc = .sse }, .unused },113044 .dst_temps = .{ .mem, .unused },
113045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111483 .each = .{ .once = &.{113046 .each = .{ .once = &.{
111484 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },113047 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111485 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },113048 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
111486 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },113049 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113050 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113051 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113052 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111487 } },113053 } },
111488 }, .{113054 }, .{
111489 .required_features = .{ .sse2, null, null, null },113055 .required_features = .{ .sse2, null, null, null },
111490 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },113056 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
111491 .dst_constraints = .{ .{ .float = .qword }, .any },113057 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111492 .patterns = &.{113058 .patterns = &.{
111493 .{ .src = .{ .mem, .none, .none } },113059 .{ .src = .{ .to_mem, .none, .none } },
111494 .{ .src = .{ .to_gpr, .none, .none } },
111495 },113060 },
113061 .call_frame = .{ .alignment = .@"16" },
111496 .extra_temps = .{113062 .extra_temps = .{
111497 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113063 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111498 .unused,113064 .{ .type = .i32, .kind = .{ .reg = .edi } },
111499 .unused,113065 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
111500 .unused,113066 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111501 .unused,113067 .unused,
111502 .unused,113068 .unused,
111503 .unused,113069 .unused,
...@@ -111506,25 +113072,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111506,25 +113072,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111506 .unused,113072 .unused,
111507 .unused,113073 .unused,
111508 },113074 },
111509 .dst_temps = .{ .{ .rc = .sse }, .unused },113075 .dst_temps = .{ .mem, .unused },
113076 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111510 .each = .{ .once = &.{113077 .each = .{ .once = &.{
111511 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },113078 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111512 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },113079 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
111513 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },113080 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113081 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113082 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113083 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111514 } },113084 } },
111515 }, .{113085 }, .{
111516 .required_features = .{ .avx, null, null, null },113086 .required_features = .{ .sse, null, null, null },
111517 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },113087 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
111518 .dst_constraints = .{ .{ .float = .qword }, .any },113088 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111519 .patterns = &.{113089 .patterns = &.{
111520 .{ .src = .{ .mem, .none, .none } },113090 .{ .src = .{ .to_mem, .none, .none } },
111521 .{ .src = .{ .to_gpr, .none, .none } },
111522 },113091 },
113092 .call_frame = .{ .alignment = .@"16" },
111523 .extra_temps = .{113093 .extra_temps = .{
111524 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111525 .unused,113095 .{ .type = .i32, .kind = .{ .reg = .edi } },
111526 .unused,113096 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
111527 .unused,113097 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111528 .unused,113098 .unused,
111529 .unused,113099 .unused,
111530 .unused,113100 .unused,
...@@ -111533,25 +113103,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111533,25 +113103,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111533 .unused,113103 .unused,
111534 .unused,113104 .unused,
111535 },113105 },
111536 .dst_temps = .{ .{ .rc = .sse }, .unused },113106 .dst_temps = .{ .mem, .unused },
113107 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111537 .each = .{ .once = &.{113108 .each = .{ .once = &.{
111538 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },113109 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111539 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },113110 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
111540 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },113111 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113112 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113113 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113114 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111541 } },113115 } },
111542 }, .{113116 }, .{
111543 .required_features = .{ .sse2, null, null, null },113117 .required_features = .{ .avx, null, null, null },
111544 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },113118 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
111545 .dst_constraints = .{ .{ .float = .qword }, .any },113119 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111546 .patterns = &.{113120 .patterns = &.{
111547 .{ .src = .{ .mem, .none, .none } },113121 .{ .src = .{ .to_mem, .none, .none } },
111548 .{ .src = .{ .to_gpr, .none, .none } },
111549 },113122 },
113123 .call_frame = .{ .alignment = .@"16" },
111550 .extra_temps = .{113124 .extra_temps = .{
111551 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113125 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111552 .unused,113126 .{ .type = .u32, .kind = .{ .reg = .edi } },
111553 .unused,113127 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
111554 .unused,113128 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111555 .unused,113129 .unused,
111556 .unused,113130 .unused,
111557 .unused,113131 .unused,
...@@ -111560,25 +113134,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111560,25 +113134,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111560 .unused,113134 .unused,
111561 .unused,113135 .unused,
111562 },113136 },
111563 .dst_temps = .{ .{ .rc = .sse }, .unused },113137 .dst_temps = .{ .mem, .unused },
113138 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111564 .each = .{ .once = &.{113139 .each = .{ .once = &.{
111565 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },113140 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111566 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },113141 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
111567 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },113142 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113143 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113144 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113145 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111568 } },113146 } },
111569 }, .{113147 }, .{
111570 .required_features = .{ .avx, null, null, null },113148 .required_features = .{ .sse2, null, null, null },
111571 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },113149 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
111572 .dst_constraints = .{ .{ .float = .qword }, .any },113150 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111573 .patterns = &.{113151 .patterns = &.{
111574 .{ .src = .{ .mem, .none, .none } },113152 .{ .src = .{ .to_mem, .none, .none } },
111575 .{ .src = .{ .to_gpr, .none, .none } },
111576 },113153 },
113154 .call_frame = .{ .alignment = .@"16" },
111577 .extra_temps = .{113155 .extra_temps = .{
111578 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113156 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111579 .unused,113157 .{ .type = .u32, .kind = .{ .reg = .edi } },
111580 .unused,113158 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
111581 .unused,113159 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111582 .unused,113160 .unused,
111583 .unused,113161 .unused,
111584 .unused,113162 .unused,
...@@ -111587,25 +113165,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111587,25 +113165,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111587 .unused,113165 .unused,
111588 .unused,113166 .unused,
111589 },113167 },
111590 .dst_temps = .{ .{ .rc = .sse }, .unused },113168 .dst_temps = .{ .mem, .unused },
113169 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111591 .each = .{ .once = &.{113170 .each = .{ .once = &.{
111592 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },113171 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111593 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },113172 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
111594 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0d, ._ },113173 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113174 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113175 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113176 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111595 } },113177 } },
111596 }, .{113178 }, .{
111597 .required_features = .{ .sse2, null, null, null },113179 .required_features = .{ .sse, null, null, null },
111598 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },113180 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
111599 .dst_constraints = .{ .{ .float = .qword }, .any },113181 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111600 .patterns = &.{113182 .patterns = &.{
111601 .{ .src = .{ .mem, .none, .none } },113183 .{ .src = .{ .to_mem, .none, .none } },
111602 .{ .src = .{ .to_gpr, .none, .none } },
111603 },113184 },
113185 .call_frame = .{ .alignment = .@"16" },
111604 .extra_temps = .{113186 .extra_temps = .{
111605 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113187 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111606 .unused,113188 .{ .type = .u32, .kind = .{ .reg = .edi } },
111607 .unused,113189 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
111608 .unused,113190 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111609 .unused,113191 .unused,
111610 .unused,113192 .unused,
111611 .unused,113193 .unused,
...@@ -111614,104 +113196,63 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111614,104 +113196,63 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111614 .unused,113196 .unused,
111615 .unused,113197 .unused,
111616 },113198 },
111617 .dst_temps = .{ .{ .rc = .sse }, .unused },113199 .dst_temps = .{ .mem, .unused },
113200 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111618 .each = .{ .once = &.{113201 .each = .{ .once = &.{
111619 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },113202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111620 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },113203 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
111621 .{ ._, ._sd, .cvtsi2, .dst0x, .tmp0d, ._, ._ },113204 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113205 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113206 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113207 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111622 } },113208 } },
111623 }, .{113209 }, .{
111624 .required_features = .{ .avx, null, null, null },113210 .required_features = .{ .avx, null, null, null },
111625 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },113211 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
111626 .dst_constraints = .{ .{ .float = .qword }, .any },113212 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111627 .patterns = &.{113213 .patterns = &.{
111628 .{ .src = .{ .mem, .none, .none } },113214 .{ .src = .{ .mem, .none, .none } },
111629 .{ .src = .{ .to_gpr, .none, .none } },113215 .{ .src = .{ .to_sse, .none, .none } },
111630 },113216 },
111631 .dst_temps = .{ .{ .rc = .sse }, .unused },113217 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111632 .each = .{ .once = &.{113218 .each = .{ .once = &.{
111633 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },113219 .{ ._, .v_pd, .cvtdq2, .dst0x, .src0q, ._, ._ },
111634 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .src0d, ._ },
111635 } },113220 } },
111636 }, .{113221 }, .{
111637 .required_features = .{ .sse2, null, null, null },113222 .required_features = .{ .sse2, null, null, null },
111638 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },113223 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
111639 .dst_constraints = .{ .{ .float = .qword }, .any },113224 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111640 .patterns = &.{113225 .patterns = &.{
111641 .{ .src = .{ .mem, .none, .none } },113226 .{ .src = .{ .mem, .none, .none } },
111642 .{ .src = .{ .to_gpr, .none, .none } },113227 .{ .src = .{ .to_sse, .none, .none } },
111643 },113228 },
111644 .dst_temps = .{ .{ .rc = .sse }, .unused },113229 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111645 .each = .{ .once = &.{113230 .each = .{ .once = &.{
111646 .{ ._, ._pd, .xor, .dst0x, .dst0x, ._, ._ },113231 .{ ._, ._pd, .cvtdq2, .dst0x, .src0q, ._, ._ },
111647 .{ ._, ._sd, .cvtsi2, .dst0x, .src0d, ._, ._ },
111648 } },113232 } },
111649 }, .{113233 }, .{
111650 .required_features = .{ .avx, null, null, null },113234 .required_features = .{ .avx2, null, null, null },
111651 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },113235 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
111652 .dst_constraints = .{ .{ .float = .qword }, .any },113236 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111653 .patterns = &.{113237 .patterns = &.{
111654 .{ .src = .{ .mem, .none, .none } },113238 .{ .src = .{ .mem, .none, .none } },
111655 .{ .src = .{ .to_gpr, .none, .none } },113239 .{ .src = .{ .to_sse, .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,
111669 },113240 },
111670 .dst_temps = .{ .{ .rc = .sse }, .unused },113241 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
111671 .each = .{ .once = &.{113242 .each = .{ .once = &.{
111672 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },113243 .{ ._, .v_pd, .cvtdq2, .dst0y, .src0x, ._, ._ },
111673 .{ ._, .v_pd, .xor, .dst0x, .dst0x, .dst0x, ._ },
111674 .{ ._, .v_sd, .cvtsi2, .dst0x, .dst0x, .tmp0q, ._ },
111675 } },113244 } },
111676 }, .{113245 }, .{
111677 .required_features = .{ .sse2, null, null, null },113246 .required_features = .{ .avx2, null, null, null },
111678 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },113247 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .dword } }, .any, .any },
111679 .dst_constraints = .{ .{ .float = .qword }, .any },113248 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
111680 .patterns = &.{113249 .patterns = &.{
111681 .{ .src = .{ .mem, .none, .none } },113250 .{ .src = .{ .to_mem, .none, .none } },
111682 .{ .src = .{ .to_gpr, .none, .none } },
111683 },113251 },
111684 .extra_temps = .{113252 .extra_temps = .{
111685 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113253 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111686 .unused,113254 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },
111687 .unused,
111688 .unused,
111689 .unused,
111690 .unused,
111691 .unused,
111692 .unused,
111693 .unused,
111694 .unused,
111695 .unused,113255 .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 } },
111715 .unused,113256 .unused,
111716 .unused,113257 .unused,
111717 .unused,113258 .unused,
...@@ -111722,24 +113263,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111722,24 +113263,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111722 .unused,113263 .unused,
111723 },113264 },
111724 .dst_temps = .{ .mem, .unused },113265 .dst_temps = .{ .mem, .unused },
113266 .clobbers = .{ .eflags = true },
111725 .each = .{ .once = &.{113267 .each = .{ .once = &.{
111726 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },113268 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111727 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },113269 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
111728 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },113270 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
111729 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },113271 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
113272 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111730 } },113273 } },
111731 }, .{113274 }, .{
111732 .required_features = .{ .x87, null, null, null },113275 .required_features = .{ .avx, null, null, null },
111733 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },113276 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
111734 .dst_constraints = .{ .{ .float = .qword }, .any },113277 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111735 .patterns = &.{113278 .patterns = &.{
111736 .{ .src = .{ .mem, .none, .none } },113279 .{ .src = .{ .to_mem, .none, .none } },
111737 .{ .src = .{ .to_gpr, .none, .none } },
111738 },113280 },
111739 .extra_temps = .{113281 .extra_temps = .{
111740 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113282 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111741 .{ .type = .i16, .kind = .mem },113283 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111742 .{ .type = .f64, .kind = .{ .reg = .st7 } },113284 .unused,
111743 .unused,113285 .unused,
111744 .unused,113286 .unused,
111745 .unused,113287 .unused,
...@@ -111750,22 +113292,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111750,22 +113292,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111750 .unused,113292 .unused,
111751 },113293 },
111752 .dst_temps = .{ .mem, .unused },113294 .dst_temps = .{ .mem, .unused },
113295 .clobbers = .{ .eflags = true },
111753 .each = .{ .once = &.{113296 .each = .{ .once = &.{
111754 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },113297 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111755 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },113298 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
111756 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },113299 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
111757 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },113300 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113301 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111758 } },113302 } },
111759 }, .{113303 }, .{
111760 .required_features = .{ .x87, null, null, null },113304 .required_features = .{ .sse2, null, null, null },
111761 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },113305 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },
111762 .dst_constraints = .{ .{ .float = .qword }, .any },113306 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
111763 .patterns = &.{113307 .patterns = &.{
111764 .{ .src = .{ .to_mem, .none, .none } },113308 .{ .src = .{ .to_mem, .none, .none } },
111765 },113309 },
111766 .extra_temps = .{113310 .extra_temps = .{
111767 .{ .type = .f64, .kind = .{ .reg = .st7 } },113311 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111768 .unused,113312 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },
111769 .unused,113313 .unused,
111770 .unused,113314 .unused,
111771 .unused,113315 .unused,
...@@ -111777,23 +113321,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111777,23 +113321,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111777 .unused,113321 .unused,
111778 },113322 },
111779 .dst_temps = .{ .mem, .unused },113323 .dst_temps = .{ .mem, .unused },
113324 .clobbers = .{ .eflags = true },
111780 .each = .{ .once = &.{113325 .each = .{ .once = &.{
111781 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },113326 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111782 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },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", ._, ._, ._ },
111783 } },113331 } },
111784 }, .{113332 }, .{
111785 .required_features = .{ .x87, null, null, null },113333 .required_features = .{ .avx, null, null, null },
111786 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },113334 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111787 .dst_constraints = .{ .{ .float = .qword }, .any },113335 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111788 .patterns = &.{113336 .patterns = &.{
111789 .{ .src = .{ .mem, .none, .none } },113337 .{ .src = .{ .to_mem, .none, .none } },
111790 .{ .src = .{ .to_gpr, .none, .none } },
111791 },113338 },
113339 .call_frame = .{ .alignment = .@"16" },
111792 .extra_temps = .{113340 .extra_temps = .{
111793 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113341 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111794 .{ .type = .i32, .kind = .mem },113342 .{ .type = .i32, .kind = .{ .reg = .edi } },
111795 .{ .type = .f64, .kind = .{ .reg = .st7 } },113343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
111796 .unused,113344 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111797 .unused,113345 .unused,
111798 .unused,113346 .unused,
111799 .unused,113347 .unused,
...@@ -111803,24 +113351,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111803,24 +113351,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111803 .unused,113351 .unused,
111804 },113352 },
111805 .dst_temps = .{ .mem, .unused },113353 .dst_temps = .{ .mem, .unused },
113354 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111806 .each = .{ .once = &.{113355 .each = .{ .once = &.{
111807 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },113356 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111808 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },113357 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111809 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },113358 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111810 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },113359 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113360 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113361 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111811 } },113362 } },
111812 }, .{113363 }, .{
111813 .required_features = .{ .x87, null, null, null },113364 .required_features = .{ .sse2, null, null, null },
111814 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },113365 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111815 .dst_constraints = .{ .{ .float = .qword }, .any },113366 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111816 .patterns = &.{113367 .patterns = &.{
111817 .{ .src = .{ .to_mem, .none, .none } },113368 .{ .src = .{ .to_mem, .none, .none } },
111818 },113369 },
113370 .call_frame = .{ .alignment = .@"16" },
111819 .extra_temps = .{113371 .extra_temps = .{
111820 .{ .type = .f64, .kind = .{ .reg = .st7 } },113372 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111821 .unused,113373 .{ .type = .i32, .kind = .{ .reg = .edi } },
111822 .unused,113374 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
111823 .unused,113375 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111824 .unused,113376 .unused,
111825 .unused,113377 .unused,
111826 .unused,113378 .unused,
...@@ -111830,23 +113382,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111830,23 +113382,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111830 .unused,113382 .unused,
111831 },113383 },
111832 .dst_temps = .{ .mem, .unused },113384 .dst_temps = .{ .mem, .unused },
113385 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111833 .each = .{ .once = &.{113386 .each = .{ .once = &.{
111834 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },113387 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111835 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },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", ._, ._, ._ },
111836 } },113393 } },
111837 }, .{113394 }, .{
111838 .required_features = .{ .@"64bit", .x87, null, null },113395 .required_features = .{ .sse, null, null, null },
111839 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },113396 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111840 .dst_constraints = .{ .{ .float = .qword }, .any },113397 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111841 .patterns = &.{113398 .patterns = &.{
111842 .{ .src = .{ .mem, .none, .none } },113399 .{ .src = .{ .to_mem, .none, .none } },
111843 .{ .src = .{ .to_gpr, .none, .none } },
111844 },113400 },
113401 .call_frame = .{ .alignment = .@"16" },
111845 .extra_temps = .{113402 .extra_temps = .{
111846 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },113403 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111847 .{ .type = .i64, .kind = .mem },113404 .{ .type = .i32, .kind = .{ .reg = .edi } },
111848 .{ .type = .f64, .kind = .{ .reg = .st7 } },113405 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },
111849 .unused,113406 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111850 .unused,113407 .unused,
111851 .unused,113408 .unused,
111852 .unused,113409 .unused,
...@@ -111856,51 +113413,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111856,51 +113413,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111856 .unused,113413 .unused,
111857 },113414 },
111858 .dst_temps = .{ .mem, .unused },113415 .dst_temps = .{ .mem, .unused },
113416 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111859 .each = .{ .once = &.{113417 .each = .{ .once = &.{
111860 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },113418 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111861 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },113419 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111862 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },113420 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111863 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },113421 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111864 } },113422 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111865 }, .{113423 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._ },
111890 } },113424 } },
111891 }, .{113425 }, .{
111892 .required_features = .{ .@"64bit", .avx, null, null },113426 .required_features = .{ .avx, null, null, null },
111893 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },113427 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111894 .dst_constraints = .{ .{ .float = .qword }, .any },113428 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111895 .patterns = &.{113429 .patterns = &.{
111896 .{ .src = .{ .mem, .none, .none } },113430 .{ .src = .{ .to_mem, .none, .none } },
111897 .{ .src = .{ .to_gpr, .none, .none } },
111898 },113431 },
113432 .call_frame = .{ .alignment = .@"16" },
111899 .extra_temps = .{113433 .extra_temps = .{
111900 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },113434 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111901 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },113435 .{ .type = .u32, .kind = .{ .reg = .edi } },
111902 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },113436 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
111903 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },113437 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111904 .unused,113438 .unused,
111905 .unused,113439 .unused,
111906 .unused,113440 .unused,
...@@ -111909,29 +113443,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111909,29 +113443,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111909 .unused,113443 .unused,
111910 .unused,113444 .unused,
111911 },113445 },
111912 .dst_temps = .{ .{ .rc = .sse }, .unused },113446 .dst_temps = .{ .mem, .unused },
113447 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111913 .each = .{ .once = &.{113448 .each = .{ .once = &.{
111914 .{ ._, .v_q, .mov, .tmp0x, .src0q, ._, ._ },113449 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111915 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },113450 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111916 .{ ._, .vp_, .unpckldq, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },113451 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111917 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },113452 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111918 .{ ._, .v_pd, .sub, .tmp0x, .tmp0x, .lea(.tmp1x), ._ },113453 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111919 .{ ._, .v_pd, .unpckh, .dst0x, .tmp0x, .tmp0x, ._ },113454 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111920 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
111921 } },113455 } },
111922 }, .{113456 }, .{
111923 .required_features = .{ .@"64bit", .sse2, null, null },113457 .required_features = .{ .sse2, null, null, null },
111924 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },113458 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111925 .dst_constraints = .{ .{ .float = .qword }, .any },113459 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111926 .patterns = &.{113460 .patterns = &.{
111927 .{ .src = .{ .mem, .none, .none } },113461 .{ .src = .{ .to_mem, .none, .none } },
111928 .{ .src = .{ .to_gpr, .none, .none } },
111929 },113462 },
113463 .call_frame = .{ .alignment = .@"16" },
111930 .extra_temps = .{113464 .extra_temps = .{
111931 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },113465 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111932 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },113466 .{ .type = .u32, .kind = .{ .reg = .edi } },
111933 .{ .type = .vector_4_u32, .kind = .u32_0x1p52_hi_0x1p84_hi_0_0_mem },113467 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
111934 .{ .type = .vector_2_f64, .kind = .f64_0x1p52_0x1p84_mem },113468 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111935 .unused,113469 .unused,
111936 .unused,113470 .unused,
111937 .unused,113471 .unused,
...@@ -111940,29 +113474,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111940,29 +113474,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111940 .unused,113474 .unused,
111941 .unused,113475 .unused,
111942 },113476 },
111943 .dst_temps = .{ .{ .rc = .sse }, .unused },113477 .dst_temps = .{ .mem, .unused },
113478 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111944 .each = .{ .once = &.{113479 .each = .{ .once = &.{
111945 .{ ._, ._q, .mov, .tmp0x, .src0q, ._, ._ },113480 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111946 .{ ._, ._, .lea, .tmp1p, .mem(.tmp2), ._, ._ },113481 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
111947 .{ ._, .p_, .unpckldq, .tmp0x, .lea(.tmp1x), ._, ._ },113482 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
111948 .{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },113483 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
111949 .{ ._, ._pd, .sub, .tmp0x, .lea(.tmp1x), ._, ._ },113484 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
111950 .{ ._, ._pd, .mova, .dst0x, .tmp0x, ._, ._ },113485 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
111951 .{ ._, ._pd, .unpckh, .dst0x, .dst0x, ._, ._ },
111952 .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ },
111953 } },113486 } },
111954 }, .{113487 }, .{
111955 .required_features = .{ .x87, null, null, null },113488 .required_features = .{ .sse, null, null, null },
111956 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },113489 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
111957 .dst_constraints = .{ .{ .float = .qword }, .any },113490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111958 .patterns = &.{113491 .patterns = &.{
111959 .{ .src = .{ .to_mem, .none, .none } },113492 .{ .src = .{ .to_mem, .none, .none } },
111960 },113493 },
113494 .call_frame = .{ .alignment = .@"16" },
111961 .extra_temps = .{113495 .extra_temps = .{
111962 .{ .type = .f64, .kind = .{ .reg = .st7 } },113496 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111963 .unused,113497 .{ .type = .u32, .kind = .{ .reg = .edi } },
111964 .unused,113498 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },
111965 .unused,113499 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
111966 .unused,113500 .unused,
111967 .unused,113501 .unused,
111968 .unused,113502 .unused,
...@@ -111972,20 +113506,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111972,20 +113506,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111972 .unused,113506 .unused,
111973 },113507 },
111974 .dst_temps = .{ .mem, .unused },113508 .dst_temps = .{ .mem, .unused },
113509 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
111975 .each = .{ .once = &.{113510 .each = .{ .once = &.{
111976 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },113511 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
111977 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },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", ._, ._, ._ },
111978 } },113517 } },
111979 }, .{113518 }, .{
111980 .required_features = .{ .@"64bit", .x87, null, null },113519 .required_features = .{ .@"64bit", .avx, null, null },
111981 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },113520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
111982 .dst_constraints = .{ .{ .float = .qword }, .any },113521 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
111983 .patterns = &.{113522 .patterns = &.{
111984 .{ .src = .{ .to_mut_gpr, .none, .none } },113523 .{ .src = .{ .to_mem, .none, .none } },
111985 },113524 },
111986 .extra_temps = .{113525 .extra_temps = .{
111987 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },113526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
111988 .{ .type = .f64, .kind = .{ .reg = .st7 } },113527 .{ .type = .f64, .kind = .{ .rc = .sse } },
111989 .unused,113528 .unused,
111990 .unused,113529 .unused,
111991 .unused,113530 .unused,
...@@ -111999,32 +113538,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -111999,32 +113538,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
111999 .dst_temps = .{ .mem, .unused },113538 .dst_temps = .{ .mem, .unused },
112000 .clobbers = .{ .eflags = true },113539 .clobbers = .{ .eflags = true },
112001 .each = .{ .once = &.{113540 .each = .{ .once = &.{
112002 .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ },113541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112003 .{ ._, ._ns, .j, .@"1f", ._, ._, ._ },113542 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
112004 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },113543 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },
112005 .{ ._, ._r, .sh, .src0q, .ui(1), ._, ._ },113544 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112006 .{ ._, ._, .@"and", .tmp0d, .si(1), ._, ._ },113545 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112007 .{ ._, ._, .@"or", .src0q, .tmp0q, ._, ._ },113546 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
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, ._, ._, ._ },
112016 } },113547 } },
112017 }, .{113548 }, .{
112018 .required_features = .{ .@"64bit", .sse, null, null },113549 .required_features = .{ .@"64bit", .sse2, null, null },
112019 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },113550 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112020 .dst_constraints = .{ .{ .float = .qword }, .any },113551 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112021 .patterns = &.{113552 .patterns = &.{
112022 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },113553 .{ .src = .{ .to_mem, .none, .none } },
112023 },113554 },
112024 .call_frame = .{ .alignment = .@"16" },
112025 .extra_temps = .{113555 .extra_temps = .{
112026 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },113556 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112027 .unused,113557 .{ .type = .f64, .kind = .{ .rc = .sse } },
112028 .unused,113558 .unused,
112029 .unused,113559 .unused,
112030 .unused,113560 .unused,
...@@ -112035,24 +113565,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112035,24 +113565,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112035 .unused,113565 .unused,
112036 .unused,113566 .unused,
112037 },113567 },
112038 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },113568 .dst_temps = .{ .mem, .unused },
112039 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113569 .clobbers = .{ .eflags = true },
112040 .each = .{ .once = &.{113570 .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", ._, ._, ._ },
112042 } },113577 } },
112043 }, .{113578 }, .{
112044 .required_features = .{ .@"64bit", .sse, null, null },113579 .required_features = .{ .@"64bit", .avx, null, null },
112045 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },113580 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112046 .dst_constraints = .{ .{ .float = .qword }, .any },113581 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112047 .patterns = &.{113582 .patterns = &.{
112048 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },113583 .{ .src = .{ .to_mem, .none, .none } },
112049 },113584 },
112050 .call_frame = .{ .alignment = .@"16" },113585 .call_frame = .{ .alignment = .@"16" },
112051 .extra_temps = .{113586 .extra_temps = .{
112052 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },113587 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112053 .unused,113588 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112054 .unused,113589 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
112055 .unused,113590 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112056 .unused,113591 .unused,
112057 .unused,113592 .unused,
112058 .unused,113593 .unused,
...@@ -112061,24 +113596,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112061,24 +113596,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112061 .unused,113596 .unused,
112062 .unused,113597 .unused,
112063 },113598 },
112064 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },113599 .dst_temps = .{ .mem, .unused },
112065 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113600 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112066 .each = .{ .once = &.{113601 .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", ._, ._, ._ },
112068 } },113608 } },
112069 }, .{113609 }, .{
112070 .required_features = .{ .@"64bit", .sse, null, null },113610 .required_features = .{ .@"64bit", .sse2, null, null },
112071 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },113611 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112072 .dst_constraints = .{ .{ .float = .qword }, .any },113612 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112073 .patterns = &.{113613 .patterns = &.{
112074 .{ .src = .{ .to_mem, .none, .none } },113614 .{ .src = .{ .to_mem, .none, .none } },
112075 },113615 },
112076 .call_frame = .{ .alignment = .@"16" },113616 .call_frame = .{ .alignment = .@"16" },
112077 .extra_temps = .{113617 .extra_temps = .{
112078 .{ .type = .usize, .kind = .{ .reg = .rdi } },113618 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112079 .{ .type = .usize, .kind = .{ .reg = .rsi } },113619 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112080 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },113620 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
112081 .unused,113621 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112082 .unused,113622 .unused,
112083 .unused,113623 .unused,
112084 .unused,113624 .unused,
...@@ -112087,26 +113627,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112087,26 +113627,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112087 .unused,113627 .unused,
112088 .unused,113628 .unused,
112089 },113629 },
112090 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },113630 .dst_temps = .{ .mem, .unused },
112091 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113631 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112092 .each = .{ .once = &.{113632 .each = .{ .once = &.{
112093 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },113633 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112094 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },113634 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112095 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113635 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113636 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113637 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112096 } },113639 } },
112097 }, .{113640 }, .{
112098 .required_features = .{ .@"64bit", .sse, null, null },113641 .required_features = .{ .@"64bit", .sse, null, null },
112099 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },113642 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112100 .dst_constraints = .{ .{ .float = .qword }, .any },113643 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112101 .patterns = &.{113644 .patterns = &.{
112102 .{ .src = .{ .to_mem, .none, .none } },113645 .{ .src = .{ .to_mem, .none, .none } },
112103 },113646 },
112104 .call_frame = .{ .alignment = .@"16" },113647 .call_frame = .{ .alignment = .@"16" },
112105 .extra_temps = .{113648 .extra_temps = .{
112106 .{ .type = .usize, .kind = .{ .reg = .rdi } },113649 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112107 .{ .type = .usize, .kind = .{ .reg = .rsi } },113650 .{ .type = .i64, .kind = .{ .reg = .rdi } },
112108 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },113651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },
112109 .unused,113652 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112110 .unused,113653 .unused,
112111 .unused,113654 .unused,
112112 .unused,113655 .unused,
...@@ -112115,103 +113658,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112115,103 +113658,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112115 .unused,113658 .unused,
112116 .unused,113659 .unused,
112117 },113660 },
112118 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },113661 .dst_temps = .{ .mem, .unused },
112119 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112120 .each = .{ .once = &.{113663 .each = .{ .once = &.{
112121 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },113664 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112122 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },113665 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112123 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113666 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113667 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113668 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113669 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112124 } },113670 } },
112125 }, .{113671 }, .{
112126 .required_features = .{ .avx, null, null, null },113672 .required_features = .{ .@"64bit", .avx, null, null },
112127 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },113673 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112128 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },113674 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .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 },
112207 .patterns = &.{113675 .patterns = &.{
112208 .{ .src = .{ .to_mem, .none, .none } },113676 .{ .src = .{ .to_mem, .none, .none } },
112209 },113677 },
113678 .call_frame = .{ .alignment = .@"16" },
112210 .extra_temps = .{113679 .extra_temps = .{
112211 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113680 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112212 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },113681 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112213 .unused,113682 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
112214 .unused,113683 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112215 .unused,113684 .unused,
112216 .unused,113685 .unused,
112217 .unused,113686 .unused,
...@@ -112221,27 +113690,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112221,27 +113690,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112221 .unused,113690 .unused,
112222 },113691 },
112223 .dst_temps = .{ .mem, .unused },113692 .dst_temps = .{ .mem, .unused },
112224 .clobbers = .{ .eflags = true },113693 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112225 .each = .{ .once = &.{113694 .each = .{ .once = &.{
112226 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113695 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112227 .{ .@"0:", .vp_d, .movsxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },113696 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112228 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },113697 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112229 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },113698 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112230 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },113699 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112231 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113700 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112232 } },113701 } },
112233 }, .{113702 }, .{
112234 .required_features = .{ .avx, null, null, null },113703 .required_features = .{ .@"64bit", .sse2, null, null },
112235 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },113704 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112236 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },113705 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112237 .patterns = &.{113706 .patterns = &.{
112238 .{ .src = .{ .to_mem, .none, .none } },113707 .{ .src = .{ .to_mem, .none, .none } },
112239 },113708 },
113709 .call_frame = .{ .alignment = .@"16" },
112240 .extra_temps = .{113710 .extra_temps = .{
112241 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113711 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112242 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },113712 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112243 .unused,113713 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
112244 .unused,113714 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112245 .unused,113715 .unused,
112246 .unused,113716 .unused,
112247 .unused,113717 .unused,
...@@ -112251,29 +113721,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112251,29 +113721,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112251 .unused,113721 .unused,
112252 },113722 },
112253 .dst_temps = .{ .mem, .unused },113723 .dst_temps = .{ .mem, .unused },
112254 .clobbers = .{ .eflags = true },113724 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112255 .each = .{ .once = &.{113725 .each = .{ .once = &.{
112256 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113726 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112257 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },113727 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112258 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },113728 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112259 .{ ._, .vp_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },113729 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112260 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },113730 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112261 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112262 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
112263 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113731 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112264 } },113732 } },
112265 }, .{113733 }, .{
112266 .required_features = .{ .sse4_1, null, null, null },113734 .required_features = .{ .@"64bit", .sse, null, null },
112267 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .byte } }, .any, .any },113735 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
112268 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },113736 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112269 .patterns = &.{113737 .patterns = &.{
112270 .{ .src = .{ .to_mem, .none, .none } },113738 .{ .src = .{ .to_mem, .none, .none } },
112271 },113739 },
113740 .call_frame = .{ .alignment = .@"16" },
112272 .extra_temps = .{113741 .extra_temps = .{
112273 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112274 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },113743 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112275 .unused,113744 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },
112276 .unused,113745 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112277 .unused,113746 .unused,
112278 .unused,113747 .unused,
112279 .unused,113748 .unused,
...@@ -112283,30 +113752,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112283,30 +113752,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112283 .unused,113752 .unused,
112284 },113753 },
112285 .dst_temps = .{ .mem, .unused },113754 .dst_temps = .{ .mem, .unused },
112286 .clobbers = .{ .eflags = true },113755 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112287 .each = .{ .once = &.{113756 .each = .{ .once = &.{
112288 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113757 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112289 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },113758 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
112290 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },113759 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112291 .{ ._, .p_d, .movsxb, .tmp1x, .tmp1d, ._, ._ },113760 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112292 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },113761 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112293 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
112294 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
112295 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113762 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112296 } },113763 } },
112297 }, .{113764 }, .{
112298 .required_features = .{ .avx2, null, null, null },113765 .required_features = .{ .@"64bit", .avx, null, null },
112299 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .byte } }, .any, .any },113766 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112300 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },113767 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112301 .patterns = &.{113768 .patterns = &.{
112302 .{ .src = .{ .to_mem, .none, .none } },113769 .{ .src = .{ .to_mem, .none, .none } },
112303 },113770 },
113771 .call_frame = .{ .alignment = .@"16" },
112304 .extra_temps = .{113772 .extra_temps = .{
112305 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113773 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112306 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },113774 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112307 .unused,113775 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112308 .unused,113776 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
112309 .unused,113777 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112310 .unused,113778 .unused,
112311 .unused,113779 .unused,
112312 .unused,113780 .unused,
...@@ -112315,28 +113783,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112315,28 +113783,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112315 .unused,113783 .unused,
112316 },113784 },
112317 .dst_temps = .{ .mem, .unused },113785 .dst_temps = .{ .mem, .unused },
112318 .clobbers = .{ .eflags = true },113786 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112319 .each = .{ .once = &.{113787 .each = .{ .once = &.{
112320 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113788 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112321 .{ .@"0:", .vp_d, .movzxb, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },113789 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112322 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },113790 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
112323 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"8", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },113791 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112324 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },113792 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113793 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112325 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113794 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112326 } },113795 } },
112327 }, .{113796 }, .{
112328 .required_features = .{ .avx, null, null, null },113797 .required_features = .{ .@"64bit", .sse2, null, null },
112329 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },113798 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112330 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },113799 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112331 .patterns = &.{113800 .patterns = &.{
112332 .{ .src = .{ .to_mem, .none, .none } },113801 .{ .src = .{ .to_mem, .none, .none } },
112333 },113802 },
113803 .call_frame = .{ .alignment = .@"16" },
112334 .extra_temps = .{113804 .extra_temps = .{
112335 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113805 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112336 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },113806 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112337 .unused,113807 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112338 .unused,113808 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
112339 .unused,113809 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112340 .unused,113810 .unused,
112341 .unused,113811 .unused,
112342 .unused,113812 .unused,
...@@ -112345,30 +113815,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112345,30 +113815,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112345 .unused,113815 .unused,
112346 },113816 },
112347 .dst_temps = .{ .mem, .unused },113817 .dst_temps = .{ .mem, .unused },
112348 .clobbers = .{ .eflags = true },113818 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112349 .each = .{ .once = &.{113819 .each = .{ .once = &.{
112350 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113820 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112351 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },113821 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112352 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },113822 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
112353 .{ ._, .vp_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },113823 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112354 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },113824 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112355 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },113825 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112356 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
112357 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113826 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112358 } },113827 } },
112359 }, .{113828 }, .{
112360 .required_features = .{ .sse4_1, null, null, null },113829 .required_features = .{ .@"64bit", .sse, null, null },
112361 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .byte } }, .any, .any },113830 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112362 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },113831 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112363 .patterns = &.{113832 .patterns = &.{
112364 .{ .src = .{ .to_mem, .none, .none } },113833 .{ .src = .{ .to_mem, .none, .none } },
112365 },113834 },
113835 .call_frame = .{ .alignment = .@"16" },
112366 .extra_temps = .{113836 .extra_temps = .{
112367 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113837 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112368 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },113838 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112369 .unused,113839 .{ .type = .i64, .kind = .{ .reg = .rsi } },
112370 .unused,113840 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },
112371 .unused,113841 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112372 .unused,113842 .unused,
112373 .unused,113843 .unused,
112374 .unused,113844 .unused,
...@@ -112377,20 +113847,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112377,20 +113847,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112377 .unused,113847 .unused,
112378 },113848 },
112379 .dst_temps = .{ .mem, .unused },113849 .dst_temps = .{ .mem, .unused },
112380 .clobbers = .{ .eflags = true },113850 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112381 .each = .{ .once = &.{113851 .each = .{ .once = &.{
112382 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113852 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112383 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },113853 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112384 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },113854 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
112385 .{ ._, .p_d, .movzxb, .tmp1x, .tmp1d, ._, ._ },113855 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112386 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },113856 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112387 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },113857 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112388 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
112389 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113858 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112390 } },113859 } },
112391 }, .{113860 }, .{
112392 .required_features = .{ .avx, .slow_incdec, null, null },113861 .required_features = .{ .@"64bit", .avx, null, null },
112393 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },113862 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112394 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },113863 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112395 .patterns = &.{113864 .patterns = &.{
112396 .{ .src = .{ .to_mem, .none, .none } },113865 .{ .src = .{ .to_mem, .none, .none } },
...@@ -112398,8 +113867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112398,8 +113867,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112398 .call_frame = .{ .alignment = .@"16" },113867 .call_frame = .{ .alignment = .@"16" },
112399 .extra_temps = .{113868 .extra_temps = .{
112400 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113869 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112401 .{ .type = .i32, .kind = .{ .reg = .edi } },113870 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113871 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113872 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112403 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113873 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112404 .unused,113874 .unused,
112405 .unused,113875 .unused,
...@@ -112407,21 +113877,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112407,21 +113877,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112407 .unused,113877 .unused,
112408 .unused,113878 .unused,
112409 .unused,113879 .unused,
112410 .unused,
112411 },113880 },
112412 .dst_temps = .{ .mem, .unused },113881 .dst_temps = .{ .mem, .unused },
112413 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113882 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112414 .each = .{ .once = &.{113883 .each = .{ .once = &.{
112415 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113884 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112416 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },113885 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112417 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113886 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
112418 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },113887 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112419 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },113888 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113889 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112420 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113890 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112421 } },113891 } },
112422 }, .{113892 }, .{
112423 .required_features = .{ .avx, null, null, null },113893 .required_features = .{ .@"64bit", .sse2, null, null },
112424 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },113894 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112425 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },113895 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112426 .patterns = &.{113896 .patterns = &.{
112427 .{ .src = .{ .to_mem, .none, .none } },113897 .{ .src = .{ .to_mem, .none, .none } },
...@@ -112429,8 +113899,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112429,8 +113899,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112429 .call_frame = .{ .alignment = .@"16" },113899 .call_frame = .{ .alignment = .@"16" },
112430 .extra_temps = .{113900 .extra_temps = .{
112431 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113901 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112432 .{ .type = .i32, .kind = .{ .reg = .edi } },113902 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112433 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113903 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113904 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112434 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113905 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112435 .unused,113906 .unused,
112436 .unused,113907 .unused,
...@@ -112438,21 +113909,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112438,21 +113909,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112438 .unused,113909 .unused,
112439 .unused,113910 .unused,
112440 .unused,113911 .unused,
112441 .unused,
112442 },113912 },
112443 .dst_temps = .{ .mem, .unused },113913 .dst_temps = .{ .mem, .unused },
112444 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113914 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112445 .each = .{ .once = &.{113915 .each = .{ .once = &.{
112446 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113916 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112447 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },113917 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112448 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113918 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
112449 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },113919 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112450 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },113920 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
112451 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },113921 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113922 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112452 } },113923 } },
112453 }, .{113924 }, .{
112454 .required_features = .{ .sse2, .slow_incdec, null, null },113925 .required_features = .{ .@"64bit", .sse, null, null },
112455 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },113926 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
112456 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },113927 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112457 .patterns = &.{113928 .patterns = &.{
112458 .{ .src = .{ .to_mem, .none, .none } },113929 .{ .src = .{ .to_mem, .none, .none } },
...@@ -112460,8 +113931,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112460,8 +113931,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112460 .call_frame = .{ .alignment = .@"16" },113931 .call_frame = .{ .alignment = .@"16" },
112461 .extra_temps = .{113932 .extra_temps = .{
112462 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113933 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112463 .{ .type = .i32, .kind = .{ .reg = .edi } },113934 .{ .type = .u64, .kind = .{ .reg = .rdi } },
112464 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113935 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113936 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },
112465 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113937 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112466 .unused,113938 .unused,
112467 .unused,113939 .unused,
...@@ -112469,217 +113941,235 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112469,217 +113941,235 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112469 .unused,113941 .unused,
112470 .unused,113942 .unused,
112471 .unused,113943 .unused,
112472 .unused,
112473 },113944 },
112474 .dst_temps = .{ .mem, .unused },113945 .dst_temps = .{ .mem, .unused },
112475 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113946 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112476 .each = .{ .once = &.{113947 .each = .{ .once = &.{
112477 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113948 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112478 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },113949 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
112479 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113950 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },
112480 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },113951 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
112481 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },113952 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113953 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
112482 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },113954 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112483 } },113955 } },
112484 }, .{113956 }, .{
112485 .required_features = .{ .sse2, null, null, null },113957 .required_features = .{ .@"64bit", .avx, null, null },
112486 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },113958 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112487 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },113959 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112488 .patterns = &.{113960 .patterns = &.{
112489 .{ .src = .{ .to_mem, .none, .none } },113961 .{ .src = .{ .to_mem, .none, .none } },
112490 },113962 },
112491 .call_frame = .{ .alignment = .@"16" },113963 .call_frame = .{ .alignment = .@"16" },
112492 .extra_temps = .{113964 .extra_temps = .{
113965 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },113966 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112494 .{ .type = .i32, .kind = .{ .reg = .edi } },113967 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112495 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },113968 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113969 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112496 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },113970 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112497 .unused,113971 .unused,
112498 .unused,113972 .unused,
112499 .unused,113973 .unused,
112500 .unused,113974 .unused,
112501 .unused,113975 .unused,
112502 .unused,
112503 .unused,
112504 },113976 },
112505 .dst_temps = .{ .mem, .unused },113977 .dst_temps = .{ .mem, .unused },
112506 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },113978 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112507 .each = .{ .once = &.{113979 .each = .{ .once = &.{
112508 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },113980 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112509 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },113981 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112510 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },113982 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112511 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },113983 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112512 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },113984 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112513 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
112514 } },113989 } },
112515 }, .{113990 }, .{
112516 .required_features = .{ .sse, .slow_incdec, null, null },113991 .required_features = .{ .@"64bit", .sse2, null, null },
112517 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },113992 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112518 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },113993 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112519 .patterns = &.{113994 .patterns = &.{
112520 .{ .src = .{ .to_mem, .none, .none } },113995 .{ .src = .{ .to_mem, .none, .none } },
112521 },113996 },
112522 .call_frame = .{ .alignment = .@"16" },113997 .call_frame = .{ .alignment = .@"16" },
112523 .extra_temps = .{113998 .extra_temps = .{
113999 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112524 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114000 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112525 .{ .type = .i32, .kind = .{ .reg = .edi } },114001 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112526 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114002 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114003 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112527 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114004 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112528 .unused,114005 .unused,
112529 .unused,114006 .unused,
112530 .unused,114007 .unused,
112531 .unused,114008 .unused,
112532 .unused,114009 .unused,
112533 .unused,
112534 .unused,
112535 },114010 },
112536 .dst_temps = .{ .mem, .unused },114011 .dst_temps = .{ .mem, .unused },
112537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114012 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112538 .each = .{ .once = &.{114013 .each = .{ .once = &.{
112539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114014 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112540 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114015 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112541 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114016 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112542 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114017 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112543 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },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), ._, ._ },
112544 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114022 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112545 } },114023 } },
112546 }, .{114024 }, .{
112547 .required_features = .{ .sse, null, null, null },114025 .required_features = .{ .@"64bit", .sse, null, null },
112548 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },114026 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112549 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114027 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112550 .patterns = &.{114028 .patterns = &.{
112551 .{ .src = .{ .to_mem, .none, .none } },114029 .{ .src = .{ .to_mem, .none, .none } },
112552 },114030 },
112553 .call_frame = .{ .alignment = .@"16" },114031 .call_frame = .{ .alignment = .@"16" },
112554 .extra_temps = .{114032 .extra_temps = .{
114033 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112555 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112556 .{ .type = .i32, .kind = .{ .reg = .edi } },114035 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112557 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114036 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114037 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },
112558 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114038 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112559 .unused,114039 .unused,
112560 .unused,114040 .unused,
112561 .unused,114041 .unused,
112562 .unused,114042 .unused,
112563 .unused,114043 .unused,
112564 .unused,
112565 .unused,
112566 },114044 },
112567 .dst_temps = .{ .mem, .unused },114045 .dst_temps = .{ .mem, .unused },
112568 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114046 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112569 .each = .{ .once = &.{114047 .each = .{ .once = &.{
112570 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114048 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112571 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114049 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112572 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114050 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112573 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114051 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112574 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },114052 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112575 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
112576 } },114057 } },
112577 }, .{114058 }, .{
112578 .required_features = .{ .avx, .slow_incdec, null, null },114059 .required_features = .{ .@"64bit", .avx, null, null },
112579 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },114060 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112580 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114061 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112581 .patterns = &.{114062 .patterns = &.{
112582 .{ .src = .{ .to_mem, .none, .none } },114063 .{ .src = .{ .to_mem, .none, .none } },
112583 },114064 },
112584 .call_frame = .{ .alignment = .@"16" },114065 .call_frame = .{ .alignment = .@"16" },
112585 .extra_temps = .{114066 .extra_temps = .{
114067 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112586 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114068 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112587 .{ .type = .u32, .kind = .{ .reg = .edi } },114069 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114070 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114071 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112589 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114072 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112590 .unused,114073 .unused,
112591 .unused,114074 .unused,
112592 .unused,114075 .unused,
112593 .unused,114076 .unused,
112594 .unused,114077 .unused,
112595 .unused,
112596 .unused,
112597 },114078 },
112598 .dst_temps = .{ .mem, .unused },114079 .dst_temps = .{ .mem, .unused },
112599 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114080 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112600 .each = .{ .once = &.{114081 .each = .{ .once = &.{
112601 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114082 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112602 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114083 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112603 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114084 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112604 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114085 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112605 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },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), ._, ._ },
112606 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114090 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112607 } },114091 } },
112608 }, .{114092 }, .{
112609 .required_features = .{ .avx, null, null, null },114093 .required_features = .{ .@"64bit", .sse2, null, null },
112610 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },114094 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112611 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114095 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112612 .patterns = &.{114096 .patterns = &.{
112613 .{ .src = .{ .to_mem, .none, .none } },114097 .{ .src = .{ .to_mem, .none, .none } },
112614 },114098 },
112615 .call_frame = .{ .alignment = .@"16" },114099 .call_frame = .{ .alignment = .@"16" },
112616 .extra_temps = .{114100 .extra_temps = .{
114101 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112617 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114102 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112618 .{ .type = .u32, .kind = .{ .reg = .edi } },114103 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112619 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114104 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114105 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112620 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114106 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112621 .unused,114107 .unused,
112622 .unused,114108 .unused,
112623 .unused,114109 .unused,
112624 .unused,114110 .unused,
112625 .unused,114111 .unused,
112626 .unused,
112627 .unused,
112628 },114112 },
112629 .dst_temps = .{ .mem, .unused },114113 .dst_temps = .{ .mem, .unused },
112630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114114 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112631 .each = .{ .once = &.{114115 .each = .{ .once = &.{
112632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114116 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112633 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114117 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112634 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114118 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112635 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114119 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112636 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },114120 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
112637 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },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", ._, ._, ._ },
112638 } },114125 } },
112639 }, .{114126 }, .{
112640 .required_features = .{ .sse2, .slow_incdec, null, null },114127 .required_features = .{ .@"64bit", .sse, null, null },
112641 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },114128 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112642 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114129 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },
112643 .patterns = &.{114130 .patterns = &.{
112644 .{ .src = .{ .to_mem, .none, .none } },114131 .{ .src = .{ .to_mem, .none, .none } },
112645 },114132 },
112646 .call_frame = .{ .alignment = .@"16" },114133 .call_frame = .{ .alignment = .@"16" },
112647 .extra_temps = .{114134 .extra_temps = .{
114135 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112649 .{ .type = .u32, .kind = .{ .reg = .edi } },114137 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112650 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114138 .{ .type = .usize, .kind = .{ .reg = .rsi } },
114139 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },
112651 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114140 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },
112652 .unused,114141 .unused,
112653 .unused,114142 .unused,
112654 .unused,114143 .unused,
112655 .unused,114144 .unused,
112656 .unused,114145 .unused,
112657 .unused,
112658 .unused,
112659 },114146 },
112660 .dst_temps = .{ .mem, .unused },114147 .dst_temps = .{ .mem, .unused },
112661 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114148 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112662 .each = .{ .once = &.{114149 .each = .{ .once = &.{
112663 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114150 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112664 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114151 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
112665 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114152 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
112666 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114153 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
112667 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },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), ._, ._ },
112668 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114158 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112669 } },114159 } },
112670 }, .{114160 }, .{
112671 .required_features = .{ .sse2, null, null, null },114161 .required_features = .{ .x87, null, null, null },
112672 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },114162 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
112673 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114163 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112674 .patterns = &.{114164 .patterns = &.{
112675 .{ .src = .{ .to_mem, .none, .none } },114165 .{ .src = .{ .mem, .none, .none } },
114166 .{ .src = .{ .to_gpr, .none, .none } },
112676 },114167 },
112677 .call_frame = .{ .alignment = .@"16" },
112678 .extra_temps = .{114168 .extra_temps = .{
112679 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114169 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
112680 .{ .type = .u32, .kind = .{ .reg = .edi } },114170 .{ .type = .i16, .kind = .mem },
112681 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114171 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112682 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114172 .unused,
112683 .unused,114173 .unused,
112684 .unused,114174 .unused,
112685 .unused,114175 .unused,
...@@ -112688,29 +114178,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112688,29 +114178,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112688 .unused,114178 .unused,
112689 .unused,114179 .unused,
112690 },114180 },
112691 .dst_temps = .{ .mem, .unused },114181 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112692 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112693 .each = .{ .once = &.{114182 .each = .{ .once = &.{
112694 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114183 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
112695 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114184 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
112696 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114185 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
112697 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114186 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112698 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112699 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112700 } },114187 } },
112701 }, .{114188 }, .{
112702 .required_features = .{ .sse, .slow_incdec, null, null },114189 .required_features = .{ .x87, null, null, null },
112703 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },114190 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
112704 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114191 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112705 .patterns = &.{114192 .patterns = &.{
112706 .{ .src = .{ .to_mem, .none, .none } },114193 .{ .src = .{ .mem, .none, .none } },
114194 .{ .src = .{ .to_gpr, .none, .none } },
112707 },114195 },
112708 .call_frame = .{ .alignment = .@"16" },
112709 .extra_temps = .{114196 .extra_temps = .{
112710 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114197 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },
112711 .{ .type = .u32, .kind = .{ .reg = .edi } },114198 .{ .type = .i16, .kind = .mem },
112712 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114199 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112713 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114200 .unused,
112714 .unused,114201 .unused,
112715 .unused,114202 .unused,
112716 .unused,114203 .unused,
...@@ -112719,29 +114206,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112719,29 +114206,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112719 .unused,114206 .unused,
112720 .unused,114207 .unused,
112721 },114208 },
112722 .dst_temps = .{ .mem, .unused },114209 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112723 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112724 .each = .{ .once = &.{114210 .each = .{ .once = &.{
112725 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114211 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
112726 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114212 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },
112727 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114213 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },
112728 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114214 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112729 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
112730 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112731 } },114215 } },
112732 }, .{114216 }, .{
112733 .required_features = .{ .sse, null, null, null },114217 .required_features = .{ .x87, null, null, null },
112734 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },114218 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },
112735 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114219 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112736 .patterns = &.{114220 .patterns = &.{
112737 .{ .src = .{ .to_mem, .none, .none } },114221 .{ .src = .{ .to_mem, .none, .none } },
112738 },114222 },
112739 .call_frame = .{ .alignment = .@"16" },
112740 .extra_temps = .{114223 .extra_temps = .{
112741 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114224 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112742 .{ .type = .u32, .kind = .{ .reg = .edi } },114225 .unused,
112743 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114226 .unused,
112744 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114227 .unused,
112745 .unused,114228 .unused,
112746 .unused,114229 .unused,
112747 .unused,114230 .unused,
...@@ -112750,104 +114233,184 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112750,104 +114233,184 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112750 .unused,114233 .unused,
112751 .unused,114234 .unused,
112752 },114235 },
112753 .dst_temps = .{ .mem, .unused },114236 .dst_temps = .{ .{ .rc = .x87 }, .unused },
112754 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112755 .each = .{ .once = &.{114237 .each = .{ .once = &.{
112756 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114238 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },
112757 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },114239 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112758 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
112759 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
112760 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
112761 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112762 } },114240 } },
112763 }, .{114241 }, .{
112764 .required_features = .{ .avx, null, null, null },114242 .required_features = .{ .x87, null, null, null },
112765 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },114243 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },
112766 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },114244 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112767 .patterns = &.{114245 .patterns = &.{
112768 .{ .src = .{ .mem, .none, .none } },114246 .{ .src = .{ .mem, .none, .none } },
112769 .{ .src = .{ .to_sse, .none, .none } },114247 .{ .src = .{ .to_gpr, .none, .none } },
112770 },114248 },
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 },
112772 .each = .{ .once = &.{114263 .each = .{ .once = &.{
112773 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },114264 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
112774 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },114265 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },
114266 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },
114267 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112775 } },114268 } },
112776 }, .{114269 }, .{
112777 .required_features = .{ .sse4_1, null, null, null },114270 .required_features = .{ .x87, null, null, null },
112778 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },114271 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },
112779 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },114272 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112780 .patterns = &.{114273 .patterns = &.{
112781 .{ .src = .{ .mem, .none, .none } },114274 .{ .src = .{ .to_mem, .none, .none } },
112782 .{ .src = .{ .to_sse, .none, .none } },
112783 },114275 },
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 },
112785 .each = .{ .once = &.{114290 .each = .{ .once = &.{
112786 .{ ._, .p_d, .movsxw, .dst0x, .src0q, ._, ._ },114291 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },
112787 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },114292 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112788 } },114293 } },
112789 }, .{114294 }, .{
112790 .required_features = .{ .avx2, null, null, null },114295 .required_features = .{ .@"64bit", .x87, null, null },
112791 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },114296 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },
112792 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },114297 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112793 .patterns = &.{114298 .patterns = &.{
112794 .{ .src = .{ .mem, .none, .none } },114299 .{ .src = .{ .mem, .none, .none } },
112795 .{ .src = .{ .to_sse, .none, .none } },114300 .{ .src = .{ .to_gpr, .none, .none } },
112796 },114301 },
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 },
112798 .each = .{ .once = &.{114316 .each = .{ .once = &.{
112799 .{ ._, .vp_d, .movsxw, .dst0x, .src0q, ._, ._ },114317 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
112800 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },114318 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
114319 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },
114320 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112801 } },114321 } },
112802 }, .{114322 }, .{
112803 .required_features = .{ .avx, null, null, null },114323 .required_features = .{ .x87, null, null, null },
112804 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },114324 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },
112805 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },114325 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112806 .patterns = &.{114326 .patterns = &.{
112807 .{ .src = .{ .mem, .none, .none } },114327 .{ .src = .{ .to_mem, .none, .none } },
112808 .{ .src = .{ .to_sse, .none, .none } },
112809 },114328 },
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 },
112811 .each = .{ .once = &.{114343 .each = .{ .once = &.{
112812 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },114344 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
112813 .{ ._, .v_pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },114345 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
112814 } },114346 } },
112815 }, .{114347 }, .{
112816 .required_features = .{ .sse4_1, null, null, null },114348 .required_features = .{ .x87, null, null, null },
112817 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },114349 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },
112818 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },114350 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112819 .patterns = &.{114351 .patterns = &.{
112820 .{ .src = .{ .mem, .none, .none } },114352 .{ .src = .{ .to_mem, .none, .none } },
112821 .{ .src = .{ .to_sse, .none, .none } },
112822 },114353 },
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 },
112824 .each = .{ .once = &.{114369 .each = .{ .once = &.{
112825 .{ ._, .p_d, .movzxw, .dst0x, .src0q, ._, ._ },114370 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },
112826 .{ ._, ._pd, .cvtdq2, .dst0x, .dst0q, ._, ._ },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, ._, ._, ._ },
112827 } },114376 } },
112828 }, .{114377 }, .{
112829 .required_features = .{ .avx2, null, null, null },114378 .required_features = .{ .@"64bit", .sse, null, null },
112830 .src_constraints = .{ .{ .scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },114379 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
112831 .dst_constraints = .{ .{ .scalar_float = .{ .of = .yword, .is = .qword } }, .any },114380 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112832 .patterns = &.{114381 .patterns = &.{
112833 .{ .src = .{ .mem, .none, .none } },114382 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
112834 .{ .src = .{ .to_sse, .none, .none } },
112835 },114383 },
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 },
112837 .each = .{ .once = &.{114400 .each = .{ .once = &.{
112838 .{ ._, .vp_d, .movzxw, .dst0x, .src0q, ._, ._ },114401 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
112839 .{ ._, .v_pd, .cvtdq2, .dst0y, .dst0x, ._, ._ },
112840 } },114402 } },
112841 }, .{114403 }, .{
112842 .required_features = .{ .avx2, null, null, null },114404 .required_features = .{ .@"64bit", .sse, null, null },
112843 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .word } }, .any, .any },114405 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
112844 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },114406 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112845 .patterns = &.{114407 .patterns = &.{
112846 .{ .src = .{ .to_mem, .none, .none } },114408 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
112847 },114409 },
114410 .call_frame = .{ .alignment = .@"16" },
112848 .extra_temps = .{114411 .extra_temps = .{
112849 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114412 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
112850 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },114413 .unused,
112851 .unused,114414 .unused,
112852 .unused,114415 .unused,
112853 .unused,114416 .unused,
...@@ -112858,27 +114421,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112858,27 +114421,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112858 .unused,114421 .unused,
112859 .unused,114422 .unused,
112860 },114423 },
112861 .dst_temps = .{ .mem, .unused },114424 .dst_temps = .{ .{ .reg = .st0 }, .unused },
112862 .clobbers = .{ .eflags = true },114425 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112863 .each = .{ .once = &.{114426 .each = .{ .once = &.{
112864 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114427 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
112870 } },114428 } },
112871 }, .{114429 }, .{
112872 .required_features = .{ .avx, null, null, null },114430 .required_features = .{ .@"64bit", .sse, null, null },
112873 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },114431 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112874 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },114432 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112875 .patterns = &.{114433 .patterns = &.{
112876 .{ .src = .{ .to_mem, .none, .none } },114434 .{ .src = .{ .to_mem, .none, .none } },
112877 },114435 },
114436 .call_frame = .{ .alignment = .@"16" },
112878 .extra_temps = .{114437 .extra_temps = .{
112879 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114438 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112880 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },114439 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112881 .unused,114440 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
112882 .unused,114441 .unused,
112883 .unused,114442 .unused,
112884 .unused,114443 .unused,
...@@ -112888,28 +114447,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112888,28 +114447,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112888 .unused,114447 .unused,
112889 .unused,114448 .unused,
112890 },114449 },
112891 .dst_temps = .{ .mem, .unused },114450 .dst_temps = .{ .{ .reg = .st0 }, .unused },
112892 .clobbers = .{ .eflags = true },114451 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112893 .each = .{ .once = &.{114452 .each = .{ .once = &.{
112894 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114453 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112895 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114454 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
112896 .{ ._, .vp_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },114455 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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", ._, ._, ._ },
112901 } },114456 } },
112902 }, .{114457 }, .{
112903 .required_features = .{ .sse4_1, null, null, null },114458 .required_features = .{ .@"64bit", .sse, null, null },
112904 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .word } }, .any, .any },114459 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
112905 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },114460 .dst_constraints = .{ .{ .float = .tbyte }, .any },
112906 .patterns = &.{114461 .patterns = &.{
112907 .{ .src = .{ .to_mem, .none, .none } },114462 .{ .src = .{ .to_mem, .none, .none } },
112908 },114463 },
114464 .call_frame = .{ .alignment = .@"16" },
112909 .extra_temps = .{114465 .extra_temps = .{
112910 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114466 .{ .type = .usize, .kind = .{ .reg = .rdi } },
112911 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },114467 .{ .type = .usize, .kind = .{ .reg = .rsi } },
112912 .unused,114468 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
112913 .unused,114469 .unused,
112914 .unused,114470 .unused,
112915 .unused,114471 .unused,
...@@ -112919,30 +114475,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112919,30 +114475,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112919 .unused,114475 .unused,
112920 .unused,114476 .unused,
112921 },114477 },
112922 .dst_temps = .{ .mem, .unused },114478 .dst_temps = .{ .{ .reg = .st0 }, .unused },
112923 .clobbers = .{ .eflags = true },114479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
112924 .each = .{ .once = &.{114480 .each = .{ .once = &.{
112925 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114481 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
112926 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114482 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
112927 .{ ._, .p_d, .movsxw, .tmp1x, .tmp1q, ._, ._ },114483 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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", ._, ._, ._ },
112932 } },114484 } },
112933 }, .{114485 }, .{
112934 .required_features = .{ .avx2, null, null, null },114486 .required_features = .{ .x87, .slow_incdec, null, null },
112935 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .word } }, .any, .any },114487 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112936 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },114488 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
112937 .patterns = &.{114489 .patterns = &.{
112938 .{ .src = .{ .to_mem, .none, .none } },114490 .{ .src = .{ .to_mem, .none, .none } },
112939 },114491 },
112940 .extra_temps = .{114492 .extra_temps = .{
112941 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114493 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112942 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },114494 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112943 .unused,114495 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
112944 .unused,114496 .{ .type = .i16, .kind = .mem },
112945 .unused,114497 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112946 .unused,114498 .unused,
112947 .unused,114499 .unused,
112948 .unused,114500 .unused,
...@@ -112954,25 +114506,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112954,25 +114506,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112954 .clobbers = .{ .eflags = true },114506 .clobbers = .{ .eflags = true },
112955 .each = .{ .once = &.{114507 .each = .{ .once = &.{
112956 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114508 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112957 .{ .@"0:", .vp_d, .movzxw, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },114509 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
112958 .{ ._, .v_pd, .cvtdq2, .tmp1y, .tmp1x, ._, ._ },114510 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112959 .{ ._, .v_ps, .mova, .memsia(.dst0y, .@"4", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },114511 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
112960 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },114512 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
114513 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114514 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114515 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
112961 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114516 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
112962 } },114517 } },
112963 }, .{114518 }, .{
112964 .required_features = .{ .avx, null, null, null },114519 .required_features = .{ .x87, null, null, null },
112965 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },114520 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112966 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },114521 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
112967 .patterns = &.{114522 .patterns = &.{
112968 .{ .src = .{ .to_mem, .none, .none } },114523 .{ .src = .{ .to_mem, .none, .none } },
112969 },114524 },
112970 .extra_temps = .{114525 .extra_temps = .{
112971 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114526 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
112972 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },114527 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
112973 .unused,114528 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
112974 .unused,114529 .{ .type = .i16, .kind = .mem },
112975 .unused,114530 .{ .type = .f80, .kind = .{ .reg = .st7 } },
112976 .unused,114531 .unused,
112977 .unused,114532 .unused,
112978 .unused,114533 .unused,
...@@ -112984,26 +114539,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -112984,26 +114539,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
112984 .clobbers = .{ .eflags = true },114539 .clobbers = .{ .eflags = true },
112985 .each = .{ .once = &.{114540 .each = .{ .once = &.{
112986 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114541 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
112987 .{ .@"0:", .v_d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114542 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
112988 .{ ._, .vp_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },114543 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
112989 .{ ._, .v_pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },114544 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
112990 .{ ._, .v_ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },114545 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
112991 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },114546 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
112992 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114547 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114548 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114549 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
112993 } },114550 } },
112994 }, .{114551 }, .{
112995 .required_features = .{ .sse4_1, null, null, null },114552 .required_features = .{ .x87, .slow_incdec, null, null },
112996 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .word } }, .any, .any },114553 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
112997 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },114554 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
112998 .patterns = &.{114555 .patterns = &.{
112999 .{ .src = .{ .to_mem, .none, .none } },114556 .{ .src = .{ .to_mem, .none, .none } },
113000 },114557 },
113001 .extra_temps = .{114558 .extra_temps = .{
113002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114559 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113003 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },114560 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113004 .unused,114561 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
113005 .unused,114562 .{ .type = .i16, .kind = .mem },
113006 .unused,114563 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113007 .unused,114564 .unused,
113008 .unused,114565 .unused,
113009 .unused,114566 .unused,
...@@ -113015,27 +114572,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113015,27 +114572,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113015 .clobbers = .{ .eflags = true },114572 .clobbers = .{ .eflags = true },
113016 .each = .{ .once = &.{114573 .each = .{ .once = &.{
113017 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114574 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113018 .{ .@"0:", ._d, .mov, .tmp1x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114575 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
113019 .{ ._, .p_d, .movzxw, .tmp1x, .tmp1q, ._, ._ },114576 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
113020 .{ ._, ._pd, .cvtdq2, .tmp1x, .tmp1q, ._, ._ },114577 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
113021 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },114578 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
113022 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },114579 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114580 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114581 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113023 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114582 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113024 } },114583 } },
113025 }, .{114584 }, .{
113026 .required_features = .{ .avx, null, null, null },114585 .required_features = .{ .x87, null, null, null },
113027 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },114586 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113028 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114587 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113029 .patterns = &.{114588 .patterns = &.{
113030 .{ .src = .{ .to_mem, .none, .none } },114589 .{ .src = .{ .to_mem, .none, .none } },
113031 },114590 },
113032 .call_frame = .{ .alignment = .@"16" },
113033 .extra_temps = .{114591 .extra_temps = .{
113034 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113035 .{ .type = .i32, .kind = .{ .reg = .edi } },114593 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113036 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114594 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },
113037 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114595 .{ .type = .i16, .kind = .mem },
113038 .unused,114596 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113039 .unused,114597 .unused,
113040 .unused,114598 .unused,
113041 .unused,114599 .unused,
...@@ -113044,29 +114602,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113044,29 +114602,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113044 .unused,114602 .unused,
113045 },114603 },
113046 .dst_temps = .{ .mem, .unused },114604 .dst_temps = .{ .mem, .unused },
113047 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114605 .clobbers = .{ .eflags = true },
113048 .each = .{ .once = &.{114606 .each = .{ .once = &.{
113049 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113050 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },114608 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
113051 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114609 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
113052 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114610 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },
113053 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114611 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },
113054 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114612 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114613 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114614 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114615 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113055 } },114616 } },
113056 }, .{114617 }, .{
113057 .required_features = .{ .sse2, null, null, null },114618 .required_features = .{ .x87, .slow_incdec, null, null },
113058 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },114619 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113059 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114620 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113060 .patterns = &.{114621 .patterns = &.{
113061 .{ .src = .{ .to_mem, .none, .none } },114622 .{ .src = .{ .to_mem, .none, .none } },
113062 },114623 },
113063 .call_frame = .{ .alignment = .@"16" },114624 .call_frame = .{ .alignment = .@"16" },
113064 .extra_temps = .{114625 .extra_temps = .{
113065 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114626 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114627 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113066 .{ .type = .i32, .kind = .{ .reg = .edi } },114628 .{ .type = .i32, .kind = .{ .reg = .edi } },
113067 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114629 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
113068 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114630 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113069 .unused,
113070 .unused,114631 .unused,
113071 .unused,114632 .unused,
113072 .unused,114633 .unused,
...@@ -113078,26 +114639,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113078,26 +114639,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113078 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114639 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113079 .each = .{ .once = &.{114640 .each = .{ .once = &.{
113080 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114641 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113081 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },114642 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
113082 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114643 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
113083 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114644 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113084 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114645 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114646 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114647 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114648 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113085 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114649 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113086 } },114650 } },
113087 }, .{114651 }, .{
113088 .required_features = .{ .sse, null, null, null },114652 .required_features = .{ .x87, null, null, null },
113089 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },114653 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113090 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114654 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113091 .patterns = &.{114655 .patterns = &.{
113092 .{ .src = .{ .to_mem, .none, .none } },114656 .{ .src = .{ .to_mem, .none, .none } },
113093 },114657 },
113094 .call_frame = .{ .alignment = .@"16" },114658 .call_frame = .{ .alignment = .@"16" },
113095 .extra_temps = .{114659 .extra_temps = .{
113096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114660 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114661 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113097 .{ .type = .i32, .kind = .{ .reg = .edi } },114662 .{ .type = .i32, .kind = .{ .reg = .edi } },
113098 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114663 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
113099 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114664 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113100 .unused,
113101 .unused,114665 .unused,
113102 .unused,114666 .unused,
113103 .unused,114667 .unused,
...@@ -113109,26 +114673,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113109,26 +114673,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113109 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114673 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113110 .each = .{ .once = &.{114674 .each = .{ .once = &.{
113111 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114675 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113112 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },114676 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
113113 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114677 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
113114 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114678 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113115 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114679 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
113116 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114680 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114681 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114682 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114683 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113117 } },114684 } },
113118 }, .{114685 }, .{
113119 .required_features = .{ .avx, null, null, null },114686 .required_features = .{ .x87, .slow_incdec, null, null },
113120 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },114687 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113121 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114688 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113122 .patterns = &.{114689 .patterns = &.{
113123 .{ .src = .{ .to_mem, .none, .none } },114690 .{ .src = .{ .to_mem, .none, .none } },
113124 },114691 },
113125 .call_frame = .{ .alignment = .@"16" },114692 .call_frame = .{ .alignment = .@"16" },
113126 .extra_temps = .{114693 .extra_temps = .{
113127 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114694 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114695 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113128 .{ .type = .u32, .kind = .{ .reg = .edi } },114696 .{ .type = .u32, .kind = .{ .reg = .edi } },
113129 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114697 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
113130 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114698 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113131 .unused,
113132 .unused,114699 .unused,
113133 .unused,114700 .unused,
113134 .unused,114701 .unused,
...@@ -113140,26 +114707,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113140,26 +114707,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113140 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114707 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113141 .each = .{ .once = &.{114708 .each = .{ .once = &.{
113142 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114709 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113143 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },114710 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
113144 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114711 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
113145 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114712 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113146 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114713 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114714 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114715 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114716 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
113147 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114717 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113148 } },114718 } },
113149 }, .{114719 }, .{
113150 .required_features = .{ .sse2, null, null, null },114720 .required_features = .{ .x87, null, null, null },
113151 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },114721 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113152 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114722 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113153 .patterns = &.{114723 .patterns = &.{
113154 .{ .src = .{ .to_mem, .none, .none } },114724 .{ .src = .{ .to_mem, .none, .none } },
113155 },114725 },
113156 .call_frame = .{ .alignment = .@"16" },114726 .call_frame = .{ .alignment = .@"16" },
113157 .extra_temps = .{114727 .extra_temps = .{
113158 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114728 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114729 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113159 .{ .type = .u32, .kind = .{ .reg = .edi } },114730 .{ .type = .u32, .kind = .{ .reg = .edi } },
113160 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114731 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
113161 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114732 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113162 .unused,
113163 .unused,114733 .unused,
113164 .unused,114734 .unused,
113165 .unused,114735 .unused,
...@@ -113171,25 +114741,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113171,25 +114741,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113171 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114741 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113172 .each = .{ .once = &.{114742 .each = .{ .once = &.{
113173 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114743 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113174 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },114744 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
113175 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114745 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
113176 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114746 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113177 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114747 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
113178 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114748 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114749 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114750 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114751 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
113179 } },114752 } },
113180 }, .{114753 }, .{
113181 .required_features = .{ .sse, null, null, null },114754 .required_features = .{ .x87, null, null, null },
113182 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },114755 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113183 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114756 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113184 .patterns = &.{114757 .patterns = &.{
113185 .{ .src = .{ .to_mem, .none, .none } },114758 .{ .src = .{ .to_mem, .none, .none } },
113186 },114759 },
113187 .call_frame = .{ .alignment = .@"16" },
113188 .extra_temps = .{114760 .extra_temps = .{
113189 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114761 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113190 .{ .type = .u32, .kind = .{ .reg = .edi } },114762 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113191 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114763 .unused,
113192 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114764 .unused,
113193 .unused,114765 .unused,
113194 .unused,114766 .unused,
113195 .unused,114767 .unused,
...@@ -113199,63 +114771,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113199,63 +114771,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113199 .unused,114771 .unused,
113200 },114772 },
113201 .dst_temps = .{ .mem, .unused },114773 .dst_temps = .{ .mem, .unused },
113202 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114774 .clobbers = .{ .eflags = true },
113203 .each = .{ .once = &.{114775 .each = .{ .once = &.{
113204 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114776 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113205 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },114777 .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
113206 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114778 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
113207 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113208 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },114779 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113209 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113210 } },114781 } },
113211 }, .{114782 }, .{
113212 .required_features = .{ .avx, null, null, null },114783 .required_features = .{ .x87, null, null, null },
113213 .src_constraints = .{ .{ .scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },114784 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
113214 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .qword } }, .any },114785 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .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 },
113251 .patterns = &.{114786 .patterns = &.{
113252 .{ .src = .{ .to_mem, .none, .none } },114787 .{ .src = .{ .to_mem, .none, .none } },
113253 },114788 },
114789 .call_frame = .{ .alignment = .@"16" },
113254 .extra_temps = .{114790 .extra_temps = .{
113255 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114791 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113256 .{ .type = .vector_8_i32, .kind = .{ .rc = .sse } },114792 .{ .type = .i32, .kind = .{ .reg = .edi } },
113257 .unused,114793 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
113258 .unused,114794 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113259 .unused,114795 .unused,
113260 .unused,114796 .unused,
113261 .unused,114797 .unused,
...@@ -113265,26 +114801,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113265,26 +114801,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113265 .unused,114801 .unused,
113266 },114802 },
113267 .dst_temps = .{ .mem, .unused },114803 .dst_temps = .{ .mem, .unused },
113268 .clobbers = .{ .eflags = true },114804 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113269 .each = .{ .once = &.{114805 .each = .{ .once = &.{
113270 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114806 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113271 .{ .@"0:", .v_pd, .cvtdq2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },114807 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113272 .{ ._, .v_pd, .mova, .memsia(.dst0y, .@"2", .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },114808 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113273 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },114809 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114810 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114811 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113274 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114812 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113275 } },114813 } },
113276 }, .{114814 }, .{
113277 .required_features = .{ .avx, null, null, null },114815 .required_features = .{ .x87, null, null, null },
113278 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },114816 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
113279 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },114817 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113280 .patterns = &.{114818 .patterns = &.{
113281 .{ .src = .{ .to_mem, .none, .none } },114819 .{ .src = .{ .to_mem, .none, .none } },
113282 },114820 },
114821 .call_frame = .{ .alignment = .@"16" },
113283 .extra_temps = .{114822 .extra_temps = .{
113284 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114823 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113285 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },114824 .{ .type = .u32, .kind = .{ .reg = .edi } },
113286 .unused,114825 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
113287 .unused,114826 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113288 .unused,114827 .unused,
113289 .unused,114828 .unused,
113290 .unused,114829 .unused,
...@@ -113294,24 +114833,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113294,24 +114833,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113294 .unused,114833 .unused,
113295 },114834 },
113296 .dst_temps = .{ .mem, .unused },114835 .dst_temps = .{ .mem, .unused },
113297 .clobbers = .{ .eflags = true },114836 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113298 .each = .{ .once = &.{114837 .each = .{ .once = &.{
113299 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114838 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113300 .{ .@"0:", .v_pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },114839 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
113301 .{ ._, .v_pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },114840 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113302 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },114841 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
114842 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
114843 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
113303 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114844 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113304 } },114845 } },
113305 }, .{114846 }, .{
113306 .required_features = .{ .sse2, null, null, null },114847 .required_features = .{ .x87, null, null, null },
113307 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .dword } }, .any, .any },114848 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113308 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },114849 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113309 .patterns = &.{114850 .patterns = &.{
113310 .{ .src = .{ .to_mem, .none, .none } },114851 .{ .src = .{ .to_mem, .none, .none } },
113311 },114852 },
113312 .extra_temps = .{114853 .extra_temps = .{
113313 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114854 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113314 .{ .type = .vector_4_i32, .kind = .{ .rc = .sse } },114855 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113315 .unused,114856 .unused,
113316 .unused,114857 .unused,
113317 .unused,114858 .unused,
...@@ -113326,15 +114867,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113326,15 +114867,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113326 .clobbers = .{ .eflags = true },114867 .clobbers = .{ .eflags = true },
113327 .each = .{ .once = &.{114868 .each = .{ .once = &.{
113328 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114869 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113329 .{ .@"0:", ._pd, .cvtdq2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },114870 .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
113330 .{ ._, ._pd, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },114871 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
113331 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },114872 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113332 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114873 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113333 } },114874 } },
113334 }, .{114875 }, .{
113335 .required_features = .{ .avx, null, null, null },114876 .required_features = .{ .x87, null, null, null },
113336 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },114877 .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 },
113338 .patterns = &.{114879 .patterns = &.{
113339 .{ .src = .{ .to_mem, .none, .none } },114880 .{ .src = .{ .to_mem, .none, .none } },
113340 },114881 },
...@@ -113342,8 +114883,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113342,8 +114883,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113342 .extra_temps = .{114883 .extra_temps = .{
113343 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114884 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113344 .{ .type = .i32, .kind = .{ .reg = .edi } },114885 .{ .type = .i32, .kind = .{ .reg = .edi } },
113345 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114886 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },
113346 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114887 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113347 .unused,114888 .unused,
113348 .unused,114889 .unused,
113349 .unused,114890 .unused,
...@@ -113358,23 +114899,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113358,23 +114899,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113358 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114899 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113359 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114900 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113360 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114901 .{ ._, ._, .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), ._, ._, ._ },
113362 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },114904 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113363 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114905 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113364 } },114906 } },
113365 }, .{114907 }, .{
113366 .required_features = .{ .sse2, null, null, null },114908 .required_features = .{ .x87, null, null, null },
113367 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },114909 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113368 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114910 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113369 .patterns = &.{114911 .patterns = &.{
113370 .{ .src = .{ .to_mem, .none, .none } },114912 .{ .src = .{ .to_mem, .none, .none } },
113371 },114913 },
113372 .call_frame = .{ .alignment = .@"16" },114914 .call_frame = .{ .alignment = .@"16" },
113373 .extra_temps = .{114915 .extra_temps = .{
113374 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114916 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113375 .{ .type = .i32, .kind = .{ .reg = .edi } },114917 .{ .type = .u32, .kind = .{ .reg = .edi } },
113376 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },
113377 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114919 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113378 .unused,114920 .unused,
113379 .unused,114921 .unused,
113380 .unused,114922 .unused,
...@@ -113389,23 +114931,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113389,23 +114931,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113389 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114931 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113390 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114932 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
113391 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114933 .{ ._, ._, .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), ._, ._, ._ },
113393 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },114936 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113394 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114937 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113395 } },114938 } },
113396 }, .{114939 }, .{
113397 .required_features = .{ .sse, null, null, null },114940 .required_features = .{ .x87, null, null, null },
113398 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },114941 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113399 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114942 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113400 .patterns = &.{114943 .patterns = &.{
113401 .{ .src = .{ .to_mem, .none, .none } },114944 .{ .src = .{ .to_mem, .none, .none } },
113402 },114945 },
113403 .call_frame = .{ .alignment = .@"16" },
113404 .extra_temps = .{114946 .extra_temps = .{
113405 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114947 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113406 .{ .type = .i32, .kind = .{ .reg = .edi } },114948 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113407 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsidf" } } },114949 .unused,
113408 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114950 .unused,
113409 .unused,114951 .unused,
113410 .unused,114952 .unused,
113411 .unused,114953 .unused,
...@@ -113415,28 +114957,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113415,28 +114957,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113415 .unused,114957 .unused,
113416 },114958 },
113417 .dst_temps = .{ .mem, .unused },114959 .dst_temps = .{ .mem, .unused },
113418 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114960 .clobbers = .{ .eflags = true },
113419 .each = .{ .once = &.{114961 .each = .{ .once = &.{
113420 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114962 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113421 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },114963 .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
113422 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114964 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
113423 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114965 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113424 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
113425 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114966 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113426 } },114967 } },
113427 }, .{114968 }, .{
113428 .required_features = .{ .avx, null, null, null },114969 .required_features = .{ .@"64bit", .x87, null, null },
113429 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },114970 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113430 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },114971 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113431 .patterns = &.{114972 .patterns = &.{
113432 .{ .src = .{ .to_mem, .none, .none } },114973 .{ .src = .{ .to_mem, .none, .none } },
113433 },114974 },
113434 .call_frame = .{ .alignment = .@"16" },114975 .call_frame = .{ .alignment = .@"16" },
113435 .extra_temps = .{114976 .extra_temps = .{
113436 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },114977 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113437 .{ .type = .u32, .kind = .{ .reg = .edi } },114978 .{ .type = .i64, .kind = .{ .reg = .rdi } },
113438 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },114979 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },
113439 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },114980 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113440 .unused,114981 .unused,
113441 .unused,114982 .unused,
113442 .unused,114983 .unused,
...@@ -113449,25 +114990,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113449,25 +114990,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113449 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },114990 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113450 .each = .{ .once = &.{114991 .each = .{ .once = &.{
113451 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },114992 .{ ._, ._, .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), ._, ._ },
113453 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },114994 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113454 .{ ._, .v_sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },114995 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
113455 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },114996 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
114997 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113456 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },114998 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113457 } },114999 } },
113458 }, .{115000 }, .{
113459 .required_features = .{ .sse2, null, null, null },115001 .required_features = .{ .@"64bit", .x87, null, null },
113460 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },115002 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
113461 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115003 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113462 .patterns = &.{115004 .patterns = &.{
113463 .{ .src = .{ .to_mem, .none, .none } },115005 .{ .src = .{ .to_mem, .none, .none } },
113464 },115006 },
113465 .call_frame = .{ .alignment = .@"16" },115007 .call_frame = .{ .alignment = .@"16" },
113466 .extra_temps = .{115008 .extra_temps = .{
113467 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115009 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113468 .{ .type = .u32, .kind = .{ .reg = .edi } },115010 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113469 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },115011 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },
113470 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115012 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113471 .unused,115013 .unused,
113472 .unused,115014 .unused,
113473 .unused,115015 .unused,
...@@ -113480,26 +115022,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113480,26 +115022,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113480 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115022 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113481 .each = .{ .once = &.{115023 .each = .{ .once = &.{
113482 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115024 .{ ._, ._, .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), ._, ._ },
113484 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115026 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113485 .{ ._, ._sd, .mov, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115027 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
113486 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },115028 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
115029 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113487 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115030 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113488 } },115031 } },
113489 }, .{115032 }, .{
113490 .required_features = .{ .sse, null, null, null },115033 .required_features = .{ .@"64bit", .x87, null, null },
113491 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },115034 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113492 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115035 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113493 .patterns = &.{115036 .patterns = &.{
113494 .{ .src = .{ .to_mem, .none, .none } },115037 .{ .src = .{ .to_mem, .none, .none } },
113495 },115038 },
113496 .call_frame = .{ .alignment = .@"16" },115039 .call_frame = .{ .alignment = .@"16" },
113497 .extra_temps = .{115040 .extra_temps = .{
113498 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115041 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113499 .{ .type = .u32, .kind = .{ .reg = .edi } },115042 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113500 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsidf" } } },115043 .{ .type = .i64, .kind = .{ .reg = .rsi } },
113501 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115044 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },
113502 .unused,115045 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113503 .unused,115046 .unused,
113504 .unused,115047 .unused,
113505 .unused,115048 .unused,
...@@ -113511,25 +115054,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113511,25 +115054,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113511 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115054 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113512 .each = .{ .once = &.{115055 .each = .{ .once = &.{
113513 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115056 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113514 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },115057 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113515 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115058 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
113516 .{ ._, ._ps, .movl, .memsia(.dst0q, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115059 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113517 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },115060 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115061 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
115062 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
113518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115063 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113519 } },115064 } },
113520 }, .{115065 }, .{
113521 .required_features = .{ .@"64bit", .avx, null, null },115066 .required_features = .{ .@"64bit", .x87, null, null },
113522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },115067 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
113523 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115068 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113524 .patterns = &.{115069 .patterns = &.{
113525 .{ .src = .{ .to_mem, .none, .none } },115070 .{ .src = .{ .to_mem, .none, .none } },
113526 },115071 },
115072 .call_frame = .{ .alignment = .@"16" },
113527 .extra_temps = .{115073 .extra_temps = .{
113528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115074 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113529 .{ .type = .f64, .kind = .{ .rc = .sse } },115075 .{ .type = .u64, .kind = .{ .reg = .rdi } },
113530 .unused,115076 .{ .type = .u64, .kind = .{ .reg = .rsi } },
113531 .unused,115077 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },
113532 .unused,115078 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113533 .unused,115079 .unused,
113534 .unused,115080 .unused,
113535 .unused,115081 .unused,
...@@ -113538,29 +115084,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113538,29 +115084,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113538 .unused,115084 .unused,
113539 },115085 },
113540 .dst_temps = .{ .mem, .unused },115086 .dst_temps = .{ .mem, .unused },
113541 .clobbers = .{ .eflags = true },115087 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113542 .each = .{ .once = &.{115088 .each = .{ .once = &.{
113543 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115089 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
113544 .{ .@"0:", .v_pd, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },115090 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
113545 .{ ._, .v_sd, .cvtsi2, .tmp1x, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },115091 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
113546 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115092 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113547 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },115093 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },
115094 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
115095 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
113548 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115096 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113549 } },115097 } },
113550 }, .{115098 }, .{
113551 .required_features = .{ .@"64bit", .sse2, null, null },115099 .required_features = .{ .@"64bit", .x87, null, null },
113552 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },115100 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113553 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115101 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113554 .patterns = &.{115102 .patterns = &.{
113555 .{ .src = .{ .to_mem, .none, .none } },115103 .{ .src = .{ .to_mem, .none, .none } },
113556 },115104 },
115105 .call_frame = .{ .alignment = .@"16" },
113557 .extra_temps = .{115106 .extra_temps = .{
115107 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113558 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115108 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113559 .{ .type = .f64, .kind = .{ .rc = .sse } },115109 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113560 .unused,115110 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113561 .unused,115111 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },
113562 .unused,115112 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113563 .unused,
113564 .unused,115113 .unused,
113565 .unused,115114 .unused,
113566 .unused,115115 .unused,
...@@ -113568,30 +115117,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113568,30 +115117,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113568 .unused,115117 .unused,
113569 },115118 },
113570 .dst_temps = .{ .mem, .unused },115119 .dst_temps = .{ .mem, .unused },
113571 .clobbers = .{ .eflags = true },115120 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113572 .each = .{ .once = &.{115121 .each = .{ .once = &.{
113573 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115122 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
113574 .{ .@"0:", ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },115123 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113575 .{ ._, ._sd, .cvtsi2, .tmp1x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115124 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
113576 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },115125 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
113577 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
113578 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115131 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113579 } },115132 } },
113580 }, .{115133 }, .{
113581 .required_features = .{ .@"64bit", .avx, null, null },115134 .required_features = .{ .@"64bit", .x87, null, null },
113582 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },115135 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113583 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115136 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
113584 .patterns = &.{115137 .patterns = &.{
113585 .{ .src = .{ .to_mem, .none, .none } },115138 .{ .src = .{ .to_mem, .none, .none } },
113586 },115139 },
113587 .call_frame = .{ .alignment = .@"16" },115140 .call_frame = .{ .alignment = .@"16" },
113588 .extra_temps = .{115141 .extra_temps = .{
115142 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113589 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115143 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113590 .{ .type = .i64, .kind = .{ .reg = .rdi } },115144 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113591 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },115145 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113592 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115146 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },
113593 .unused,115147 .{ .type = .f80, .kind = .{ .reg = .st7 } },
113594 .unused,
113595 .unused,115148 .unused,
113596 .unused,115149 .unused,
113597 .unused,115150 .unused,
...@@ -113601,26 +115154,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113601,26 +115154,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113601 .dst_temps = .{ .mem, .unused },115154 .dst_temps = .{ .mem, .unused },
113602 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115155 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113603 .each = .{ .once = &.{115156 .each = .{ .once = &.{
113604 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115157 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
113605 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115158 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
113606 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },115159 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
113607 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },115160 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
113608 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },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), ._, ._ },
113609 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115166 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113610 } },115167 } },
113611 }, .{115168 }, .{
113612 .required_features = .{ .@"64bit", .sse2, null, null },115169 .required_features = .{ .sse, null, null, null },
113613 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },115170 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },
113614 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115171 .dst_constraints = .{ .{ .float = .xword }, .any },
113615 .patterns = &.{115172 .patterns = &.{
113616 .{ .src = .{ .to_mem, .none, .none } },115173 .{ .src = .{ .mem, .none, .none } },
115174 .{ .src = .{ .to_gpr, .none, .none } },
113617 },115175 },
113618 .call_frame = .{ .alignment = .@"16" },115176 .call_frame = .{ .alignment = .@"16" },
113619 .extra_temps = .{115177 .extra_temps = .{
113620 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115178 .{ .type = .i32, .kind = .{ .reg = .edi } },
113621 .{ .type = .i64, .kind = .{ .reg = .rdi } },115179 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
113622 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },115180 .unused,
113623 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115181 .unused,
113624 .unused,115182 .unused,
113625 .unused,115183 .unused,
113626 .unused,115184 .unused,
...@@ -113629,29 +115187,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113629,29 +115187,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113629 .unused,115187 .unused,
113630 .unused,115188 .unused,
113631 },115189 },
113632 .dst_temps = .{ .mem, .unused },115190 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113633 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113634 .each = .{ .once = &.{115192 .each = .{ .once = &.{
113635 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115193 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
113636 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115194 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113637 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113638 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113639 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113640 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113641 } },115195 } },
113642 }, .{115196 }, .{
113643 .required_features = .{ .@"64bit", .sse, null, null },115197 .required_features = .{ .sse, null, null, null },
113644 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },115198 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },
113645 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115199 .dst_constraints = .{ .{ .float = .xword }, .any },
113646 .patterns = &.{115200 .patterns = &.{
113647 .{ .src = .{ .to_mem, .none, .none } },115201 .{ .src = .{ .mem, .none, .none } },
115202 .{ .src = .{ .to_gpr, .none, .none } },
113648 },115203 },
113649 .call_frame = .{ .alignment = .@"16" },115204 .call_frame = .{ .alignment = .@"16" },
113650 .extra_temps = .{115205 .extra_temps = .{
113651 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115206 .{ .type = .u32, .kind = .{ .reg = .edi } },
113652 .{ .type = .i64, .kind = .{ .reg = .rdi } },115207 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
113653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdidf" } } },115208 .unused,
113654 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115209 .unused,
113655 .unused,115210 .unused,
113656 .unused,115211 .unused,
113657 .unused,115212 .unused,
...@@ -113660,29 +115215,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113660,29 +115215,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113660 .unused,115215 .unused,
113661 .unused,115216 .unused,
113662 },115217 },
113663 .dst_temps = .{ .mem, .unused },115218 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113664 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115219 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113665 .each = .{ .once = &.{115220 .each = .{ .once = &.{
113666 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115221 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
113667 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115222 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113668 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113669 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113670 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113671 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113672 } },115223 } },
113673 }, .{115224 }, .{
113674 .required_features = .{ .@"64bit", .avx, null, null },115225 .required_features = .{ .sse, null, null, null },
113675 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },115226 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },
113676 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115227 .dst_constraints = .{ .{ .float = .xword }, .any },
113677 .patterns = &.{115228 .patterns = &.{
113678 .{ .src = .{ .to_mem, .none, .none } },115229 .{ .src = .{ .mem, .none, .none } },
115230 .{ .src = .{ .to_gpr, .none, .none } },
113679 },115231 },
113680 .call_frame = .{ .alignment = .@"16" },115232 .call_frame = .{ .alignment = .@"16" },
113681 .extra_temps = .{115233 .extra_temps = .{
113682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115234 .{ .type = .i32, .kind = .{ .reg = .edi } },
113683 .{ .type = .u64, .kind = .{ .reg = .rdi } },115235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
113684 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },115236 .unused,
113685 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115237 .unused,
113686 .unused,115238 .unused,
113687 .unused,115239 .unused,
113688 .unused,115240 .unused,
...@@ -113691,29 +115243,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113691,29 +115243,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113691 .unused,115243 .unused,
113692 .unused,115244 .unused,
113693 },115245 },
113694 .dst_temps = .{ .mem, .unused },115246 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113695 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115247 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113696 .each = .{ .once = &.{115248 .each = .{ .once = &.{
113697 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115249 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
113698 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115250 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113699 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113700 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113701 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113702 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113703 } },115251 } },
113704 }, .{115252 }, .{
113705 .required_features = .{ .@"64bit", .sse2, null, null },115253 .required_features = .{ .sse, null, null, null },
113706 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },115254 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },
113707 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115255 .dst_constraints = .{ .{ .float = .xword }, .any },
113708 .patterns = &.{115256 .patterns = &.{
113709 .{ .src = .{ .to_mem, .none, .none } },115257 .{ .src = .{ .mem, .none, .none } },
115258 .{ .src = .{ .to_gpr, .none, .none } },
113710 },115259 },
113711 .call_frame = .{ .alignment = .@"16" },115260 .call_frame = .{ .alignment = .@"16" },
113712 .extra_temps = .{115261 .extra_temps = .{
113713 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115262 .{ .type = .u32, .kind = .{ .reg = .edi } },
113714 .{ .type = .u64, .kind = .{ .reg = .rdi } },115263 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
113715 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },115264 .unused,
113716 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115265 .unused,
113717 .unused,115266 .unused,
113718 .unused,115267 .unused,
113719 .unused,115268 .unused,
...@@ -113722,29 +115271,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113722,29 +115271,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113722 .unused,115271 .unused,
113723 .unused,115272 .unused,
113724 },115273 },
113725 .dst_temps = .{ .mem, .unused },115274 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113726 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115275 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113727 .each = .{ .once = &.{115276 .each = .{ .once = &.{
113728 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115277 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
113729 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },115278 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },
113730 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113731 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
113732 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113733 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113734 } },115279 } },
113735 }, .{115280 }, .{
113736 .required_features = .{ .@"64bit", .sse, null, null },115281 .required_features = .{ .sse, null, null, null },
113737 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },115282 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },
113738 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115283 .dst_constraints = .{ .{ .float = .xword }, .any },
113739 .patterns = &.{115284 .patterns = &.{
113740 .{ .src = .{ .to_mem, .none, .none } },115285 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
113741 },115286 },
113742 .call_frame = .{ .alignment = .@"16" },115287 .call_frame = .{ .alignment = .@"16" },
113743 .extra_temps = .{115288 .extra_temps = .{
113744 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115289 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
113745 .{ .type = .u64, .kind = .{ .reg = .rdi } },115290 .unused,
113746 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundidf" } } },115291 .unused,
113747 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115292 .unused,
113748 .unused,115293 .unused,
113749 .unused,115294 .unused,
113750 .unused,115295 .unused,
...@@ -113753,30 +115298,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113753,30 +115298,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113753 .unused,115298 .unused,
113754 .unused,115299 .unused,
113755 },115300 },
113756 .dst_temps = .{ .mem, .unused },115301 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113757 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115302 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113758 .each = .{ .once = &.{115303 .each = .{ .once = &.{
113759 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },115304 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
113765 } },115305 } },
113766 }, .{115306 }, .{
113767 .required_features = .{ .@"64bit", .avx, null, null },115307 .required_features = .{ .sse, null, null, null },
113768 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },115308 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },
113769 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115309 .dst_constraints = .{ .{ .float = .xword }, .any },
113770 .patterns = &.{115310 .patterns = &.{
113771 .{ .src = .{ .to_mem, .none, .none } },115311 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },
113772 },115312 },
113773 .call_frame = .{ .alignment = .@"16" },115313 .call_frame = .{ .alignment = .@"16" },
113774 .extra_temps = .{115314 .extra_temps = .{
113775 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115315 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
113776 .{ .type = .u64, .kind = .{ .reg = .rdi } },115316 .unused,
113777 .{ .type = .i64, .kind = .{ .reg = .rsi } },115317 .unused,
113778 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },115318 .unused,
113779 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115319 .unused,
113780 .unused,115320 .unused,
113781 .unused,115321 .unused,
113782 .unused,115322 .unused,
...@@ -113784,31 +115324,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113784,31 +115324,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113784 .unused,115324 .unused,
113785 .unused,115325 .unused,
113786 },115326 },
113787 .dst_temps = .{ .mem, .unused },115327 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113788 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115328 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113789 .each = .{ .once = &.{115329 .each = .{ .once = &.{
113790 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115330 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
113797 } },115331 } },
113798 }, .{115332 }, .{
113799 .required_features = .{ .@"64bit", .sse2, null, null },115333 .required_features = .{ .@"64bit", .sse, null, null },
113800 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },115334 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },
113801 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115335 .dst_constraints = .{ .{ .float = .xword }, .any },
113802 .patterns = &.{115336 .patterns = &.{
113803 .{ .src = .{ .to_mem, .none, .none } },115337 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
113804 },115338 },
113805 .call_frame = .{ .alignment = .@"16" },115339 .call_frame = .{ .alignment = .@"16" },
113806 .extra_temps = .{115340 .extra_temps = .{
113807 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115341 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
113808 .{ .type = .u64, .kind = .{ .reg = .rdi } },115342 .unused,
113809 .{ .type = .i64, .kind = .{ .reg = .rsi } },115343 .unused,
113810 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },115344 .unused,
113811 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115345 .unused,
113812 .unused,115346 .unused,
113813 .unused,115347 .unused,
113814 .unused,115348 .unused,
...@@ -113816,31 +115350,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113816,31 +115350,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113816 .unused,115350 .unused,
113817 .unused,115351 .unused,
113818 },115352 },
113819 .dst_temps = .{ .mem, .unused },115353 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113820 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115354 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113821 .each = .{ .once = &.{115355 .each = .{ .once = &.{
113822 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115356 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
113829 } },115357 } },
113830 }, .{115358 }, .{
113831 .required_features = .{ .@"64bit", .sse, null, null },115359 .required_features = .{ .@"64bit", .sse, null, null },
113832 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },115360 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },
113833 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115361 .dst_constraints = .{ .{ .float = .xword }, .any },
113834 .patterns = &.{115362 .patterns = &.{
113835 .{ .src = .{ .to_mem, .none, .none } },115363 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },
113836 },115364 },
113837 .call_frame = .{ .alignment = .@"16" },115365 .call_frame = .{ .alignment = .@"16" },
113838 .extra_temps = .{115366 .extra_temps = .{
113839 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115367 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
113840 .{ .type = .u64, .kind = .{ .reg = .rdi } },115368 .unused,
113841 .{ .type = .i64, .kind = .{ .reg = .rsi } },115369 .unused,
113842 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattidf" } } },115370 .unused,
113843 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115371 .unused,
113844 .unused,115372 .unused,
113845 .unused,115373 .unused,
113846 .unused,115374 .unused,
...@@ -113848,31 +115376,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113848,31 +115376,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113848 .unused,115376 .unused,
113849 .unused,115377 .unused,
113850 },115378 },
113851 .dst_temps = .{ .mem, .unused },115379 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113852 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115380 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113853 .each = .{ .once = &.{115381 .each = .{ .once = &.{
113854 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115382 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
113861 } },115383 } },
113862 }, .{115384 }, .{
113863 .required_features = .{ .@"64bit", .avx, null, null },115385 .required_features = .{ .@"64bit", .sse, null, null },
113864 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },115386 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },
113865 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115387 .dst_constraints = .{ .{ .float = .xword }, .any },
113866 .patterns = &.{115388 .patterns = &.{
113867 .{ .src = .{ .to_mem, .none, .none } },115389 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
113868 },115390 },
113869 .call_frame = .{ .alignment = .@"16" },115391 .call_frame = .{ .alignment = .@"16" },
113870 .extra_temps = .{115392 .extra_temps = .{
113871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115393 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
113872 .{ .type = .u64, .kind = .{ .reg = .rdi } },115394 .unused,
113873 .{ .type = .u64, .kind = .{ .reg = .rsi } },115395 .unused,
113874 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },115396 .unused,
113875 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115397 .unused,
113876 .unused,115398 .unused,
113877 .unused,115399 .unused,
113878 .unused,115400 .unused,
...@@ -113880,31 +115402,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113880,31 +115402,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113880 .unused,115402 .unused,
113881 .unused,115403 .unused,
113882 },115404 },
113883 .dst_temps = .{ .mem, .unused },115405 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113884 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113885 .each = .{ .once = &.{115407 .each = .{ .once = &.{
113886 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115408 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
113893 } },115409 } },
113894 }, .{115410 }, .{
113895 .required_features = .{ .@"64bit", .sse2, null, null },115411 .required_features = .{ .@"64bit", .sse, null, null },
113896 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },115412 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },
113897 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115413 .dst_constraints = .{ .{ .float = .xword }, .any },
113898 .patterns = &.{115414 .patterns = &.{
113899 .{ .src = .{ .to_mem, .none, .none } },115415 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },
113900 },115416 },
113901 .call_frame = .{ .alignment = .@"16" },115417 .call_frame = .{ .alignment = .@"16" },
113902 .extra_temps = .{115418 .extra_temps = .{
113903 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115419 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
113904 .{ .type = .u64, .kind = .{ .reg = .rdi } },115420 .unused,
113905 .{ .type = .u64, .kind = .{ .reg = .rsi } },115421 .unused,
113906 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },115422 .unused,
113907 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115423 .unused,
113908 .unused,115424 .unused,
113909 .unused,115425 .unused,
113910 .unused,115426 .unused,
...@@ -113912,31 +115428,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113912,31 +115428,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113912 .unused,115428 .unused,
113913 .unused,115429 .unused,
113914 },115430 },
113915 .dst_temps = .{ .mem, .unused },115431 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113916 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115432 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113917 .each = .{ .once = &.{115433 .each = .{ .once = &.{
113918 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115434 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
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", ._, ._, ._ },
113925 } },115435 } },
113926 }, .{115436 }, .{
113927 .required_features = .{ .@"64bit", .sse, null, null },115437 .required_features = .{ .@"64bit", .sse, null, null },
113928 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },115438 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113929 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115439 .dst_constraints = .{ .{ .float = .xword }, .any },
113930 .patterns = &.{115440 .patterns = &.{
113931 .{ .src = .{ .to_mem, .none, .none } },115441 .{ .src = .{ .to_mem, .none, .none } },
113932 },115442 },
113933 .call_frame = .{ .alignment = .@"16" },115443 .call_frame = .{ .alignment = .@"16" },
113934 .extra_temps = .{115444 .extra_temps = .{
113935 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115445 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113936 .{ .type = .u64, .kind = .{ .reg = .rdi } },115446 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113937 .{ .type = .u64, .kind = .{ .reg = .rsi } },115447 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
113938 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntidf" } } },115448 .unused,
113939 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115449 .unused,
113940 .unused,115450 .unused,
113941 .unused,115451 .unused,
113942 .unused,115452 .unused,
...@@ -113944,66 +115454,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -113944,66 +115454,56 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
113944 .unused,115454 .unused,
113945 .unused,115455 .unused,
113946 },115456 },
113947 .dst_temps = .{ .mem, .unused },115457 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113948 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115458 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113949 .each = .{ .once = &.{115459 .each = .{ .once = &.{
113950 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115460 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
113951 .{ .@"0:", ._, .mov, .tmp1q, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },115461 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
113952 .{ ._, ._, .mov, .tmp2q, .memsiad(.src0q, .@"2", .tmp0, .add_unaligned_size, 8), ._, ._ },115462 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
113953 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
113954 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
113955 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
113956 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
113957 } },115463 } },
113958 }, .{115464 }, .{
113959 .required_features = .{ .@"64bit", .avx, null, null },115465 .required_features = .{ .@"64bit", .sse, null, null },
113960 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },115466 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
113961 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115467 .dst_constraints = .{ .{ .float = .xword }, .any },
113962 .patterns = &.{115468 .patterns = &.{
113963 .{ .src = .{ .to_mem, .none, .none } },115469 .{ .src = .{ .to_mem, .none, .none } },
113964 },115470 },
113965 .call_frame = .{ .alignment = .@"16" },115471 .call_frame = .{ .alignment = .@"16" },
113966 .extra_temps = .{115472 .extra_temps = .{
113967 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
113968 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
113969 .{ .type = .usize, .kind = .{ .reg = .rdi } },115473 .{ .type = .usize, .kind = .{ .reg = .rdi } },
113970 .{ .type = .usize, .kind = .{ .reg = .rsi } },115474 .{ .type = .usize, .kind = .{ .reg = .rsi } },
113971 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },115475 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
113972 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115476 .unused,
115477 .unused,
115478 .unused,
113973 .unused,115479 .unused,
113974 .unused,115480 .unused,
113975 .unused,115481 .unused,
113976 .unused,115482 .unused,
113977 .unused,115483 .unused,
113978 },115484 },
113979 .dst_temps = .{ .mem, .unused },115485 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
113980 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115486 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
113981 .each = .{ .once = &.{115487 .each = .{ .once = &.{
113982 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115488 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
113983 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115489 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },
113984 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },115490 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
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", ._, ._, ._ },
113991 } },115491 } },
113992 }, .{115492 }, .{
113993 .required_features = .{ .@"64bit", .sse2, null, null },115493 .required_features = .{ .avx, .slow_incdec, null, null },
113994 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },115494 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
113995 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115495 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
113996 .patterns = &.{115496 .patterns = &.{
113997 .{ .src = .{ .to_mem, .none, .none } },115497 .{ .src = .{ .to_mem, .none, .none } },
113998 },115498 },
113999 .call_frame = .{ .alignment = .@"16" },115499 .call_frame = .{ .alignment = .@"16" },
114000 .extra_temps = .{115500 .extra_temps = .{
114001 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114002 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115501 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114003 .{ .type = .usize, .kind = .{ .reg = .rdi } },115502 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114004 .{ .type = .usize, .kind = .{ .reg = .rsi } },115503 .{ .type = .i32, .kind = .{ .reg = .edi } },
114005 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },115504 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114006 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115505 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115506 .unused,
114007 .unused,115507 .unused,
114008 .unused,115508 .unused,
114009 .unused,115509 .unused,
...@@ -114013,31 +115513,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114013,31 +115513,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114013 .dst_temps = .{ .mem, .unused },115513 .dst_temps = .{ .mem, .unused },
114014 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115514 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114015 .each = .{ .once = &.{115515 .each = .{ .once = &.{
114016 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115516 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114017 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115517 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114018 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },115518 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114019 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },115519 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114020 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },115520 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
114021 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },115521 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114022 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },115522 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114023 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114024 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115523 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114025 } },115524 } },
114026 }, .{115525 }, .{
114027 .required_features = .{ .@"64bit", .sse, null, null },115526 .required_features = .{ .avx, null, null, null },
114028 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },115527 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114029 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115528 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114030 .patterns = &.{115529 .patterns = &.{
114031 .{ .src = .{ .to_mem, .none, .none } },115530 .{ .src = .{ .to_mem, .none, .none } },
114032 },115531 },
114033 .call_frame = .{ .alignment = .@"16" },115532 .call_frame = .{ .alignment = .@"16" },
114034 .extra_temps = .{115533 .extra_temps = .{
114035 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115534 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114037 .{ .type = .usize, .kind = .{ .reg = .rdi } },115535 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114038 .{ .type = .usize, .kind = .{ .reg = .rsi } },115536 .{ .type = .i32, .kind = .{ .reg = .edi } },
114039 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateidf" } } },115537 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114040 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115538 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115539 .unused,
114041 .unused,115540 .unused,
114042 .unused,115541 .unused,
114043 .unused,115542 .unused,
...@@ -114047,31 +115546,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114047,31 +115546,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114047 .dst_temps = .{ .mem, .unused },115546 .dst_temps = .{ .mem, .unused },
114048 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115547 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114049 .each = .{ .once = &.{115548 .each = .{ .once = &.{
114050 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115549 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114051 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115550 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114052 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },115551 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114053 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },115552 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114054 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },115553 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
114055 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },115554 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114056 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },115555 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114057 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },115556 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114058 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114059 } },115557 } },
114060 }, .{115558 }, .{
114061 .required_features = .{ .@"64bit", .avx, null, null },115559 .required_features = .{ .sse2, .slow_incdec, null, null },
114062 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },115560 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114063 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115561 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114064 .patterns = &.{115562 .patterns = &.{
114065 .{ .src = .{ .to_mem, .none, .none } },115563 .{ .src = .{ .to_mem, .none, .none } },
114066 },115564 },
114067 .call_frame = .{ .alignment = .@"16" },115565 .call_frame = .{ .alignment = .@"16" },
114068 .extra_temps = .{115566 .extra_temps = .{
114069 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114070 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115567 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114071 .{ .type = .usize, .kind = .{ .reg = .rdi } },115568 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114072 .{ .type = .usize, .kind = .{ .reg = .rsi } },115569 .{ .type = .i32, .kind = .{ .reg = .edi } },
114073 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },115570 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114074 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115571 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115572 .unused,
114075 .unused,115573 .unused,
114076 .unused,115574 .unused,
114077 .unused,115575 .unused,
...@@ -114081,31 +115579,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114081,31 +115579,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114081 .dst_temps = .{ .mem, .unused },115579 .dst_temps = .{ .mem, .unused },
114082 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115580 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114083 .each = .{ .once = &.{115581 .each = .{ .once = &.{
114084 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115582 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114085 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115583 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114086 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },115584 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114087 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },115585 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114088 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },115586 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
114089 .{ ._, .v_sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },115587 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114090 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },115588 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114091 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114092 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115589 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114093 } },115590 } },
114094 }, .{115591 }, .{
114095 .required_features = .{ .@"64bit", .sse2, null, null },115592 .required_features = .{ .sse2, null, null, null },
114096 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },115593 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114097 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115594 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114098 .patterns = &.{115595 .patterns = &.{
114099 .{ .src = .{ .to_mem, .none, .none } },115596 .{ .src = .{ .to_mem, .none, .none } },
114100 },115597 },
114101 .call_frame = .{ .alignment = .@"16" },115598 .call_frame = .{ .alignment = .@"16" },
114102 .extra_temps = .{115599 .extra_temps = .{
114103 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114104 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114105 .{ .type = .usize, .kind = .{ .reg = .rdi } },115601 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114106 .{ .type = .usize, .kind = .{ .reg = .rsi } },115602 .{ .type = .i32, .kind = .{ .reg = .edi } },
114107 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },115603 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114108 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115604 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115605 .unused,
114109 .unused,115606 .unused,
114110 .unused,115607 .unused,
114111 .unused,115608 .unused,
...@@ -114115,31 +115612,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114115,31 +115612,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114115 .dst_temps = .{ .mem, .unused },115612 .dst_temps = .{ .mem, .unused },
114116 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115613 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114117 .each = .{ .once = &.{115614 .each = .{ .once = &.{
114118 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115615 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114119 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115616 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114120 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },115617 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114121 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },115618 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114122 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },115619 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
114123 .{ ._, ._sd, .mov, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },115620 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114124 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },115621 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114125 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },115622 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114126 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114127 } },115623 } },
114128 }, .{115624 }, .{
114129 .required_features = .{ .@"64bit", .sse, null, null },115625 .required_features = .{ .sse, .slow_incdec, null, null },
114130 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },115626 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114131 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any },115627 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114132 .patterns = &.{115628 .patterns = &.{
114133 .{ .src = .{ .to_mem, .none, .none } },115629 .{ .src = .{ .to_mem, .none, .none } },
114134 },115630 },
114135 .call_frame = .{ .alignment = .@"16" },115631 .call_frame = .{ .alignment = .@"16" },
114136 .extra_temps = .{115632 .extra_temps = .{
114137 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114138 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },115633 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114139 .{ .type = .usize, .kind = .{ .reg = .rdi } },115634 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114140 .{ .type = .usize, .kind = .{ .reg = .rsi } },115635 .{ .type = .i32, .kind = .{ .reg = .edi } },
114141 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneidf" } } },115636 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114142 .{ .type = .f64, .kind = .{ .reg = .xmm0 } },115637 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115638 .unused,
114143 .unused,115639 .unused,
114144 .unused,115640 .unused,
114145 .unused,115641 .unused,
...@@ -114149,30 +115645,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114149,30 +115645,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114149 .dst_temps = .{ .mem, .unused },115645 .dst_temps = .{ .mem, .unused },
114150 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115646 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114151 .each = .{ .once = &.{115647 .each = .{ .once = &.{
114152 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },115648 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114153 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },115649 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114154 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },115650 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114155 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },115651 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114156 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },115652 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
114157 .{ ._, ._ps, .movl, .memia(.dst0q, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },115653 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114158 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },115654 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114159 .{ ._, ._, .add, .tmp1p, .si(8), ._, ._ },
114160 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },115655 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114161 } },115656 } },
114162 }, .{115657 }, .{
114163 .required_features = .{ .x87, null, null, null },115658 .required_features = .{ .sse, null, null, null },
114164 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },115659 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114165 .dst_constraints = .{ .{ .float = .tbyte }, .any },115660 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114166 .patterns = &.{115661 .patterns = &.{
114167 .{ .src = .{ .mem, .none, .none } },115662 .{ .src = .{ .to_mem, .none, .none } },
114168 .{ .src = .{ .to_gpr, .none, .none } },
114169 },115663 },
115664 .call_frame = .{ .alignment = .@"16" },
114170 .extra_temps = .{115665 .extra_temps = .{
114171 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },115666 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114172 .{ .type = .i16, .kind = .mem },115667 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114173 .{ .type = .f80, .kind = .{ .reg = .st7 } },115668 .{ .type = .i32, .kind = .{ .reg = .edi } },
114174 .unused,115669 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114175 .unused,115670 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114176 .unused,115671 .unused,
114177 .unused,115672 .unused,
114178 .unused,115673 .unused,
...@@ -114180,27 +115675,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114180,27 +115675,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114180 .unused,115675 .unused,
114181 .unused,115676 .unused,
114182 },115677 },
114183 .dst_temps = .{ .{ .rc = .x87 }, .unused },115678 .dst_temps = .{ .mem, .unused },
115679 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114184 .each = .{ .once = &.{115680 .each = .{ .once = &.{
114185 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },115681 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114186 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },115682 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114187 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },115683 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114188 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },115684 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115685 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115686 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115687 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115688 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114189 } },115689 } },
114190 }, .{115690 }, .{
114191 .required_features = .{ .x87, null, null, null },115691 .required_features = .{ .avx, .slow_incdec, null, null },
114192 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },115692 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114193 .dst_constraints = .{ .{ .float = .tbyte }, .any },115693 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114194 .patterns = &.{115694 .patterns = &.{
114195 .{ .src = .{ .mem, .none, .none } },115695 .{ .src = .{ .to_mem, .none, .none } },
114196 .{ .src = .{ .to_gpr, .none, .none } },
114197 },115696 },
115697 .call_frame = .{ .alignment = .@"16" },
114198 .extra_temps = .{115698 .extra_temps = .{
114199 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },115699 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114200 .{ .type = .i16, .kind = .mem },115700 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114201 .{ .type = .f80, .kind = .{ .reg = .st7 } },115701 .{ .type = .u32, .kind = .{ .reg = .edi } },
114202 .unused,115702 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114203 .unused,115703 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114204 .unused,115704 .unused,
114205 .unused,115705 .unused,
114206 .unused,115706 .unused,
...@@ -114208,26 +115708,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114208,26 +115708,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114208 .unused,115708 .unused,
114209 .unused,115709 .unused,
114210 },115710 },
114211 .dst_temps = .{ .{ .rc = .x87 }, .unused },115711 .dst_temps = .{ .mem, .unused },
115712 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114212 .each = .{ .once = &.{115713 .each = .{ .once = &.{
114213 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },115714 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114214 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },115715 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114215 .{ ._, .fi_, .ld, .tmp1w, ._, ._, ._ },115716 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114216 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },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", ._, ._, ._ },
114217 } },115722 } },
114218 }, .{115723 }, .{
114219 .required_features = .{ .x87, null, null, null },115724 .required_features = .{ .avx, null, null, null },
114220 .src_constraints = .{ .{ .signed_or_exclusive_int = .word }, .any, .any },115725 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114221 .dst_constraints = .{ .{ .float = .tbyte }, .any },115726 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114222 .patterns = &.{115727 .patterns = &.{
114223 .{ .src = .{ .to_mem, .none, .none } },115728 .{ .src = .{ .to_mem, .none, .none } },
114224 },115729 },
115730 .call_frame = .{ .alignment = .@"16" },
114225 .extra_temps = .{115731 .extra_temps = .{
114226 .{ .type = .f80, .kind = .{ .reg = .st7 } },115732 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114227 .unused,115733 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114228 .unused,115734 .{ .type = .u32, .kind = .{ .reg = .edi } },
114229 .unused,115735 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114230 .unused,115736 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114231 .unused,115737 .unused,
114232 .unused,115738 .unused,
114233 .unused,115739 .unused,
...@@ -114235,25 +115741,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114235,25 +115741,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114235 .unused,115741 .unused,
114236 .unused,115742 .unused,
114237 },115743 },
114238 .dst_temps = .{ .{ .rc = .x87 }, .unused },115744 .dst_temps = .{ .mem, .unused },
115745 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114239 .each = .{ .once = &.{115746 .each = .{ .once = &.{
114240 .{ ._, .fi_, .ld, .src0w, ._, ._, ._ },115747 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114241 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },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", ._, ._, ._ },
114242 } },115755 } },
114243 }, .{115756 }, .{
114244 .required_features = .{ .x87, null, null, null },115757 .required_features = .{ .sse2, .slow_incdec, null, null },
114245 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .any, .any },115758 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114246 .dst_constraints = .{ .{ .float = .tbyte }, .any },115759 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114247 .patterns = &.{115760 .patterns = &.{
114248 .{ .src = .{ .mem, .none, .none } },115761 .{ .src = .{ .to_mem, .none, .none } },
114249 .{ .src = .{ .to_gpr, .none, .none } },
114250 },115762 },
115763 .call_frame = .{ .alignment = .@"16" },
114251 .extra_temps = .{115764 .extra_temps = .{
114252 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },115765 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114253 .{ .type = .i32, .kind = .mem },115766 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114254 .{ .type = .f80, .kind = .{ .reg = .st7 } },115767 .{ .type = .u32, .kind = .{ .reg = .edi } },
114255 .unused,115768 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114256 .unused,115769 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114257 .unused,115770 .unused,
114258 .unused,115771 .unused,
114259 .unused,115772 .unused,
...@@ -114261,26 +115774,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114261,26 +115774,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114261 .unused,115774 .unused,
114262 .unused,115775 .unused,
114263 },115776 },
114264 .dst_temps = .{ .{ .rc = .x87 }, .unused },115777 .dst_temps = .{ .mem, .unused },
115778 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114265 .each = .{ .once = &.{115779 .each = .{ .once = &.{
114266 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },115780 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114267 .{ ._, ._, .mov, .tmp1d, .tmp0d, ._, ._ },115781 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114268 .{ ._, .fi_, .ld, .tmp1d, ._, ._, ._ },115782 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114269 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },115783 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115784 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115785 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115786 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115787 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114270 } },115788 } },
114271 }, .{115789 }, .{
114272 .required_features = .{ .x87, null, null, null },115790 .required_features = .{ .sse2, null, null, null },
114273 .src_constraints = .{ .{ .signed_or_exclusive_int = .dword }, .any, .any },115791 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114274 .dst_constraints = .{ .{ .float = .tbyte }, .any },115792 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114275 .patterns = &.{115793 .patterns = &.{
114276 .{ .src = .{ .to_mem, .none, .none } },115794 .{ .src = .{ .to_mem, .none, .none } },
114277 },115795 },
115796 .call_frame = .{ .alignment = .@"16" },
114278 .extra_temps = .{115797 .extra_temps = .{
114279 .{ .type = .f80, .kind = .{ .reg = .st7 } },115798 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114280 .unused,115799 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114281 .unused,115800 .{ .type = .u32, .kind = .{ .reg = .edi } },
114282 .unused,115801 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114283 .unused,115802 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114284 .unused,115803 .unused,
114285 .unused,115804 .unused,
114286 .unused,115805 .unused,
...@@ -114288,25 +115807,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114288,25 +115807,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114288 .unused,115807 .unused,
114289 .unused,115808 .unused,
114290 },115809 },
114291 .dst_temps = .{ .{ .rc = .x87 }, .unused },115810 .dst_temps = .{ .mem, .unused },
115811 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114292 .each = .{ .once = &.{115812 .each = .{ .once = &.{
114293 .{ ._, .fi_, .ld, .src0d, ._, ._, ._ },115813 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114294 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },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", ._, ._, ._ },
114295 } },115821 } },
114296 }, .{115822 }, .{
114297 .required_features = .{ .@"64bit", .x87, null, null },115823 .required_features = .{ .sse, .slow_incdec, null, null },
114298 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .any, .any },115824 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114299 .dst_constraints = .{ .{ .float = .tbyte }, .any },115825 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114300 .patterns = &.{115826 .patterns = &.{
114301 .{ .src = .{ .mem, .none, .none } },115827 .{ .src = .{ .to_mem, .none, .none } },
114302 .{ .src = .{ .to_gpr, .none, .none } },
114303 },115828 },
115829 .call_frame = .{ .alignment = .@"16" },
114304 .extra_temps = .{115830 .extra_temps = .{
114305 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } },115831 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114306 .{ .type = .i64, .kind = .mem },115832 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114307 .{ .type = .f80, .kind = .{ .reg = .st7 } },115833 .{ .type = .u32, .kind = .{ .reg = .edi } },
114308 .unused,115834 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114309 .unused,115835 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114310 .unused,115836 .unused,
114311 .unused,115837 .unused,
114312 .unused,115838 .unused,
...@@ -114314,26 +115840,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114314,26 +115840,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114314 .unused,115840 .unused,
114315 .unused,115841 .unused,
114316 },115842 },
114317 .dst_temps = .{ .{ .rc = .x87 }, .unused },115843 .dst_temps = .{ .mem, .unused },
115844 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114318 .each = .{ .once = &.{115845 .each = .{ .once = &.{
114319 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },115846 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114320 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },115847 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
114321 .{ ._, .fi_, .ld, .tmp1q, ._, ._, ._ },115848 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
114322 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },115849 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115850 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },
115851 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115852 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115853 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114323 } },115854 } },
114324 }, .{115855 }, .{
114325 .required_features = .{ .x87, null, null, null },115856 .required_features = .{ .sse, null, null, null },
114326 .src_constraints = .{ .{ .signed_or_exclusive_int = .qword }, .any, .any },115857 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },
114327 .dst_constraints = .{ .{ .float = .tbyte }, .any },115858 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114328 .patterns = &.{115859 .patterns = &.{
114329 .{ .src = .{ .to_mem, .none, .none } },115860 .{ .src = .{ .to_mem, .none, .none } },
114330 },115861 },
115862 .call_frame = .{ .alignment = .@"16" },
114331 .extra_temps = .{115863 .extra_temps = .{
114332 .{ .type = .f80, .kind = .{ .reg = .st7 } },115864 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114333 .unused,115865 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114334 .unused,115866 .{ .type = .u32, .kind = .{ .reg = .edi } },
114335 .unused,115867 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114336 .unused,115868 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114337 .unused,115869 .unused,
114338 .unused,115870 .unused,
114339 .unused,115871 .unused,
...@@ -114341,23 +115873,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114341,23 +115873,31 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114341 .unused,115873 .unused,
114342 .unused,115874 .unused,
114343 },115875 },
114344 .dst_temps = .{ .{ .rc = .x87 }, .unused },115876 .dst_temps = .{ .mem, .unused },
115877 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114345 .each = .{ .once = &.{115878 .each = .{ .once = &.{
114346 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },115879 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114347 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },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", ._, ._, ._ },
114348 } },115887 } },
114349 }, .{115888 }, .{
114350 .required_features = .{ .x87, null, null, null },115889 .required_features = .{ .avx, null, null, null },
114351 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .any, .any },115890 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114352 .dst_constraints = .{ .{ .float = .tbyte }, .any },115891 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114353 .patterns = &.{115892 .patterns = &.{
114354 .{ .src = .{ .to_mem, .none, .none } },115893 .{ .src = .{ .to_mem, .none, .none } },
114355 },115894 },
115895 .call_frame = .{ .alignment = .@"16" },
114356 .extra_temps = .{115896 .extra_temps = .{
114357 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },115897 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114358 .{ .type = .u1, .kind = .{ .rc = .general_purpose } },115898 .{ .type = .i32, .kind = .{ .reg = .edi } },
114359 .{ .type = .vector_2_f32, .kind = .f32_0_0x1p64_mem },115899 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114360 .{ .type = .f80, .kind = .{ .reg = .st7 } },115900 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114361 .unused,115901 .unused,
114362 .unused,115902 .unused,
114363 .unused,115903 .unused,
...@@ -114366,29 +115906,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114366,29 +115906,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114366 .unused,115906 .unused,
114367 .unused,115907 .unused,
114368 },115908 },
114369 .dst_temps = .{ .{ .rc = .x87 }, .unused },115909 .dst_temps = .{ .mem, .unused },
114370 .clobbers = .{ .eflags = true },115910 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114371 .each = .{ .once = &.{115911 .each = .{ .once = &.{
114372 .{ ._, .fi_, .ld, .src0q, ._, ._, ._ },115912 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114373 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },115913 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114374 .{ ._, ._, .mov, .tmp1d, .memd(.src0d, 4), ._, ._ },115914 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114375 .{ ._, ._r, .sh, .tmp1d, .ui(31), ._, ._ },115915 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114376 .{ ._, .f_, .add, .leasi(.tmp0d, .@"4", .tmp1), ._, ._, ._ },115916 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114377 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },115917 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114378 } },115918 } },
114379 }, .{115919 }, .{
114380 .required_features = .{ .@"64bit", .sse, null, null },115920 .required_features = .{ .sse2, null, null, null },
114381 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },115921 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114382 .dst_constraints = .{ .{ .float = .tbyte }, .any },115922 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114383 .patterns = &.{115923 .patterns = &.{
114384 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },115924 .{ .src = .{ .to_mem, .none, .none } },
114385 },115925 },
114386 .call_frame = .{ .alignment = .@"16" },115926 .call_frame = .{ .alignment = .@"16" },
114387 .extra_temps = .{115927 .extra_temps = .{
114388 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },115928 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114389 .unused,115929 .{ .type = .i32, .kind = .{ .reg = .edi } },
114390 .unused,115930 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114391 .unused,115931 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114392 .unused,115932 .unused,
114393 .unused,115933 .unused,
114394 .unused,115934 .unused,
...@@ -114397,24 +115937,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114397,24 +115937,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114397 .unused,115937 .unused,
114398 .unused,115938 .unused,
114399 },115939 },
114400 .dst_temps = .{ .{ .reg = .st0 }, .unused },115940 .dst_temps = .{ .mem, .unused },
114401 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115941 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114402 .each = .{ .once = &.{115942 .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", ._, ._, ._ },
114404 } },115949 } },
114405 }, .{115950 }, .{
114406 .required_features = .{ .@"64bit", .sse, null, null },115951 .required_features = .{ .sse, null, null, null },
114407 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },115952 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },
114408 .dst_constraints = .{ .{ .float = .tbyte }, .any },115953 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114409 .patterns = &.{115954 .patterns = &.{
114410 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },115955 .{ .src = .{ .to_mem, .none, .none } },
114411 },115956 },
114412 .call_frame = .{ .alignment = .@"16" },115957 .call_frame = .{ .alignment = .@"16" },
114413 .extra_temps = .{115958 .extra_temps = .{
114414 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },115959 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114415 .unused,115960 .{ .type = .i32, .kind = .{ .reg = .edi } },
114416 .unused,115961 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114417 .unused,115962 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114418 .unused,115963 .unused,
114419 .unused,115964 .unused,
114420 .unused,115965 .unused,
...@@ -114423,24 +115968,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114423,24 +115968,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114423 .unused,115968 .unused,
114424 .unused,115969 .unused,
114425 },115970 },
114426 .dst_temps = .{ .{ .reg = .st0 }, .unused },115971 .dst_temps = .{ .mem, .unused },
114427 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },115972 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114428 .each = .{ .once = &.{115973 .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", ._, ._, ._ },
114430 } },115980 } },
114431 }, .{115981 }, .{
114432 .required_features = .{ .@"64bit", .sse, null, null },115982 .required_features = .{ .avx, null, null, null },
114433 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },115983 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
114434 .dst_constraints = .{ .{ .float = .tbyte }, .any },115984 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114435 .patterns = &.{115985 .patterns = &.{
114436 .{ .src = .{ .to_mem, .none, .none } },115986 .{ .src = .{ .to_mem, .none, .none } },
114437 },115987 },
114438 .call_frame = .{ .alignment = .@"16" },115988 .call_frame = .{ .alignment = .@"16" },
114439 .extra_temps = .{115989 .extra_temps = .{
114440 .{ .type = .usize, .kind = .{ .reg = .rdi } },115990 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114441 .{ .type = .usize, .kind = .{ .reg = .rsi } },115991 .{ .type = .u32, .kind = .{ .reg = .edi } },
114442 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },115992 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114443 .unused,115993 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114444 .unused,115994 .unused,
114445 .unused,115995 .unused,
114446 .unused,115996 .unused,
...@@ -114449,26 +115999,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114449,26 +115999,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114449 .unused,115999 .unused,
114450 .unused,116000 .unused,
114451 },116001 },
114452 .dst_temps = .{ .{ .reg = .st0 }, .unused },116002 .dst_temps = .{ .mem, .unused },
114453 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116003 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114454 .each = .{ .once = &.{116004 .each = .{ .once = &.{
114455 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },116005 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114456 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },116006 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114457 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116007 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116008 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116009 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116010 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114458 } },116011 } },
114459 }, .{116012 }, .{
114460 .required_features = .{ .@"64bit", .sse, null, null },116013 .required_features = .{ .sse2, null, null, null },
114461 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },116014 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
114462 .dst_constraints = .{ .{ .float = .tbyte }, .any },116015 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114463 .patterns = &.{116016 .patterns = &.{
114464 .{ .src = .{ .to_mem, .none, .none } },116017 .{ .src = .{ .to_mem, .none, .none } },
114465 },116018 },
114466 .call_frame = .{ .alignment = .@"16" },116019 .call_frame = .{ .alignment = .@"16" },
114467 .extra_temps = .{116020 .extra_temps = .{
114468 .{ .type = .usize, .kind = .{ .reg = .rdi } },116021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114469 .{ .type = .usize, .kind = .{ .reg = .rsi } },116022 .{ .type = .u32, .kind = .{ .reg = .edi } },
114470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },116023 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114471 .unused,116024 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114472 .unused,116025 .unused,
114473 .unused,116026 .unused,
114474 .unused,116027 .unused,
...@@ -114477,26 +116030,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114477,26 +116030,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114477 .unused,116030 .unused,
114478 .unused,116031 .unused,
114479 },116032 },
114480 .dst_temps = .{ .{ .reg = .st0 }, .unused },116033 .dst_temps = .{ .mem, .unused },
114481 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116034 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114482 .each = .{ .once = &.{116035 .each = .{ .once = &.{
114483 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },116036 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114484 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },116037 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114485 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116038 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
116039 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116040 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
116041 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114486 } },116042 } },
114487 }, .{116043 }, .{
114488 .required_features = .{ .x87, .slow_incdec, null, null },116044 .required_features = .{ .sse, null, null, null },
114489 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },116045 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },
114490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116046 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114491 .patterns = &.{116047 .patterns = &.{
114492 .{ .src = .{ .to_mem, .none, .none } },116048 .{ .src = .{ .to_mem, .none, .none } },
114493 },116049 },
116050 .call_frame = .{ .alignment = .@"16" },
114494 .extra_temps = .{116051 .extra_temps = .{
114495 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116052 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114496 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116053 .{ .type = .u32, .kind = .{ .reg = .edi } },
114497 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },116054 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114498 .{ .type = .i16, .kind = .mem },116055 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114499 .{ .type = .f80, .kind = .{ .reg = .st7 } },116056 .unused,
114500 .unused,116057 .unused,
114501 .unused,116058 .unused,
114502 .unused,116059 .unused,
...@@ -114505,31 +116062,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114505,31 +116062,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114505 .unused,116062 .unused,
114506 },116063 },
114507 .dst_temps = .{ .mem, .unused },116064 .dst_temps = .{ .mem, .unused },
114508 .clobbers = .{ .eflags = true },116065 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114509 .each = .{ .once = &.{116066 .each = .{ .once = &.{
114510 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116067 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114511 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116068 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
114512 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116069 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114513 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },116070 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114514 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },116071 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114515 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114516 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114517 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114518 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116072 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114519 } },116073 } },
114520 }, .{116074 }, .{
114521 .required_features = .{ .x87, null, null, null },116075 .required_features = .{ .avx, null, null, null },
114522 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },116076 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114523 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116077 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114524 .patterns = &.{116078 .patterns = &.{
114525 .{ .src = .{ .to_mem, .none, .none } },116079 .{ .src = .{ .to_mem, .none, .none } },
114526 },116080 },
116081 .call_frame = .{ .alignment = .@"16" },
114527 .extra_temps = .{116082 .extra_temps = .{
114528 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116083 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114529 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116084 .{ .type = .i32, .kind = .{ .reg = .edi } },
114530 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },116085 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114531 .{ .type = .i16, .kind = .mem },116086 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114532 .{ .type = .f80, .kind = .{ .reg = .st7 } },116087 .unused,
114533 .unused,116088 .unused,
114534 .unused,116089 .unused,
114535 .unused,116090 .unused,
...@@ -114538,31 +116093,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114538,31 +116093,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114538 .unused,116093 .unused,
114539 },116094 },
114540 .dst_temps = .{ .mem, .unused },116095 .dst_temps = .{ .mem, .unused },
114541 .clobbers = .{ .eflags = true },116096 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114542 .each = .{ .once = &.{116097 .each = .{ .once = &.{
114543 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116098 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114544 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116099 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114545 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116100 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114546 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },116101 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114547 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },116102 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114548 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },116103 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114549 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114550 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114551 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114552 } },116104 } },
114553 }, .{116105 }, .{
114554 .required_features = .{ .x87, .slow_incdec, null, null },116106 .required_features = .{ .sse2, null, null, null },
114555 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },116107 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114556 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116108 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114557 .patterns = &.{116109 .patterns = &.{
114558 .{ .src = .{ .to_mem, .none, .none } },116110 .{ .src = .{ .to_mem, .none, .none } },
114559 },116111 },
116112 .call_frame = .{ .alignment = .@"16" },
114560 .extra_temps = .{116113 .extra_temps = .{
114561 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116114 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114562 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116115 .{ .type = .i32, .kind = .{ .reg = .edi } },
114563 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },116116 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114564 .{ .type = .i16, .kind = .mem },116117 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114565 .{ .type = .f80, .kind = .{ .reg = .st7 } },116118 .unused,
114566 .unused,116119 .unused,
114567 .unused,116120 .unused,
114568 .unused,116121 .unused,
...@@ -114571,31 +116124,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114571,31 +116124,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114571 .unused,116124 .unused,
114572 },116125 },
114573 .dst_temps = .{ .mem, .unused },116126 .dst_temps = .{ .mem, .unused },
114574 .clobbers = .{ .eflags = true },116127 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114575 .each = .{ .once = &.{116128 .each = .{ .once = &.{
114576 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116129 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114577 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116130 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114578 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116131 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114579 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },116132 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114580 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },116133 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114581 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114582 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114583 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114584 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116134 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114585 } },116135 } },
114586 }, .{116136 }, .{
114587 .required_features = .{ .x87, null, null, null },116137 .required_features = .{ .sse, null, null, null },
114588 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },116138 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114589 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116139 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114590 .patterns = &.{116140 .patterns = &.{
114591 .{ .src = .{ .to_mem, .none, .none } },116141 .{ .src = .{ .to_mem, .none, .none } },
114592 },116142 },
116143 .call_frame = .{ .alignment = .@"16" },
114593 .extra_temps = .{116144 .extra_temps = .{
114594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114595 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116146 .{ .type = .i32, .kind = .{ .reg = .edi } },
114596 .{ .type = .i8, .kind = .{ .rc = .general_purpose } },116147 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },
114597 .{ .type = .i16, .kind = .mem },116148 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114598 .{ .type = .f80, .kind = .{ .reg = .st7 } },116149 .unused,
114599 .unused,116150 .unused,
114600 .unused,116151 .unused,
114601 .unused,116152 .unused,
...@@ -114604,32 +116155,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114604,32 +116155,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114604 .unused,116155 .unused,
114605 },116156 },
114606 .dst_temps = .{ .mem, .unused },116157 .dst_temps = .{ .mem, .unused },
114607 .clobbers = .{ .eflags = true },116158 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114608 .each = .{ .once = &.{116159 .each = .{ .once = &.{
114609 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116160 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114610 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116161 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114611 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116162 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114612 .{ ._, ._, .mov, .tmp3w, .tmp2w, ._, ._ },116163 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114613 .{ ._, .fi_, .ld, .tmp3w, ._, ._, ._ },116164 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114614 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },116165 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114615 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114616 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114617 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114618 } },116166 } },
114619 }, .{116167 }, .{
114620 .required_features = .{ .x87, .slow_incdec, null, null },116168 .required_features = .{ .avx, null, null, null },
114621 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },116169 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114622 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116170 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114623 .patterns = &.{116171 .patterns = &.{
114624 .{ .src = .{ .to_mem, .none, .none } },116172 .{ .src = .{ .to_mem, .none, .none } },
114625 },116173 },
114626 .call_frame = .{ .alignment = .@"16" },116174 .call_frame = .{ .alignment = .@"16" },
114627 .extra_temps = .{116175 .extra_temps = .{
114628 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116176 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114629 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116177 .{ .type = .u32, .kind = .{ .reg = .edi } },
114630 .{ .type = .i32, .kind = .{ .reg = .edi } },116178 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114631 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },116179 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114632 .{ .type = .f80, .kind = .{ .reg = .st7 } },116180 .unused,
114633 .unused,116181 .unused,
114634 .unused,116182 .unused,
114635 .unused,116183 .unused,
...@@ -114641,29 +116189,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114641,29 +116189,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114641 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116189 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114642 .each = .{ .once = &.{116190 .each = .{ .once = &.{
114643 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116191 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114644 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116192 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114645 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116193 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114646 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116194 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114647 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116195 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114648 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114649 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114650 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114651 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116196 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114652 } },116197 } },
114653 }, .{116198 }, .{
114654 .required_features = .{ .x87, null, null, null },116199 .required_features = .{ .sse2, null, null, null },
114655 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },116200 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114656 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116201 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114657 .patterns = &.{116202 .patterns = &.{
114658 .{ .src = .{ .to_mem, .none, .none } },116203 .{ .src = .{ .to_mem, .none, .none } },
114659 },116204 },
114660 .call_frame = .{ .alignment = .@"16" },116205 .call_frame = .{ .alignment = .@"16" },
114661 .extra_temps = .{116206 .extra_temps = .{
114662 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114663 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116208 .{ .type = .u32, .kind = .{ .reg = .edi } },
114664 .{ .type = .i32, .kind = .{ .reg = .edi } },116209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114665 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },116210 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114666 .{ .type = .f80, .kind = .{ .reg = .st7 } },116211 .unused,
114667 .unused,116212 .unused,
114668 .unused,116213 .unused,
114669 .unused,116214 .unused,
...@@ -114675,29 +116220,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114675,29 +116220,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116220 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114676 .each = .{ .once = &.{116221 .each = .{ .once = &.{
114677 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116222 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114678 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116223 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114679 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116224 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114680 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116225 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114681 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116226 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114682 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },116227 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114683 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114684 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114685 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114686 } },116228 } },
114687 }, .{116229 }, .{
114688 .required_features = .{ .x87, .slow_incdec, null, null },116230 .required_features = .{ .sse, null, null, null },
114689 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },116231 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
114690 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116232 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114691 .patterns = &.{116233 .patterns = &.{
114692 .{ .src = .{ .to_mem, .none, .none } },116234 .{ .src = .{ .to_mem, .none, .none } },
114693 },116235 },
114694 .call_frame = .{ .alignment = .@"16" },116236 .call_frame = .{ .alignment = .@"16" },
114695 .extra_temps = .{116237 .extra_temps = .{
114696 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116238 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114697 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
114698 .{ .type = .u32, .kind = .{ .reg = .edi } },116239 .{ .type = .u32, .kind = .{ .reg = .edi } },
114699 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116240 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },
114700 .{ .type = .f80, .kind = .{ .reg = .st7 } },116241 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
116242 .unused,
114701 .unused,116243 .unused,
114702 .unused,116244 .unused,
114703 .unused,116245 .unused,
...@@ -114709,29 +116251,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114709,29 +116251,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114709 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116251 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114710 .each = .{ .once = &.{116252 .each = .{ .once = &.{
114711 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116253 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114712 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116254 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
114713 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116255 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114714 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116256 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114715 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116257 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114716 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },
114717 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114718 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
114719 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116258 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114720 } },116259 } },
114721 }, .{116260 }, .{
114722 .required_features = .{ .x87, null, null, null },116261 .required_features = .{ .@"64bit", .avx, null, null },
114723 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },116262 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114724 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116263 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114725 .patterns = &.{116264 .patterns = &.{
114726 .{ .src = .{ .to_mem, .none, .none } },116265 .{ .src = .{ .to_mem, .none, .none } },
114727 },116266 },
114728 .call_frame = .{ .alignment = .@"16" },116267 .call_frame = .{ .alignment = .@"16" },
114729 .extra_temps = .{116268 .extra_temps = .{
114730 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114731 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },116270 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114732 .{ .type = .u32, .kind = .{ .reg = .edi } },116271 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
114733 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116272 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114734 .{ .type = .f80, .kind = .{ .reg = .st7 } },116273 .unused,
114735 .unused,116274 .unused,
114736 .unused,116275 .unused,
114737 .unused,116276 .unused,
...@@ -114743,27 +116282,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114743,27 +116282,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114743 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116282 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114744 .each = .{ .once = &.{116283 .each = .{ .once = &.{
114745 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116284 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114746 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },116285 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114747 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },116286 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114748 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116287 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114749 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116288 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114750 .{ ._, .f_p, .st, .lea(.tmp1t), ._, ._, ._ },116289 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114751 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
114752 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
114753 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
114754 } },116290 } },
114755 }, .{116291 }, .{
114756 .required_features = .{ .x87, null, null, null },116292 .required_features = .{ .@"64bit", .sse2, null, null },
114757 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },116293 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114758 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116294 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114759 .patterns = &.{116295 .patterns = &.{
114760 .{ .src = .{ .to_mem, .none, .none } },116296 .{ .src = .{ .to_mem, .none, .none } },
114761 },116297 },
116298 .call_frame = .{ .alignment = .@"16" },
114762 .extra_temps = .{116299 .extra_temps = .{
114763 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116300 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114764 .{ .type = .f80, .kind = .{ .reg = .st7 } },116301 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114765 .unused,116302 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
114766 .unused,116303 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114767 .unused,116304 .unused,
114768 .unused,116305 .unused,
114769 .unused,116306 .unused,
...@@ -114773,27 +116310,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114773,27 +116310,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114773 .unused,116310 .unused,
114774 },116311 },
114775 .dst_temps = .{ .mem, .unused },116312 .dst_temps = .{ .mem, .unused },
114776 .clobbers = .{ .eflags = true },116313 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114777 .each = .{ .once = &.{116314 .each = .{ .once = &.{
114778 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116315 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114779 .{ .@"0:", .fi_, .ld, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._, ._ },116316 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114780 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },116317 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114781 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },116318 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116319 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114782 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116320 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114783 } },116321 } },
114784 }, .{116322 }, .{
114785 .required_features = .{ .x87, null, null, null },116323 .required_features = .{ .@"64bit", .sse, null, null },
114786 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },116324 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114787 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116325 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114788 .patterns = &.{116326 .patterns = &.{
114789 .{ .src = .{ .to_mem, .none, .none } },116327 .{ .src = .{ .to_mem, .none, .none } },
114790 },116328 },
114791 .call_frame = .{ .alignment = .@"16" },116329 .call_frame = .{ .alignment = .@"16" },
114792 .extra_temps = .{116330 .extra_temps = .{
114793 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116331 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114794 .{ .type = .i32, .kind = .{ .reg = .edi } },116332 .{ .type = .i64, .kind = .{ .reg = .rdi } },
114795 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },116333 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },
114796 .{ .type = .f80, .kind = .{ .reg = .st7 } },116334 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114797 .unused,116335 .unused,
114798 .unused,116336 .unused,
114799 .unused,116337 .unused,
...@@ -114806,26 +116344,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114806,26 +116344,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114806 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116344 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114807 .each = .{ .once = &.{116345 .each = .{ .once = &.{
114808 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116346 .{ ._, ._, .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), ._, ._ },
114810 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116348 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114811 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116349 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114812 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },116350 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114813 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114814 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116351 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114815 } },116352 } },
114816 }, .{116353 }, .{
114817 .required_features = .{ .x87, null, null, null },116354 .required_features = .{ .@"64bit", .avx, null, null },
114818 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },116355 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114819 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116356 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114820 .patterns = &.{116357 .patterns = &.{
114821 .{ .src = .{ .to_mem, .none, .none } },116358 .{ .src = .{ .to_mem, .none, .none } },
114822 },116359 },
114823 .call_frame = .{ .alignment = .@"16" },116360 .call_frame = .{ .alignment = .@"16" },
114824 .extra_temps = .{116361 .extra_temps = .{
114825 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116362 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114826 .{ .type = .u32, .kind = .{ .reg = .edi } },116363 .{ .type = .u64, .kind = .{ .reg = .rdi } },
114827 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116364 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
114828 .{ .type = .f80, .kind = .{ .reg = .st7 } },116365 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114829 .unused,116366 .unused,
114830 .unused,116367 .unused,
114831 .unused,116368 .unused,
...@@ -114838,25 +116375,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114838,25 +116375,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114838 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116375 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114839 .each = .{ .once = &.{116376 .each = .{ .once = &.{
114840 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116377 .{ ._, ._, .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), ._, ._ },
114842 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116379 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114843 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116380 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114844 .{ ._, .f_p, .st, .memsia(.dst0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },116381 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114845 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
114846 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116382 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114847 } },116383 } },
114848 }, .{116384 }, .{
114849 .required_features = .{ .x87, null, null, null },116385 .required_features = .{ .@"64bit", .sse2, null, null },
114850 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },116386 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114851 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116387 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114852 .patterns = &.{116388 .patterns = &.{
114853 .{ .src = .{ .to_mem, .none, .none } },116389 .{ .src = .{ .to_mem, .none, .none } },
114854 },116390 },
116391 .call_frame = .{ .alignment = .@"16" },
114855 .extra_temps = .{116392 .extra_temps = .{
114856 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116393 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114857 .{ .type = .f80, .kind = .{ .reg = .st7 } },116394 .{ .type = .u64, .kind = .{ .reg = .rdi } },
114858 .unused,116395 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
114859 .unused,116396 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114860 .unused,116397 .unused,
114861 .unused,116398 .unused,
114862 .unused,116399 .unused,
...@@ -114866,27 +116403,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114866,27 +116403,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114866 .unused,116403 .unused,
114867 },116404 },
114868 .dst_temps = .{ .mem, .unused },116405 .dst_temps = .{ .mem, .unused },
114869 .clobbers = .{ .eflags = true },116406 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114870 .each = .{ .once = &.{116407 .each = .{ .once = &.{
114871 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116408 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114872 .{ .@"0:", .fi_, .ld, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._, ._ },116409 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114873 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },116410 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114874 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116411 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
116412 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114875 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116413 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114876 } },116414 } },
114877 }, .{116415 }, .{
114878 .required_features = .{ .x87, null, null, null },116416 .required_features = .{ .@"64bit", .sse, null, null },
114879 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },116417 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },
114880 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116418 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114881 .patterns = &.{116419 .patterns = &.{
114882 .{ .src = .{ .to_mem, .none, .none } },116420 .{ .src = .{ .to_mem, .none, .none } },
114883 },116421 },
114884 .call_frame = .{ .alignment = .@"16" },116422 .call_frame = .{ .alignment = .@"16" },
114885 .extra_temps = .{116423 .extra_temps = .{
114886 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116424 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114887 .{ .type = .i32, .kind = .{ .reg = .edi } },116425 .{ .type = .u64, .kind = .{ .reg = .rdi } },
114888 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsixf" } } },116426 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },
114889 .{ .type = .f80, .kind = .{ .reg = .st7 } },116427 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114890 .unused,116428 .unused,
114891 .unused,116429 .unused,
114892 .unused,116430 .unused,
...@@ -114899,27 +116437,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114899,27 +116437,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114899 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116437 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114900 .each = .{ .once = &.{116438 .each = .{ .once = &.{
114901 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116439 .{ ._, ._, .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), ._, ._ },
114903 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116441 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
114904 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116442 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },
114905 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },116443 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
114906 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
114907 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116444 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114908 } },116445 } },
114909 }, .{116446 }, .{
114910 .required_features = .{ .x87, null, null, null },116447 .required_features = .{ .@"64bit", .avx, null, null },
114911 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },116448 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114912 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116449 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114913 .patterns = &.{116450 .patterns = &.{
114914 .{ .src = .{ .to_mem, .none, .none } },116451 .{ .src = .{ .to_mem, .none, .none } },
114915 },116452 },
114916 .call_frame = .{ .alignment = .@"16" },116453 .call_frame = .{ .alignment = .@"16" },
114917 .extra_temps = .{116454 .extra_temps = .{
114918 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114919 .{ .type = .u32, .kind = .{ .reg = .edi } },116456 .{ .type = .u64, .kind = .{ .reg = .rdi } },
114920 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsixf" } } },116457 .{ .type = .i64, .kind = .{ .reg = .rsi } },
114921 .{ .type = .f80, .kind = .{ .reg = .st7 } },116458 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
114922 .unused,116459 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114923 .unused,116460 .unused,
114924 .unused,116461 .unused,
114925 .unused,116462 .unused,
...@@ -114931,26 +116468,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114931,26 +116468,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114931 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116468 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114932 .each = .{ .once = &.{116469 .each = .{ .once = &.{
114933 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114934 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },116471 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114935 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116472 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
114936 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116473 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114937 .{ ._, .f_p, .st, .memsia(.dst0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },116474 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
114938 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },116475 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
114939 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116476 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114940 } },116477 } },
114941 }, .{116478 }, .{
114942 .required_features = .{ .x87, null, null, null },116479 .required_features = .{ .@"64bit", .sse2, null, null },
114943 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },116480 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114944 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116481 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114945 .patterns = &.{116482 .patterns = &.{
114946 .{ .src = .{ .to_mem, .none, .none } },116483 .{ .src = .{ .to_mem, .none, .none } },
114947 },116484 },
116485 .call_frame = .{ .alignment = .@"16" },
114948 .extra_temps = .{116486 .extra_temps = .{
114949 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116487 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114950 .{ .type = .f80, .kind = .{ .reg = .st7 } },116488 .{ .type = .u64, .kind = .{ .reg = .rdi } },
114951 .unused,116489 .{ .type = .i64, .kind = .{ .reg = .rsi } },
114952 .unused,116490 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
114953 .unused,116491 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114954 .unused,116492 .unused,
114955 .unused,116493 .unused,
114956 .unused,116494 .unused,
...@@ -114959,28 +116497,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114959,28 +116497,30 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114959 .unused,116497 .unused,
114960 },116498 },
114961 .dst_temps = .{ .mem, .unused },116499 .dst_temps = .{ .mem, .unused },
114962 .clobbers = .{ .eflags = true },116500 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
114963 .each = .{ .once = &.{116501 .each = .{ .once = &.{
114964 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116502 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114965 .{ .@"0:", .fi_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },116503 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114966 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },116504 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
114967 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },116505 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
116506 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116507 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
114968 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116508 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
114969 } },116509 } },
114970 }, .{116510 }, .{
114971 .required_features = .{ .@"64bit", .x87, null, null },116511 .required_features = .{ .@"64bit", .sse, null, null },
114972 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },116512 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },
114973 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116513 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
114974 .patterns = &.{116514 .patterns = &.{
114975 .{ .src = .{ .to_mem, .none, .none } },116515 .{ .src = .{ .to_mem, .none, .none } },
114976 },116516 },
114977 .call_frame = .{ .alignment = .@"16" },116517 .call_frame = .{ .alignment = .@"16" },
114978 .extra_temps = .{116518 .extra_temps = .{
114979 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116519 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
114980 .{ .type = .i64, .kind = .{ .reg = .rdi } },116520 .{ .type = .u64, .kind = .{ .reg = .rdi } },
114981 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatdixf" } } },116521 .{ .type = .i64, .kind = .{ .reg = .rsi } },
114982 .{ .type = .f80, .kind = .{ .reg = .st7 } },116522 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },
114983 .unused,116523 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
114984 .unused,116524 .unused,
114985 .unused,116525 .unused,
114986 .unused,116526 .unused,
...@@ -114993,16 +116533,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -114993,16 +116533,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
114993 .each = .{ .once = &.{116533 .each = .{ .once = &.{
114994 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116534 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
114995 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },116535 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
114996 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116536 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
114997 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116537 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
114998 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },116538 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
114999 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },116539 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115000 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116540 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115001 } },116541 } },
115002 }, .{116542 }, .{
115003 .required_features = .{ .@"64bit", .x87, null, null },116543 .required_features = .{ .@"64bit", .avx, null, null },
115004 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },116544 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115005 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116545 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115006 .patterns = &.{116546 .patterns = &.{
115007 .{ .src = .{ .to_mem, .none, .none } },116547 .{ .src = .{ .to_mem, .none, .none } },
115008 },116548 },
...@@ -115010,9 +116550,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115010,9 +116550,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115010 .extra_temps = .{116550 .extra_temps = .{
115011 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116551 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115012 .{ .type = .u64, .kind = .{ .reg = .rdi } },116552 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115013 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatundixf" } } },116553 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115014 .{ .type = .f80, .kind = .{ .reg = .st7 } },116554 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
115015 .unused,116555 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115016 .unused,116556 .unused,
115017 .unused,116557 .unused,
115018 .unused,116558 .unused,
...@@ -115025,16 +116565,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115025,16 +116565,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115025 .each = .{ .once = &.{116565 .each = .{ .once = &.{
115026 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },116566 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
115027 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },116567 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115028 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },116568 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115029 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116569 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115030 .{ ._, .f_p, .st, .memsia(.dst0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },116570 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115031 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },116571 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115032 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116572 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115033 } },116573 } },
115034 }, .{116574 }, .{
115035 .required_features = .{ .@"64bit", .x87, null, null },116575 .required_features = .{ .@"64bit", .sse2, null, null },
115036 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },116576 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },
115037 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116577 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115038 .patterns = &.{116578 .patterns = &.{
115039 .{ .src = .{ .to_mem, .none, .none } },116579 .{ .src = .{ .to_mem, .none, .none } },
115040 },116580 },
...@@ -115042,9 +116582,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115042,9 +116582,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115042 .extra_temps = .{116582 .extra_temps = .{
115043 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116583 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115044 .{ .type = .u64, .kind = .{ .reg = .rdi } },116584 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115045 .{ .type = .i64, .kind = .{ .reg = .rsi } },116585 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115046 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattixf" } } },116586 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
115047 .{ .type = .f80, .kind = .{ .reg = .st7 } },116587 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115048 .unused,116588 .unused,
115049 .unused,116589 .unused,
115050 .unused,116590 .unused,
...@@ -115059,15 +116599,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115059,15 +116599,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115059 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },116599 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115060 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },116600 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115061 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116601 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115062 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116602 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115063 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
115064 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },116603 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115065 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116604 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115066 } },116605 } },
115067 }, .{116606 }, .{
115068 .required_features = .{ .@"64bit", .x87, null, null },116607 .required_features = .{ .@"64bit", .sse, null, null },
115069 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },116608 .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 },
115071 .patterns = &.{116610 .patterns = &.{
115072 .{ .src = .{ .to_mem, .none, .none } },116611 .{ .src = .{ .to_mem, .none, .none } },
115073 },116612 },
...@@ -115076,8 +116615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115076,8 +116615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115076 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116615 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115077 .{ .type = .u64, .kind = .{ .reg = .rdi } },116616 .{ .type = .u64, .kind = .{ .reg = .rdi } },
115078 .{ .type = .u64, .kind = .{ .reg = .rsi } },116617 .{ .type = .u64, .kind = .{ .reg = .rsi } },
115079 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntixf" } } },116618 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },
115080 .{ .type = .f80, .kind = .{ .reg = .st7 } },116619 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115081 .unused,116620 .unused,
115082 .unused,116621 .unused,
115083 .unused,116622 .unused,
...@@ -115092,15 +116631,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115092,15 +116631,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115092 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },116631 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
115093 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },116632 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },
115094 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },116633 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
115095 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116634 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
115096 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
115097 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },116635 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
115098 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116636 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115099 } },116637 } },
115100 }, .{116638 }, .{
115101 .required_features = .{ .@"64bit", .x87, null, null },116639 .required_features = .{ .@"64bit", .avx, null, null },
115102 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },116640 .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 },
115104 .patterns = &.{116642 .patterns = &.{
115105 .{ .src = .{ .to_mem, .none, .none } },116643 .{ .src = .{ .to_mem, .none, .none } },
115106 },116644 },
...@@ -115110,8 +116648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115110,8 +116648,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115110 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116648 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115111 .{ .type = .usize, .kind = .{ .reg = .rdi } },116649 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115112 .{ .type = .usize, .kind = .{ .reg = .rsi } },116650 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115113 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateixf" } } },116651 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
115114 .{ .type = .f80, .kind = .{ .reg = .st7 } },116652 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115115 .unused,116653 .unused,
115116 .unused,116654 .unused,
115117 .unused,116655 .unused,
...@@ -115126,16 +116664,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115126,16 +116664,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115126 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },116664 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115127 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },116665 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115128 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },116666 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115129 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116667 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115130 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
115131 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },116668 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115132 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },116669 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
115133 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116670 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115134 } },116671 } },
115135 }, .{116672 }, .{
115136 .required_features = .{ .@"64bit", .x87, null, null },116673 .required_features = .{ .@"64bit", .sse2, null, null },
115137 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },116674 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115138 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },116675 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115139 .patterns = &.{116676 .patterns = &.{
115140 .{ .src = .{ .to_mem, .none, .none } },116677 .{ .src = .{ .to_mem, .none, .none } },
115141 },116678 },
...@@ -115145,8 +116682,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115145,8 +116682,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115145 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },116682 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115146 .{ .type = .usize, .kind = .{ .reg = .rdi } },116683 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115147 .{ .type = .usize, .kind = .{ .reg = .rsi } },116684 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115148 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneixf" } } },116685 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
115149 .{ .type = .f80, .kind = .{ .reg = .st7 } },116686 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115150 .unused,116687 .unused,
115151 .unused,116688 .unused,
115152 .unused,116689 .unused,
...@@ -115161,134 +116698,185 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115161,134 +116698,185 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115161 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },116698 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },
115162 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },116699 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },
115163 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },116700 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
115164 .{ .pseudo, .f_cstp, .de, ._, ._, ._, ._ },116701 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },
115165 .{ ._, .f_p, .st, .memia(.dst0t, .tmp1, .add_unaligned_size), ._, ._, ._ },
115166 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },116702 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },
115167 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },116703 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
115168 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },116704 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115169 } },116705 } },
115170 }, .{116706 }, .{
115171 .required_features = .{ .sse, null, null, null },116707 .required_features = .{ .@"64bit", .sse, null, null },
115172 .src_constraints = .{ .{ .signed_int = .byte }, .any, .any },116708 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115173 .dst_constraints = .{ .{ .float = .xword }, .any },116709 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115174 .patterns = &.{116710 .patterns = &.{
115175 .{ .src = .{ .mem, .none, .none } },116711 .{ .src = .{ .to_mem, .none, .none } },
115176 .{ .src = .{ .to_gpr, .none, .none } },
115177 },116712 },
115178 .call_frame = .{ .alignment = .@"16" },116713 .call_frame = .{ .alignment = .@"16" },
115179 .extra_temps = .{116714 .extra_temps = .{
115180 .{ .type = .i32, .kind = .{ .reg = .edi } },116715 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115181 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116716 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115182 .unused,116717 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115183 .unused,116718 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115184 .unused,116719 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },
115185 .unused,116720 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115186 .unused,116721 .unused,
115187 .unused,116722 .unused,
115188 .unused,116723 .unused,
115189 .unused,116724 .unused,
115190 .unused,116725 .unused,
115191 },116726 },
115192 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116727 .dst_temps = .{ .mem, .unused },
115193 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116728 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115194 .each = .{ .once = &.{116729 .each = .{ .once = &.{
115195 .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },116730 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115196 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },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", ._, ._, ._ },
115197 } },116739 } },
115198 }, .{116740 }, .{
115199 .required_features = .{ .sse, null, null, null },116741 .required_features = .{ .@"64bit", .avx, null, null },
115200 .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any },116742 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115201 .dst_constraints = .{ .{ .float = .xword }, .any },116743 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115202 .patterns = &.{116744 .patterns = &.{
115203 .{ .src = .{ .mem, .none, .none } },116745 .{ .src = .{ .to_mem, .none, .none } },
115204 .{ .src = .{ .to_gpr, .none, .none } },
115205 },116746 },
115206 .call_frame = .{ .alignment = .@"16" },116747 .call_frame = .{ .alignment = .@"16" },
115207 .extra_temps = .{116748 .extra_temps = .{
115208 .{ .type = .u32, .kind = .{ .reg = .edi } },116749 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115209 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116750 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115210 .unused,116751 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115211 .unused,116752 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115212 .unused,116753 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
115213 .unused,116754 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115214 .unused,116755 .unused,
115215 .unused,116756 .unused,
115216 .unused,116757 .unused,
115217 .unused,116758 .unused,
115218 .unused,116759 .unused,
115219 },116760 },
115220 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116761 .dst_temps = .{ .mem, .unused },
115221 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116762 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115222 .each = .{ .once = &.{116763 .each = .{ .once = &.{
115223 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },116764 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115224 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },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", ._, ._, ._ },
115225 } },116773 } },
115226 }, .{116774 }, .{
115227 .required_features = .{ .sse, null, null, null },116775 .required_features = .{ .@"64bit", .sse2, null, null },
115228 .src_constraints = .{ .{ .signed_int = .word }, .any, .any },116776 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115229 .dst_constraints = .{ .{ .float = .xword }, .any },116777 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115230 .patterns = &.{116778 .patterns = &.{
115231 .{ .src = .{ .mem, .none, .none } },116779 .{ .src = .{ .to_mem, .none, .none } },
115232 .{ .src = .{ .to_gpr, .none, .none } },
115233 },116780 },
115234 .call_frame = .{ .alignment = .@"16" },116781 .call_frame = .{ .alignment = .@"16" },
115235 .extra_temps = .{116782 .extra_temps = .{
115236 .{ .type = .i32, .kind = .{ .reg = .edi } },116783 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115237 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116784 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115238 .unused,116785 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115239 .unused,116786 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115240 .unused,116787 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
115241 .unused,116788 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115242 .unused,116789 .unused,
115243 .unused,116790 .unused,
115244 .unused,116791 .unused,
115245 .unused,116792 .unused,
115246 .unused,116793 .unused,
115247 },116794 },
115248 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116795 .dst_temps = .{ .mem, .unused },
115249 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116796 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115250 .each = .{ .once = &.{116797 .each = .{ .once = &.{
115251 .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },116798 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115252 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },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", ._, ._, ._ },
115253 } },116807 } },
115254 }, .{116808 }, .{
115255 .required_features = .{ .sse, null, null, null },116809 .required_features = .{ .@"64bit", .sse, null, null },
115256 .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any },116810 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },
115257 .dst_constraints = .{ .{ .float = .xword }, .any },116811 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115258 .patterns = &.{116812 .patterns = &.{
115259 .{ .src = .{ .mem, .none, .none } },116813 .{ .src = .{ .to_mem, .none, .none } },
115260 .{ .src = .{ .to_gpr, .none, .none } },
115261 },116814 },
115262 .call_frame = .{ .alignment = .@"16" },116815 .call_frame = .{ .alignment = .@"16" },
115263 .extra_temps = .{116816 .extra_temps = .{
115264 .{ .type = .u32, .kind = .{ .reg = .edi } },116817 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115265 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116818 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115266 .unused,116819 .{ .type = .usize, .kind = .{ .reg = .rdi } },
115267 .unused,116820 .{ .type = .usize, .kind = .{ .reg = .rsi } },
115268 .unused,116821 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },
115269 .unused,116822 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
115270 .unused,116823 .unused,
115271 .unused,116824 .unused,
115272 .unused,116825 .unused,
115273 .unused,116826 .unused,
115274 .unused,116827 .unused,
115275 },116828 },
115276 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116829 .dst_temps = .{ .mem, .unused },
115277 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },116830 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115278 .each = .{ .once = &.{116831 .each = .{ .once = &.{
115279 .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },116832 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
115280 .{ ._, ._, .call, .tmp1d, ._, ._, ._ },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, ._, ._ },
115281 } },116870 } },
115282 }, .{116871 }, .{
115283 .required_features = .{ .sse, null, null, null },116872 .required_features = .{ .avx, null, null, null },
115284 .src_constraints = .{ .{ .signed_int = .dword }, .any, .any },116873 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
115285 .dst_constraints = .{ .{ .float = .xword }, .any },116874 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115286 .patterns = &.{116875 .patterns = &.{
115287 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },116876 .{ .src = .{ .to_sse, .none, .none } },
115288 },116877 },
115289 .call_frame = .{ .alignment = .@"16" },
115290 .extra_temps = .{116878 .extra_temps = .{
115291 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },116879 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
115292 .unused,116880 .unused,
115293 .unused,116881 .unused,
115294 .unused,116882 .unused,
...@@ -115300,21 +116888,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115300,21 +116888,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115300 .unused,116888 .unused,
115301 .unused,116889 .unused,
115302 },116890 },
115303 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116891 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
115304 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115305 .each = .{ .once = &.{116892 .each = .{ .once = &.{
115306 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },116893 .{ ._, .vp_, .xor, .tmp0x, .tmp0x, .tmp0x, ._ },
116894 .{ ._, .vp_b, .shuf, .dst0x, .src0x, .tmp0x, ._ },
115307 } },116895 } },
115308 }, .{116896 }, .{
115309 .required_features = .{ .sse, null, null, null },116897 .required_features = .{ .ssse3, null, null, null },
115310 .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any },116898 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
115311 .dst_constraints = .{ .{ .float = .xword }, .any },116899 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115312 .patterns = &.{116900 .patterns = &.{
115313 .{ .src = .{ .{ .to_reg = .edi }, .none, .none } },116901 .{ .src = .{ .to_mut_sse, .none, .none } },
115314 },116902 },
115315 .call_frame = .{ .alignment = .@"16" },
115316 .extra_temps = .{116903 .extra_temps = .{
115317 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },116904 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
115318 .unused,116905 .unused,
115319 .unused,116906 .unused,
115320 .unused,116907 .unused,
...@@ -115326,22 +116913,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115326,22 +116913,47 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115326 .unused,116913 .unused,
115327 .unused,116914 .unused,
115328 },116915 },
115329 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116916 .dst_temps = .{ .{ .ref = .src0 }, .unused },
115330 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115331 .each = .{ .once = &.{116917 .each = .{ .once = &.{
115332 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },116918 .{ ._, .p_, .xor, .tmp0x, .tmp0x, ._, ._ },
116919 .{ ._, .p_b, .shuf, .dst0x, .tmp0x, ._, ._ },
115333 } },116920 } },
115334 }, .{116921 }, .{
115335 .required_features = .{ .@"64bit", .sse, null, null },116922 .required_features = .{ .sse2, null, null, null },
115336 .src_constraints = .{ .{ .signed_int = .qword }, .any, .any },116923 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .byte } }, .any },
115337 .dst_constraints = .{ .{ .float = .xword }, .any },116924 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115338 .patterns = &.{116925 .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 } },
115340 },116953 },
115341 .call_frame = .{ .alignment = .@"16" },
115342 .extra_temps = .{116954 .extra_temps = .{
115343 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },116955 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115344 .unused,116956 .{ .type = .vector_32_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115345 .unused,116957 .unused,
115346 .unused,116958 .unused,
115347 .unused,116959 .unused,
...@@ -115352,23 +116964,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115352,23 +116964,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115352 .unused,116964 .unused,
115353 .unused,116965 .unused,
115354 },116966 },
115355 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116967 .dst_temps = .{ .mem, .unused },
115356 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115357 .each = .{ .once = &.{116968 .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", ._, ._, ._ },
115359 } },116974 } },
115360 }, .{116975 }, .{
115361 .required_features = .{ .@"64bit", .sse, null, null },116976 .required_features = .{ .avx, null, null, null },
115362 .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any },116977 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
115363 .dst_constraints = .{ .{ .float = .xword }, .any },116978 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115364 .patterns = &.{116979 .patterns = &.{
115365 .{ .src = .{ .{ .to_reg = .rdi }, .none, .none } },116980 .{ .src = .{ .to_sse, .none, .none } },
115366 },116981 },
115367 .call_frame = .{ .alignment = .@"16" },
115368 .extra_temps = .{116982 .extra_temps = .{
115369 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },116983 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
115370 .unused,116984 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115371 .unused,116985 .{ .type = .vector_16_u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115372 .unused,116986 .unused,
115373 .unused,116987 .unused,
115374 .unused,116988 .unused,
...@@ -115378,22 +116992,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115378,22 +116992,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115378 .unused,116992 .unused,
115379 .unused,116993 .unused,
115380 },116994 },
115381 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },116995 .dst_temps = .{ .mem, .unused },
115382 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115383 .each = .{ .once = &.{116996 .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", ._, ._, ._ },
115385 } },117003 } },
115386 }, .{117004 }, .{
115387 .required_features = .{ .@"64bit", .sse, null, null },117005 .required_features = .{ .ssse3, null, null, null },
115388 .src_constraints = .{ .{ .signed_int = .xword }, .any, .any },117006 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
115389 .dst_constraints = .{ .{ .float = .xword }, .any },117007 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115390 .patterns = &.{117008 .patterns = &.{
115391 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },117009 .{ .src = .{ .to_mut_sse, .none, .none } },
115392 },117010 },
115393 .call_frame = .{ .alignment = .@"16" },
115394 .extra_temps = .{117011 .extra_temps = .{
115395 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },117012 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
115396 .unused,117013 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115397 .unused,117014 .unused,
115398 .unused,117015 .unused,
115399 .unused,117016 .unused,
...@@ -115404,21 +117021,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115404,21 +117021,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115404 .unused,117021 .unused,
115405 .unused,117022 .unused,
115406 },117023 },
115407 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117024 .dst_temps = .{ .mem, .unused },
115408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115409 .each = .{ .once = &.{117025 .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", ._, ._, ._ },
115411 } },117032 } },
115412 }, .{117033 }, .{
115413 .required_features = .{ .@"64bit", .sse, null, null },117034 .required_features = .{ .sse2, null, null, null },
115414 .src_constraints = .{ .{ .unsigned_int = .xword }, .any, .any },117035 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .byte } }, .any },
115415 .dst_constraints = .{ .{ .float = .xword }, .any },117036 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115416 .patterns = &.{117037 .patterns = &.{
115417 .{ .src = .{ .{ .to_reg_pair = .{ .rdi, .rsi } }, .none, .none } },117038 .{ .src = .{ .to_mut_sse, .none, .none } },
115418 },117039 },
115419 .call_frame = .{ .alignment = .@"16" },
115420 .extra_temps = .{117040 .extra_temps = .{
115421 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },117041 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115422 .unused,117042 .unused,
115423 .unused,117043 .unused,
115424 .unused,117044 .unused,
...@@ -115430,23 +117050,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115430,23 +117050,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115430 .unused,117050 .unused,
115431 .unused,117051 .unused,
115432 },117052 },
115433 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117053 .dst_temps = .{ .mem, .unused },
115434 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115435 .each = .{ .once = &.{117054 .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", ._, ._, ._ },
115437 } },117062 } },
115438 }, .{117063 }, .{
115439 .required_features = .{ .@"64bit", .sse, null, null },117064 .required_features = .{ .slow_incdec, null, null, null },
115440 .src_constraints = .{ .{ .remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },117065 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
115441 .dst_constraints = .{ .{ .float = .xword }, .any },117066 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115442 .patterns = &.{117067 .patterns = &.{
115443 .{ .src = .{ .to_mem, .none, .none } },117068 .{ .src = .{ .to_gpr, .none, .none } },
115444 },117069 },
115445 .call_frame = .{ .alignment = .@"16" },
115446 .extra_temps = .{117070 .extra_temps = .{
115447 .{ .type = .usize, .kind = .{ .reg = .rdi } },117071 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115448 .{ .type = .usize, .kind = .{ .reg = .rsi } },117072 .unused,
115449 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },117073 .unused,
115450 .unused,117074 .unused,
115451 .unused,117075 .unused,
115452 .unused,117076 .unused,
...@@ -115456,25 +117080,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115456,25 +117080,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115456 .unused,117080 .unused,
115457 .unused,117081 .unused,
115458 },117082 },
115459 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117083 .dst_temps = .{ .mem, .unused },
115460 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115461 .each = .{ .once = &.{117084 .each = .{ .once = &.{
115462 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },117085 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_size), ._, ._ },
115463 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },117086 .{ .@"0:", ._, .mov, .memi(.dst0b, .tmp0), .src0b, ._, ._ },
115464 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117087 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
117088 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115465 } },117089 } },
115466 }, .{117090 }, .{
115467 .required_features = .{ .@"64bit", .sse, null, null },117091 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any },
115468 .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },117092 .src_constraints = .{ .{ .int = .byte }, .any, .any },
115469 .dst_constraints = .{ .{ .float = .xword }, .any },
115470 .patterns = &.{117093 .patterns = &.{
115471 .{ .src = .{ .to_mem, .none, .none } },117094 .{ .src = .{ .to_gpr, .none, .none } },
115472 },117095 },
115473 .call_frame = .{ .alignment = .@"16" },
115474 .extra_temps = .{117096 .extra_temps = .{
115475 .{ .type = .usize, .kind = .{ .reg = .rdi } },117097 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115476 .{ .type = .usize, .kind = .{ .reg = .rsi } },117098 .unused,
115477 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },117099 .unused,
115478 .unused,117100 .unused,
115479 .unused,117101 .unused,
115480 .unused,117102 .unused,
...@@ -115484,60 +117106,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115484,60 +117106,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115484 .unused,117106 .unused,
115485 .unused,117107 .unused,
115486 },117108 },
115487 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },117109 .dst_temps = .{ .mem, .unused },
115488 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115489 .each = .{ .once = &.{117110 .each = .{ .once = &.{
115490 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },117111 .{ ._, ._, .mov, .tmp0d, .sia(-1, .dst0, .add_size), ._, ._ },
115491 .{ ._, ._, .mov, .tmp1d, .sa(.src0, .add_bit_size), ._, ._ },117112 .{ .@"0:", ._, .mov, .memi(.dst0b, .tmp0), .src0b, ._, ._ },
115492 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117113 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
117114 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
115493 } },117115 } },
115494 }, .{117116 }, .{
115495 .required_features = .{ .avx, .slow_incdec, null, null },117117 .required_features = .{ .avx2, null, null, null },
115496 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },117118 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
115497 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117119 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115498 .patterns = &.{117120 .patterns = &.{
115499 .{ .src = .{ .to_mem, .none, .none } },117121 .{ .src = .{ .mem, .none, .none } },
115500 },117122 .{ .src = .{ .to_sse, .none, .none } },
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,
115514 },117123 },
115515 .dst_temps = .{ .mem, .unused },117124 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
115516 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115517 .each = .{ .once = &.{117125 .each = .{ .once = &.{
115518 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117126 .{ ._, .vp_w, .broadcast, .dst0x, .src0w, ._, ._ },
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", ._, ._, ._ },
115526 } },117127 } },
115527 }, .{117128 }, .{
115528 .required_features = .{ .avx, null, null, null },117129 .required_features = .{ .avx, null, null, null },
115529 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },117130 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
115530 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117131 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115531 .patterns = &.{117132 .patterns = &.{
115532 .{ .src = .{ .to_mem, .none, .none } },117133 .{ .src = .{ .to_sse, .none, .none } },
115533 },117134 },
115534 .call_frame = .{ .alignment = .@"16" },
115535 .extra_temps = .{117135 .extra_temps = .{
115536 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115537 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117136 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115538 .{ .type = .i32, .kind = .{ .reg = .edi } },117137 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
115539 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117138 .unused,
115540 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117139 .unused,
117140 .unused,
115541 .unused,117141 .unused,
115542 .unused,117142 .unused,
115543 .unused,117143 .unused,
...@@ -115545,32 +117145,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115545,32 +117145,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115545 .unused,117145 .unused,
115546 .unused,117146 .unused,
115547 },117147 },
115548 .dst_temps = .{ .mem, .unused },117148 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
115549 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115550 .each = .{ .once = &.{117149 .each = .{ .once = &.{
115551 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117150 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
115552 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117151 .{ ._, .vp_b, .shuf, .dst0x, .src0x, .lea(.tmp0x), ._ },
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", ._, ._, ._ },
115559 } },117152 } },
115560 }, .{117153 }, .{
115561 .required_features = .{ .sse2, .slow_incdec, null, null },117154 .required_features = .{ .ssse3, null, null, null },
115562 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },117155 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
115563 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117156 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115564 .patterns = &.{117157 .patterns = &.{
115565 .{ .src = .{ .to_mem, .none, .none } },117158 .{ .src = .{ .to_mut_sse, .none, .none } },
115566 },117159 },
115567 .call_frame = .{ .alignment = .@"16" },
115568 .extra_temps = .{117160 .extra_temps = .{
115569 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
115570 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117161 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
115571 .{ .type = .i32, .kind = .{ .reg = .edi } },117162 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
115572 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117163 .unused,
115573 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117164 .unused,
117165 .unused,
115574 .unused,117166 .unused,
115575 .unused,117167 .unused,
115576 .unused,117168 .unused,
...@@ -115578,32 +117170,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115578,32 +117170,49 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115578 .unused,117170 .unused,
115579 .unused,117171 .unused,
115580 },117172 },
115581 .dst_temps = .{ .mem, .unused },117173 .dst_temps = .{ .{ .ref = .src0 }, .unused },
115582 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115583 .each = .{ .once = &.{117174 .each = .{ .once = &.{
115584 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117175 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
115585 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117176 .{ ._, .p_b, .shuf, .dst0x, .lea(.tmp0x), ._, ._ },
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", ._, ._, ._ },
115592 } },117177 } },
115593 }, .{117178 }, .{
115594 .required_features = .{ .sse2, null, null, null },117179 .required_features = .{ .sse2, null, null, null },
115595 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },117180 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .word } }, .any },
115596 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117181 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115597 .patterns = &.{117182 .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 } },
115599 },117209 },
115600 .call_frame = .{ .alignment = .@"16" },
115601 .extra_temps = .{117210 .extra_temps = .{
115602 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117211 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115603 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117212 .{ .type = .vector_16_u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115604 .{ .type = .i32, .kind = .{ .reg = .edi } },117213 .unused,
115605 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117214 .unused,
115606 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117215 .unused,
115607 .unused,117216 .unused,
115608 .unused,117217 .unused,
115609 .unused,117218 .unused,
...@@ -115612,31 +117221,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115612,31 +117221,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115612 .unused,117221 .unused,
115613 },117222 },
115614 .dst_temps = .{ .mem, .unused },117223 .dst_temps = .{ .mem, .unused },
115615 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115616 .each = .{ .once = &.{117224 .each = .{ .once = &.{
115617 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117225 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
115618 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117226 .{ ._, .vp_w, .broadcast, .tmp1y, .src0w, ._, ._ },
115619 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117227 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
115620 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117228 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
115621 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },117229 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115622 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115623 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115624 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115625 } },117230 } },
115626 }, .{117231 }, .{
115627 .required_features = .{ .sse, .slow_incdec, null, null },117232 .required_features = .{ .avx, null, null, null },
115628 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },117233 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .word } }, .any },
115629 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117234 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115630 .patterns = &.{117235 .patterns = &.{
115631 .{ .src = .{ .to_mem, .none, .none } },117236 .{ .src = .{ .to_sse, .none, .none } },
115632 },117237 },
115633 .call_frame = .{ .alignment = .@"16" },
115634 .extra_temps = .{117238 .extra_temps = .{
115635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117239 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115636 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117240 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
115637 .{ .type = .i32, .kind = .{ .reg = .edi } },117241 .{ .type = .vector_8_u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115638 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117242 .unused,
115639 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117243 .unused,
115640 .unused,117244 .unused,
115641 .unused,117245 .unused,
115642 .unused,117246 .unused,
...@@ -115645,31 +117249,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115645,31 +117249,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115645 .unused,117249 .unused,
115646 },117250 },
115647 .dst_temps = .{ .mem, .unused },117251 .dst_temps = .{ .mem, .unused },
115648 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115649 .each = .{ .once = &.{117252 .each = .{ .once = &.{
115650 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117253 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
115651 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117254 .{ ._, .vp_b, .shuf, .tmp2x, .src0x, .lea(.tmp0x), ._ },
115652 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117255 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115653 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117256 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp2x, ._, ._ },
115654 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },117257 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115655 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },117258 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115656 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115657 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115658 } },117259 } },
115659 }, .{117260 }, .{
115660 .required_features = .{ .sse, null, null, null },117261 .required_features = .{ .ssse3, null, null, null },
115661 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .byte, .is = .byte } }, .any, .any },117262 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .word } }, .any },
115662 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117263 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115663 .patterns = &.{117264 .patterns = &.{
115664 .{ .src = .{ .to_mem, .none, .none } },117265 .{ .src = .{ .to_mut_sse, .none, .none } },
115665 },117266 },
115666 .call_frame = .{ .alignment = .@"16" },
115667 .extra_temps = .{117267 .extra_temps = .{
115668 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117268 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115669 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117269 .{ .type = .vector_16_u8, .kind = .{ .pshufb_splat_mem = .{ .size = .word } } },
115670 .{ .type = .i32, .kind = .{ .reg = .edi } },117270 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
115671 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117271 .unused,
115672 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117272 .unused,
115673 .unused,117273 .unused,
115674 .unused,117274 .unused,
115675 .unused,117275 .unused,
...@@ -115678,31 +117278,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115678,31 +117278,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115678 .unused,117278 .unused,
115679 },117279 },
115680 .dst_temps = .{ .mem, .unused },117280 .dst_temps = .{ .mem, .unused },
115681 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115682 .each = .{ .once = &.{117281 .each = .{ .once = &.{
115683 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117282 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
115684 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117283 .{ ._, .p_b, .shuf, .src0x, .lea(.tmp0x), ._, ._ },
115685 .{ .@"0:", ._, .movsx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117284 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115686 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117285 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
115687 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },117286 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115688 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },117287 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115689 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115690 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115691 } },117288 } },
115692 }, .{117289 }, .{
115693 .required_features = .{ .avx, .slow_incdec, null, null },117290 .required_features = .{ .sse2, null, null, null },
115694 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },117291 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .word } }, .any },
115695 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117292 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115696 .patterns = &.{117293 .patterns = &.{
115697 .{ .src = .{ .to_mem, .none, .none } },117294 .{ .src = .{ .to_mut_sse, .none, .none } },
115698 },117295 },
115699 .call_frame = .{ .alignment = .@"16" },
115700 .extra_temps = .{117296 .extra_temps = .{
115701 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117297 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115702 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117298 .unused,
115703 .{ .type = .u32, .kind = .{ .reg = .edi } },117299 .unused,
115704 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117300 .unused,
115705 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117301 .unused,
115706 .unused,117302 .unused,
115707 .unused,117303 .unused,
115708 .unused,117304 .unused,
...@@ -115711,31 +117307,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115711,31 +117307,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115711 .unused,117307 .unused,
115712 },117308 },
115713 .dst_temps = .{ .mem, .unused },117309 .dst_temps = .{ .mem, .unused },
115714 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115715 .each = .{ .once = &.{117310 .each = .{ .once = &.{
115716 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117311 .{ ._, .p_w, .shufl, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
115717 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117312 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115718 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117313 .{ ._, .p_d, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
115719 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117314 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
115720 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },117315 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115721 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },117316 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115722 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115723 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115724 } },117317 } },
115725 }, .{117318 }, .{
115726 .required_features = .{ .avx, null, null, null },117319 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .word, .is = .word } }, .any },
115727 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },117320 .src_constraints = .{ .{ .int_or_float = .word }, .any, .any },
115728 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
115729 .patterns = &.{117321 .patterns = &.{
115730 .{ .src = .{ .to_mem, .none, .none } },117322 .{ .src = .{ .to_gpr, .none, .none } },
115731 },117323 },
115732 .call_frame = .{ .alignment = .@"16" },
115733 .extra_temps = .{117324 .extra_temps = .{
115734 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117325 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115735 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117326 .unused,
115736 .{ .type = .u32, .kind = .{ .reg = .edi } },117327 .unused,
115737 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117328 .unused,
115738 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117329 .unused,
115739 .unused,117330 .unused,
115740 .unused,117331 .unused,
115741 .unused,117332 .unused,
...@@ -115744,31 +117335,151 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115744,31 +117335,151 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115744 .unused,117335 .unused,
115745 },117336 },
115746 .dst_temps = .{ .mem, .unused },117337 .dst_temps = .{ .mem, .unused },
115747 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115748 .each = .{ .once = &.{117338 .each = .{ .once = &.{
115749 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117339 .{ ._, ._, .mov, .tmp0d, .sia(-2, .dst0, .add_size), ._, ._ },
115750 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117340 .{ .@"0:", ._, .mov, .memi(.dst0w, .tmp0), .src0w, ._, ._ },
115751 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117341 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
115752 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117342 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115753 .{ ._, .v_dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },
115754 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115755 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115756 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115757 } },117343 } },
115758 }, .{117344 }, .{
115759 .required_features = .{ .sse2, .slow_incdec, null, null },117345 .required_features = .{ .avx2, null, null, null },
115760 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },117346 .dst_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any },
115761 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117347 .src_constraints = .{ .{ .int = .dword }, .any, .any },
115762 .patterns = &.{117348 .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 } },
115764 },117476 },
115765 .call_frame = .{ .alignment = .@"16" },
115766 .extra_temps = .{117477 .extra_temps = .{
115767 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117478 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115768 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117479 .{ .type = .vector_8_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115769 .{ .type = .u32, .kind = .{ .reg = .edi } },117480 .unused,
115770 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117481 .unused,
115771 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117482 .unused,
115772 .unused,117483 .unused,
115773 .unused,117484 .unused,
115774 .unused,117485 .unused,
...@@ -115777,31 +117488,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115777,31 +117488,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115777 .unused,117488 .unused,
115778 },117489 },
115779 .dst_temps = .{ .mem, .unused },117490 .dst_temps = .{ .mem, .unused },
115780 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115781 .each = .{ .once = &.{117491 .each = .{ .once = &.{
115782 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117492 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
115783 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117493 .{ ._, .vp_d, .broadcast, .tmp1y, .src0d, ._, ._ },
115784 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117494 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
115785 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117495 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
115786 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },117496 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115787 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115788 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115789 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115790 } },117497 } },
115791 }, .{117498 }, .{
115792 .required_features = .{ .sse2, null, null, null },117499 .required_features = .{ .avx2, null, null, null },
115793 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },117500 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any },
115794 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117501 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115795 .patterns = &.{117502 .patterns = &.{
115796 .{ .src = .{ .to_mem, .none, .none } },117503 .{ .src = .{ .mem, .none, .none } },
117504 .{ .src = .{ .to_sse, .none, .none } },
115797 },117505 },
115798 .call_frame = .{ .alignment = .@"16" },
115799 .extra_temps = .{117506 .extra_temps = .{
115800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117507 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115801 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117508 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115802 .{ .type = .u32, .kind = .{ .reg = .edi } },117509 .unused,
115803 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117510 .unused,
115804 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117511 .unused,
115805 .unused,117512 .unused,
115806 .unused,117513 .unused,
115807 .unused,117514 .unused,
...@@ -115810,31 +117517,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115810,31 +117517,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115810 .unused,117517 .unused,
115811 },117518 },
115812 .dst_temps = .{ .mem, .unused },117519 .dst_temps = .{ .mem, .unused },
115813 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115814 .each = .{ .once = &.{117520 .each = .{ .once = &.{
115815 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117521 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
115816 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117522 .{ ._, .v_ss, .broadcast, .tmp1y, .src0d, ._, ._ },
115817 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117523 .{ .@"0:", .v_ps, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
115818 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117524 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
115819 .{ ._, ._dqa, .mov, .lea(.tmp1x), .tmp4x, ._, ._ },117525 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115820 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115821 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115822 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115823 } },117526 } },
115824 }, .{117527 }, .{
115825 .required_features = .{ .sse, .slow_incdec, null, null },117528 .required_features = .{ .avx, null, null, null },
115826 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },117529 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .dword } }, .any },
115827 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117530 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
115828 .patterns = &.{117531 .patterns = &.{
115829 .{ .src = .{ .to_mem, .none, .none } },117532 .{ .src = .{ .mem, .none, .none } },
115830 },117533 },
115831 .call_frame = .{ .alignment = .@"16" },
115832 .extra_temps = .{117534 .extra_temps = .{
115833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117535 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115834 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117536 .{ .type = .vector_4_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115835 .{ .type = .u32, .kind = .{ .reg = .edi } },117537 .unused,
115836 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117538 .unused,
115837 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117539 .unused,
115838 .unused,117540 .unused,
115839 .unused,117541 .unused,
115840 .unused,117542 .unused,
...@@ -115843,31 +117545,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115843,31 +117545,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115843 .unused,117545 .unused,
115844 },117546 },
115845 .dst_temps = .{ .mem, .unused },117547 .dst_temps = .{ .mem, .unused },
115846 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115847 .each = .{ .once = &.{117548 .each = .{ .once = &.{
115848 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117549 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115849 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117550 .{ ._, .v_ss, .broadcast, .tmp1x, .src0d, ._, ._ },
115850 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117551 .{ .@"0:", .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
115851 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117552 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115852 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },117553 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115853 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115854 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
115855 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115856 } },117554 } },
115857 }, .{117555 }, .{
115858 .required_features = .{ .sse, null, null, null },117556 .required_features = .{ .avx, null, null, null },
115859 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .byte, .is = .byte } }, .any, .any },117557 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
115860 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117558 .src_constraints = .{ .{ .int = .dword }, .any, .any },
115861 .patterns = &.{117559 .patterns = &.{
115862 .{ .src = .{ .to_mem, .none, .none } },117560 .{ .src = .{ .to_sse, .none, .none } },
115863 },117561 },
115864 .call_frame = .{ .alignment = .@"16" },
115865 .extra_temps = .{117562 .extra_temps = .{
115866 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117563 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115867 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },117564 .{ .type = .vector_4_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115868 .{ .type = .u32, .kind = .{ .reg = .edi } },117565 .unused,
115869 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117566 .unused,
115870 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117567 .unused,
115871 .unused,117568 .unused,
115872 .unused,117569 .unused,
115873 .unused,117570 .unused,
...@@ -115876,30 +117573,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115876,30 +117573,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115876 .unused,117573 .unused,
115877 },117574 },
115878 .dst_temps = .{ .mem, .unused },117575 .dst_temps = .{ .mem, .unused },
115879 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115880 .each = .{ .once = &.{117576 .each = .{ .once = &.{
115881 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117577 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115882 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },117578 .{ ._, .vp_d, .shuf, .tmp1x, .src0x, .ui(0b00_00_00_00), ._ },
115883 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },117579 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
115884 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },117580 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115885 .{ ._, ._ps, .mova, .lea(.tmp1x), .tmp4x, ._, ._ },117581 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115886 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 16), ._, ._ },
115887 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
115888 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
115889 } },117582 } },
115890 }, .{117583 }, .{
115891 .required_features = .{ .avx, null, null, null },117584 .required_features = .{ .avx, null, null, null },
115892 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },117585 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
115893 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117586 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115894 .patterns = &.{117587 .patterns = &.{
115895 .{ .src = .{ .to_mem, .none, .none } },117588 .{ .src = .{ .to_sse, .none, .none } },
115896 },117589 },
115897 .call_frame = .{ .alignment = .@"16" },
115898 .extra_temps = .{117590 .extra_temps = .{
115899 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117591 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115900 .{ .type = .i32, .kind = .{ .reg = .edi } },117592 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115901 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117593 .unused,
115902 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117594 .unused,
115903 .unused,117595 .unused,
115904 .unused,117596 .unused,
115905 .unused,117597 .unused,
...@@ -115909,28 +117601,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115909,28 +117601,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115909 .unused,117601 .unused,
115910 },117602 },
115911 .dst_temps = .{ .mem, .unused },117603 .dst_temps = .{ .mem, .unused },
115912 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115913 .each = .{ .once = &.{117604 .each = .{ .once = &.{
115914 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117605 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115915 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },117606 .{ ._, .v_ps, .shuf, .tmp1x, .tmp1x, .src0x, .ui(0b00_00_00_00) },
115916 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117607 .{ .@"0:", .v_ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
115917 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117608 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115918 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117609 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115919 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115920 } },117610 } },
115921 }, .{117611 }, .{
115922 .required_features = .{ .sse2, null, null, null },117612 .required_features = .{ .sse2, null, null, null },
115923 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },117613 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any },
115924 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117614 .src_constraints = .{ .{ .int = .dword }, .any, .any },
115925 .patterns = &.{117615 .patterns = &.{
115926 .{ .src = .{ .to_mem, .none, .none } },117616 .{ .src = .{ .to_sse, .none, .none } },
115927 },117617 },
115928 .call_frame = .{ .alignment = .@"16" },
115929 .extra_temps = .{117618 .extra_temps = .{
115930 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117619 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115931 .{ .type = .i32, .kind = .{ .reg = .edi } },117620 .{ .type = .vector_4_u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
115932 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117621 .unused,
115933 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117622 .unused,
115934 .unused,117623 .unused,
115935 .unused,117624 .unused,
115936 .unused,117625 .unused,
...@@ -115940,28 +117629,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115940,28 +117629,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115940 .unused,117629 .unused,
115941 },117630 },
115942 .dst_temps = .{ .mem, .unused },117631 .dst_temps = .{ .mem, .unused },
115943 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115944 .each = .{ .once = &.{117632 .each = .{ .once = &.{
115945 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117633 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115946 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },117634 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b00_00_00_00), ._ },
115947 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117635 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
115948 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117636 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115949 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117637 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115950 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115951 } },117638 } },
115952 }, .{117639 }, .{
115953 .required_features = .{ .sse, null, null, null },117640 .required_features = .{ .sse, null, null, null },
115954 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .word, .is = .word } }, .any, .any },117641 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
115955 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117642 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115956 .patterns = &.{117643 .patterns = &.{
115957 .{ .src = .{ .to_mem, .none, .none } },117644 .{ .src = .{ .mut_sse, .none, .none } },
115958 },117645 },
115959 .call_frame = .{ .alignment = .@"16" },
115960 .extra_temps = .{117646 .extra_temps = .{
115961 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117647 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115962 .{ .type = .i32, .kind = .{ .reg = .edi } },117648 .unused,
115963 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117649 .unused,
115964 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117650 .unused,
115965 .unused,117651 .unused,
115966 .unused,117652 .unused,
115967 .unused,117653 .unused,
...@@ -115971,28 +117657,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -115971,28 +117657,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
115971 .unused,117657 .unused,
115972 },117658 },
115973 .dst_temps = .{ .mem, .unused },117659 .dst_temps = .{ .mem, .unused },
115974 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
115975 .each = .{ .once = &.{117660 .each = .{ .once = &.{
115976 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117661 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
115977 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },117662 .{ ._, ._ps, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
115978 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117663 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
115979 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117664 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
115980 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117665 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
115981 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
115982 } },117666 } },
115983 }, .{117667 }, .{
115984 .required_features = .{ .avx, null, null, null },117668 .required_features = .{ .sse2, null, null, null },
115985 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },117669 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any },
115986 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117670 .src_constraints = .{ .{ .float = .dword }, .any, .any },
115987 .patterns = &.{117671 .patterns = &.{
115988 .{ .src = .{ .to_mem, .none, .none } },117672 .{ .src = .{ .sse, .none, .none } },
115989 },117673 },
115990 .call_frame = .{ .alignment = .@"16" },
115991 .extra_temps = .{117674 .extra_temps = .{
115992 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117675 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
115993 .{ .type = .u32, .kind = .{ .reg = .edi } },117676 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
115994 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117677 .unused,
115995 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117678 .unused,
115996 .unused,117679 .unused,
115997 .unused,117680 .unused,
115998 .unused,117681 .unused,
...@@ -116002,28 +117685,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116002,28 +117685,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116002 .unused,117685 .unused,
116003 },117686 },
116004 .dst_temps = .{ .mem, .unused },117687 .dst_temps = .{ .mem, .unused },
116005 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116006 .each = .{ .once = &.{117688 .each = .{ .once = &.{
116007 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117689 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116008 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },117690 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b00_00_00_00), ._ },
116009 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117691 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116010 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117692 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116011 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117693 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116012 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116013 } },117694 } },
116014 }, .{117695 }, .{
116015 .required_features = .{ .sse2, null, null, null },117696 .required_features = .{ .sse, null, null, null },
116016 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },117697 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .dword } }, .any },
116017 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117698 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
116018 .patterns = &.{117699 .patterns = &.{
116019 .{ .src = .{ .to_mem, .none, .none } },117700 .{ .src = .{ .to_mut_sse, .none, .none } },
116020 },117701 },
116021 .call_frame = .{ .alignment = .@"16" },
116022 .extra_temps = .{117702 .extra_temps = .{
116023 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117703 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116024 .{ .type = .u32, .kind = .{ .reg = .edi } },117704 .unused,
116025 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117705 .unused,
116026 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117706 .unused,
116027 .unused,117707 .unused,
116028 .unused,117708 .unused,
116029 .unused,117709 .unused,
...@@ -116033,28 +117713,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116033,28 +117713,24 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116033 .unused,117713 .unused,
116034 },117714 },
116035 .dst_temps = .{ .mem, .unused },117715 .dst_temps = .{ .mem, .unused },
116036 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116037 .each = .{ .once = &.{117716 .each = .{ .once = &.{
116038 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117717 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116039 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },117718 .{ ._, ._ps, .shuf, .src0x, .src0x, .ui(0b00_00_00_00), ._ },
116040 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117719 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116041 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117720 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116042 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117721 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116043 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116044 } },117722 } },
116045 }, .{117723 }, .{
116046 .required_features = .{ .sse, null, null, null },117724 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .dword, .is = .dword } }, .any },
116047 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .word, .is = .word } }, .any, .any },117725 .src_constraints = .{ .{ .int_or_float = .dword }, .any, .any },
116048 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },
116049 .patterns = &.{117726 .patterns = &.{
116050 .{ .src = .{ .to_mem, .none, .none } },117727 .{ .src = .{ .to_gpr, .none, .none } },
116051 },117728 },
116052 .call_frame = .{ .alignment = .@"16" },
116053 .extra_temps = .{117729 .extra_temps = .{
116054 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117730 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116055 .{ .type = .u32, .kind = .{ .reg = .edi } },117731 .unused,
116056 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117732 .unused,
116057 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117733 .unused,
116058 .unused,117734 .unused,
116059 .unused,117735 .unused,
116060 .unused,117736 .unused,
...@@ -116064,28 +117740,152 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116064,28 +117740,152 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116064 .unused,117740 .unused,
116065 },117741 },
116066 .dst_temps = .{ .mem, .unused },117742 .dst_temps = .{ .mem, .unused },
116067 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116068 .each = .{ .once = &.{117743 .each = .{ .once = &.{
116069 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117744 .{ ._, ._, .mov, .tmp0d, .sia(-4, .dst0, .add_size), ._, ._ },
116070 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },117745 .{ .@"0:", ._, .mov, .memi(.dst0d, .tmp0), .src0d, ._, ._ },
116071 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117746 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
116072 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"8", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117747 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116073 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },117748 } },
116074 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },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, ._, ._ },
116075 } },117772 } },
116076 }, .{117773 }, .{
116077 .required_features = .{ .avx, null, null, null },117774 .required_features = .{ .avx, null, null, null },
116078 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },117775 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .qword } }, .any },
116079 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117776 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116080 .patterns = &.{117777 .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 } },
116082 },117883 },
116083 .call_frame = .{ .alignment = .@"16" },
116084 .extra_temps = .{117884 .extra_temps = .{
116085 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116086 .{ .type = .i32, .kind = .{ .reg = .edi } },117886 .{ .type = .vector_4_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116087 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117887 .unused,
116088 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117888 .unused,
116089 .unused,117889 .unused,
116090 .unused,117890 .unused,
116091 .unused,117891 .unused,
...@@ -116095,28 +117895,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116095,28 +117895,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116095 .unused,117895 .unused,
116096 },117896 },
116097 .dst_temps = .{ .mem, .unused },117897 .dst_temps = .{ .mem, .unused },
116098 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116099 .each = .{ .once = &.{117898 .each = .{ .once = &.{
116100 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117899 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116101 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },117900 .{ ._, .vp_q, .broadcast, .tmp1y, .src0q, ._, ._ },
116102 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117901 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116103 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117902 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116104 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },117903 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116105 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116106 } },117904 } },
116107 }, .{117905 }, .{
116108 .required_features = .{ .sse2, null, null, null },117906 .required_features = .{ .avx2, null, null, null },
116109 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },117907 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any },
116110 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117908 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116111 .patterns = &.{117909 .patterns = &.{
116112 .{ .src = .{ .to_mem, .none, .none } },117910 .{ .src = .{ .mem, .none, .none } },
117911 .{ .src = .{ .to_sse, .none, .none } },
116113 },117912 },
116114 .call_frame = .{ .alignment = .@"16" },
116115 .extra_temps = .{117913 .extra_temps = .{
116116 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117914 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116117 .{ .type = .i32, .kind = .{ .reg = .edi } },117915 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116118 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117916 .unused,
116119 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117917 .unused,
116120 .unused,117918 .unused,
116121 .unused,117919 .unused,
116122 .unused,117920 .unused,
...@@ -116126,28 +117924,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116126,28 +117924,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116126 .unused,117924 .unused,
116127 },117925 },
116128 .dst_temps = .{ .mem, .unused },117926 .dst_temps = .{ .mem, .unused },
116129 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116130 .each = .{ .once = &.{117927 .each = .{ .once = &.{
116131 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117928 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116132 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },117929 .{ ._, .v_sd, .broadcast, .tmp1y, .src0q, ._, ._ },
116133 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117930 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116134 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117931 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116135 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },117932 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116136 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116137 } },117933 } },
116138 }, .{117934 }, .{
116139 .required_features = .{ .sse, null, null, null },117935 .required_features = .{ .avx, null, null, null },
116140 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },117936 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .qword } }, .any },
116141 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117937 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116142 .patterns = &.{117938 .patterns = &.{
116143 .{ .src = .{ .to_mem, .none, .none } },117939 .{ .src = .{ .mem, .none, .none } },
117940 .{ .src = .{ .to_sse, .none, .none } },
116144 },117941 },
116145 .call_frame = .{ .alignment = .@"16" },
116146 .extra_temps = .{117942 .extra_temps = .{
116147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117943 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116148 .{ .type = .i32, .kind = .{ .reg = .edi } },117944 .{ .type = .vector_2_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116149 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatsitf" } } },117945 .unused,
116150 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117946 .unused,
116151 .unused,117947 .unused,
116152 .unused,117948 .unused,
116153 .unused,117949 .unused,
...@@ -116157,28 +117953,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116157,28 +117953,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116157 .unused,117953 .unused,
116158 },117954 },
116159 .dst_temps = .{ .mem, .unused },117955 .dst_temps = .{ .mem, .unused },
116160 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116161 .each = .{ .once = &.{117956 .each = .{ .once = &.{
116162 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117957 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116163 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },117958 .{ ._, .v_, .movddup, .tmp1x, .src0q, ._, ._ },
116164 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117959 .{ .@"0:", .v_pd, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116165 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117960 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116166 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },117961 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116167 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116168 } },117962 } },
116169 }, .{117963 }, .{
116170 .required_features = .{ .avx, null, null, null },117964 .required_features = .{ .sse3, null, null, null },
116171 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },117965 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .qword } }, .any },
116172 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117966 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116173 .patterns = &.{117967 .patterns = &.{
116174 .{ .src = .{ .to_mem, .none, .none } },117968 .{ .src = .{ .mem, .none, .none } },
117969 .{ .src = .{ .to_sse, .none, .none } },
116175 },117970 },
116176 .call_frame = .{ .alignment = .@"16" },
116177 .extra_temps = .{117971 .extra_temps = .{
116178 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },117972 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116179 .{ .type = .u32, .kind = .{ .reg = .edi } },117973 .{ .type = .vector_2_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116180 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },117974 .unused,
116181 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },117975 .unused,
116182 .unused,117976 .unused,
116183 .unused,117977 .unused,
116184 .unused,117978 .unused,
...@@ -116188,28 +117982,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116188,28 +117982,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116188 .unused,117982 .unused,
116189 },117983 },
116190 .dst_temps = .{ .mem, .unused },117984 .dst_temps = .{ .mem, .unused },
116191 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116192 .each = .{ .once = &.{117985 .each = .{ .once = &.{
116193 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },117986 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116194 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },117987 .{ ._, ._, .movddup, .tmp1x, .src0q, ._, ._ },
116195 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },117988 .{ .@"0:", ._pd, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116196 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },117989 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116197 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },117990 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116198 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116199 } },117991 } },
116200 }, .{117992 }, .{
116201 .required_features = .{ .sse2, null, null, null },117993 .required_features = .{ .sse2, null, null, null },
116202 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },117994 .dst_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .qword } }, .any },
116203 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },117995 .src_constraints = .{ .{ .int = .qword }, .any, .any },
116204 .patterns = &.{117996 .patterns = &.{
116205 .{ .src = .{ .to_mem, .none, .none } },117997 .{ .src = .{ .to_sse, .none, .none } },
116206 },117998 },
116207 .call_frame = .{ .alignment = .@"16" },
116208 .extra_temps = .{117999 .extra_temps = .{
116209 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118000 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116210 .{ .type = .u32, .kind = .{ .reg = .edi } },118001 .{ .type = .vector_2_u64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116211 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },118002 .unused,
116212 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118003 .unused,
116213 .unused,118004 .unused,
116214 .unused,118005 .unused,
116215 .unused,118006 .unused,
...@@ -116219,28 +118010,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116219,28 +118010,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116219 .unused,118010 .unused,
116220 },118011 },
116221 .dst_temps = .{ .mem, .unused },118012 .dst_temps = .{ .mem, .unused },
116222 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116223 .each = .{ .once = &.{118013 .each = .{ .once = &.{
116224 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118014 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116225 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118015 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b01_00_01_00), ._ },
116226 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118016 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116227 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118017 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116228 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118018 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116229 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116230 } },118019 } },
116231 }, .{118020 }, .{
116232 .required_features = .{ .sse, null, null, null },118021 .required_features = .{ .sse2, null, null, null },
116233 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },118022 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
116234 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118023 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116235 .patterns = &.{118024 .patterns = &.{
116236 .{ .src = .{ .to_mem, .none, .none } },118025 .{ .src = .{ .mut_sse, .none, .none } },
116237 },118026 },
116238 .call_frame = .{ .alignment = .@"16" },
116239 .extra_temps = .{118027 .extra_temps = .{
116240 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118028 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116241 .{ .type = .u32, .kind = .{ .reg = .edi } },118029 .unused,
116242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunsitf" } } },118030 .unused,
116243 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118031 .unused,
116244 .unused,118032 .unused,
116245 .unused,118033 .unused,
116246 .unused,118034 .unused,
...@@ -116250,28 +118038,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116250,28 +118038,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116250 .unused,118038 .unused,
116251 },118039 },
116252 .dst_temps = .{ .mem, .unused },118040 .dst_temps = .{ .mem, .unused },
116253 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116254 .each = .{ .once = &.{118041 .each = .{ .once = &.{
116255 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118042 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116256 .{ .@"0:", ._, .mov, .tmp1d, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },118043 .{ ._, ._pd, .shuf, .src0x, .src0x, .ui(0b0_0), ._ },
116257 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118044 .{ .@"0:", ._pd, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116258 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"4", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118045 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116259 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },118046 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116260 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116261 } },118047 } },
116262 }, .{118048 }, .{
116263 .required_features = .{ .@"64bit", .avx, null, null },118049 .required_features = .{ .sse2, null, null, null },
116264 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },118050 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
116265 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118051 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116266 .patterns = &.{118052 .patterns = &.{
116267 .{ .src = .{ .to_mem, .none, .none } },118053 .{ .src = .{ .sse, .none, .none } },
116268 },118054 },
116269 .call_frame = .{ .alignment = .@"16" },
116270 .extra_temps = .{118055 .extra_temps = .{
116271 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118056 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116272 .{ .type = .i64, .kind = .{ .reg = .rdi } },118057 .{ .type = .vector_2_u64, .kind = .{ .rc = .sse } },
116273 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },118058 .unused,
116274 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118059 .unused,
116275 .unused,118060 .unused,
116276 .unused,118061 .unused,
116277 .unused,118062 .unused,
...@@ -116281,28 +118066,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116281,28 +118066,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116281 .unused,118066 .unused,
116282 },118067 },
116283 .dst_temps = .{ .mem, .unused },118068 .dst_temps = .{ .mem, .unused },
116284 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116285 .each = .{ .once = &.{118069 .each = .{ .once = &.{
116286 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118070 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116287 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118071 .{ ._, .p_d, .shuf, .tmp1x, .src0x, .ui(0b01_00_01_00), ._ },
116288 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118072 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116289 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118073 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116290 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118074 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116291 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116292 } },118075 } },
116293 }, .{118076 }, .{
116294 .required_features = .{ .@"64bit", .sse2, null, null },118077 .required_features = .{ .sse2, null, null, null },
116295 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },118078 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any },
116296 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118079 .src_constraints = .{ .{ .float = .qword }, .any, .any },
116297 .patterns = &.{118080 .patterns = &.{
116298 .{ .src = .{ .to_mem, .none, .none } },118081 .{ .src = .{ .to_mut_sse, .none, .none } },
116299 },118082 },
116300 .call_frame = .{ .alignment = .@"16" },
116301 .extra_temps = .{118083 .extra_temps = .{
116302 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118084 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116303 .{ .type = .i64, .kind = .{ .reg = .rdi } },118085 .unused,
116304 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },118086 .unused,
116305 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118087 .unused,
116306 .unused,118088 .unused,
116307 .unused,118089 .unused,
116308 .unused,118090 .unused,
...@@ -116312,28 +118094,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116312,28 +118094,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116312 .unused,118094 .unused,
116313 },118095 },
116314 .dst_temps = .{ .mem, .unused },118096 .dst_temps = .{ .mem, .unused },
116315 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116316 .each = .{ .once = &.{118097 .each = .{ .once = &.{
116317 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118098 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116318 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118099 .{ ._, ._pd, .shuf, .src0x, .src0x, .ui(0b0_0), ._ },
116319 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118100 .{ .@"0:", ._pd, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116320 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118101 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116321 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118102 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116322 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116323 } },118103 } },
116324 }, .{118104 }, .{
116325 .required_features = .{ .@"64bit", .sse, null, null },118105 .required_features = .{ .sse, null, null, null },
116326 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .qword, .is = .qword } }, .any, .any },118106 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .qword } }, .any },
116327 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118107 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116328 .patterns = &.{118108 .patterns = &.{
116329 .{ .src = .{ .to_mem, .none, .none } },118109 .{ .src = .{ .to_mut_sse, .none, .none } },
116330 },118110 },
116331 .call_frame = .{ .alignment = .@"16" },
116332 .extra_temps = .{118111 .extra_temps = .{
116333 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118112 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116334 .{ .type = .i64, .kind = .{ .reg = .rdi } },118113 .unused,
116335 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatditf" } } },118114 .unused,
116336 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118115 .unused,
116337 .unused,118116 .unused,
116338 .unused,118117 .unused,
116339 .unused,118118 .unused,
...@@ -116343,28 +118122,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116343,28 +118122,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116343 .unused,118122 .unused,
116344 },118123 },
116345 .dst_temps = .{ .mem, .unused },118124 .dst_temps = .{ .mem, .unused },
116346 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116347 .each = .{ .once = &.{118125 .each = .{ .once = &.{
116348 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118126 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116349 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118127 .{ ._, ._ps, .shuf, .src0x, .src0x, .ui(0b01_00_01_00), ._ },
116350 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118128 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116351 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118129 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116352 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118130 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116353 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116354 } },118131 } },
116355 }, .{118132 }, .{
116356 .required_features = .{ .@"64bit", .avx, null, null },118133 .required_features = .{ .@"64bit", null, null, null },
116357 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },118134 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .qword, .is = .qword } }, .any },
116358 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118135 .src_constraints = .{ .{ .int_or_float = .qword }, .any, .any },
116359 .patterns = &.{118136 .patterns = &.{
116360 .{ .src = .{ .to_mem, .none, .none } },118137 .{ .src = .{ .to_gpr, .none, .none } },
116361 },118138 },
116362 .call_frame = .{ .alignment = .@"16" },
116363 .extra_temps = .{118139 .extra_temps = .{
116364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118140 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116365 .{ .type = .u64, .kind = .{ .reg = .rdi } },118141 .unused,
116366 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },118142 .unused,
116367 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118143 .unused,
116368 .unused,118144 .unused,
116369 .unused,118145 .unused,
116370 .unused,118146 .unused,
...@@ -116374,28 +118150,78 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116374,28 +118150,78 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116374 .unused,118150 .unused,
116375 },118151 },
116376 .dst_temps = .{ .mem, .unused },118152 .dst_temps = .{ .mem, .unused },
116377 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116378 .each = .{ .once = &.{118153 .each = .{ .once = &.{
116379 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118154 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
116380 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118155 .{ .@"0:", ._, .mov, .memi(.dst0q, .tmp0), .src0q, ._, ._ },
116381 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118156 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
116382 .{ ._, .v_dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118157 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116383 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
116384 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116385 } },118158 } },
116386 }, .{118159 }, .{
116387 .required_features = .{ .@"64bit", .sse2, null, null },118160 .required_features = .{ .sse, null, null, null },
116388 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },118161 .dst_constraints = .{ .{ .scalar = .{ .of = .xword, .is = .xword } }, .any },
116389 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118162 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116390 .patterns = &.{118163 .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 } },
116392 },118219 },
116393 .call_frame = .{ .alignment = .@"16" },
116394 .extra_temps = .{118220 .extra_temps = .{
116395 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118221 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116396 .{ .type = .u64, .kind = .{ .reg = .rdi } },118222 .{ .type = .vector_2_u128, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116397 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },118223 .unused,
116398 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118224 .unused,
116399 .unused,118225 .unused,
116400 .unused,118226 .unused,
116401 .unused,118227 .unused,
...@@ -116405,28 +118231,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116405,28 +118231,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116405 .unused,118231 .unused,
116406 },118232 },
116407 .dst_temps = .{ .mem, .unused },118233 .dst_temps = .{ .mem, .unused },
116408 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116409 .each = .{ .once = &.{118234 .each = .{ .once = &.{
116410 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118235 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116411 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118236 .{ ._, .v_i128, .broadcast, .tmp1y, .src0x, ._, ._ },
116412 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118237 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116413 .{ ._, ._dqa, .mov, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118238 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116414 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118239 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116415 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116416 } },118240 } },
116417 }, .{118241 }, .{
116418 .required_features = .{ .@"64bit", .sse, null, null },118242 .required_features = .{ .avx2, null, null, null },
116419 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any },118243 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
116420 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118244 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116421 .patterns = &.{118245 .patterns = &.{
116422 .{ .src = .{ .to_mem, .none, .none } },118246 .{ .src = .{ .to_sse, .none, .none } },
116423 },118247 },
116424 .call_frame = .{ .alignment = .@"16" },
116425 .extra_temps = .{118248 .extra_temps = .{
116426 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118249 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116427 .{ .type = .u64, .kind = .{ .reg = .rdi } },118250 .{ .type = .vector_2_u128, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116428 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatunditf" } } },118251 .unused,
116429 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118252 .unused,
116430 .unused,118253 .unused,
116431 .unused,118254 .unused,
116432 .unused,118255 .unused,
...@@ -116436,29 +118259,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116436,29 +118259,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116436 .unused,118259 .unused,
116437 },118260 },
116438 .dst_temps = .{ .mem, .unused },118261 .dst_temps = .{ .mem, .unused },
116439 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116440 .each = .{ .once = &.{118262 .each = .{ .once = &.{
116441 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118263 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116442 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118264 .{ ._, .v_i128, .insert, .tmp1y, .src0y, .src0x, .ui(1) },
116443 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },118265 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116444 .{ ._, ._ps, .mova, .memsia(.dst0x, .@"2", .tmp0, .add_unaligned_size), .tmp3x, ._, ._ },118266 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116445 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },118267 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116446 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116447 } },118268 } },
116448 }, .{118269 }, .{
116449 .required_features = .{ .@"64bit", .avx, null, null },118270 .required_features = .{ .avx, null, null, null },
116450 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },118271 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
116451 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118272 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116452 .patterns = &.{118273 .patterns = &.{
116453 .{ .src = .{ .to_mem, .none, .none } },118274 .{ .src = .{ .mem, .none, .none } },
116454 },118275 },
116455 .call_frame = .{ .alignment = .@"16" },
116456 .extra_temps = .{118276 .extra_temps = .{
116457 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118277 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116458 .{ .type = .u64, .kind = .{ .reg = .rdi } },118278 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116459 .{ .type = .i64, .kind = .{ .reg = .rsi } },118279 .unused,
116460 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },118280 .unused,
116461 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118281 .unused,
116462 .unused,118282 .unused,
116463 .unused,118283 .unused,
116464 .unused,118284 .unused,
...@@ -116467,30 +118287,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116467,30 +118287,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116467 .unused,118287 .unused,
116468 },118288 },
116469 .dst_temps = .{ .mem, .unused },118289 .dst_temps = .{ .mem, .unused },
116470 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116471 .each = .{ .once = &.{118290 .each = .{ .once = &.{
116472 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118291 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116473 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118292 .{ ._, .v_f128, .broadcast, .tmp1y, .src0x, ._, ._ },
116474 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },118293 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116475 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },118294 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116476 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },118295 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116477 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116478 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116479 } },118296 } },
116480 }, .{118297 }, .{
116481 .required_features = .{ .@"64bit", .sse2, null, null },118298 .required_features = .{ .avx, null, null, null },
116482 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },118299 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .yword, .is = .xword } }, .any },
116483 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118300 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116484 .patterns = &.{118301 .patterns = &.{
116485 .{ .src = .{ .to_mem, .none, .none } },118302 .{ .src = .{ .to_sse, .none, .none } },
116486 },118303 },
116487 .call_frame = .{ .alignment = .@"16" },
116488 .extra_temps = .{118304 .extra_temps = .{
116489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118305 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116490 .{ .type = .u64, .kind = .{ .reg = .rdi } },118306 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116491 .{ .type = .i64, .kind = .{ .reg = .rsi } },118307 .unused,
116492 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },118308 .unused,
116493 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118309 .unused,
116494 .unused,118310 .unused,
116495 .unused,118311 .unused,
116496 .unused,118312 .unused,
...@@ -116499,30 +118315,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116499,30 +118315,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116499 .unused,118315 .unused,
116500 },118316 },
116501 .dst_temps = .{ .mem, .unused },118317 .dst_temps = .{ .mem, .unused },
116502 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116503 .each = .{ .once = &.{118318 .each = .{ .once = &.{
116504 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118319 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116505 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118320 .{ ._, .v_f128, .insert, .tmp1y, .src0y, .src0x, .ui(1) },
116506 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },118321 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116507 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },118322 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116508 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },118323 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116509 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116511 } },118324 } },
116512 }, .{118325 }, .{
116513 .required_features = .{ .@"64bit", .sse, null, null },118326 .required_features = .{ .avx, null, null, null },
116514 .src_constraints = .{ .{ .multiple_scalar_signed_int = .{ .of = .xword, .is = .xword } }, .any, .any },118327 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .xword } }, .any },
116515 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118328 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116516 .patterns = &.{118329 .patterns = &.{
116517 .{ .src = .{ .to_mem, .none, .none } },118330 .{ .src = .{ .to_sse, .none, .none } },
116518 },118331 },
116519 .call_frame = .{ .alignment = .@"16" },
116520 .extra_temps = .{118332 .extra_temps = .{
116521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118333 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116522 .{ .type = .u64, .kind = .{ .reg = .rdi } },118334 .unused,
116523 .{ .type = .i64, .kind = .{ .reg = .rsi } },118335 .unused,
116524 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floattitf" } } },118336 .unused,
116525 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118337 .unused,
116526 .unused,118338 .unused,
116527 .unused,118339 .unused,
116528 .unused,118340 .unused,
...@@ -116531,30 +118343,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116531,30 +118343,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116531 .unused,118343 .unused,
116532 },118344 },
116533 .dst_temps = .{ .mem, .unused },118345 .dst_temps = .{ .mem, .unused },
116534 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116535 .each = .{ .once = &.{118346 .each = .{ .once = &.{
116536 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118347 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116537 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118348 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116538 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },118349 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116539 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },118350 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116540 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116541 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116542 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116543 } },118351 } },
116544 }, .{118352 }, .{
116545 .required_features = .{ .@"64bit", .avx, null, null },118353 .required_features = .{ .sse2, null, null, null },
116546 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },118354 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .xword } }, .any },
116547 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118355 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116548 .patterns = &.{118356 .patterns = &.{
116549 .{ .src = .{ .to_mem, .none, .none } },118357 .{ .src = .{ .to_sse, .none, .none } },
116550 },118358 },
116551 .call_frame = .{ .alignment = .@"16" },
116552 .extra_temps = .{118359 .extra_temps = .{
116553 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118360 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116554 .{ .type = .u64, .kind = .{ .reg = .rdi } },118361 .unused,
116555 .{ .type = .u64, .kind = .{ .reg = .rsi } },118362 .unused,
116556 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },118363 .unused,
116557 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118364 .unused,
116558 .unused,118365 .unused,
116559 .unused,118366 .unused,
116560 .unused,118367 .unused,
...@@ -116563,30 +118370,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116563,30 +118370,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116563 .unused,118370 .unused,
116564 },118371 },
116565 .dst_temps = .{ .mem, .unused },118372 .dst_temps = .{ .mem, .unused },
116566 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116567 .each = .{ .once = &.{118373 .each = .{ .once = &.{
116568 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118374 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116569 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118375 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116570 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },118376 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116571 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },118377 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116572 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116573 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116574 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116575 } },118378 } },
116576 }, .{118379 }, .{
116577 .required_features = .{ .@"64bit", .sse2, null, null },118380 .required_features = .{ .sse, null, null, null },
116578 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },118381 .dst_constraints = .{ .{ .multiple_scalar = .{ .of = .xword, .is = .xword } }, .any },
116579 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118382 .src_constraints = .{ .{ .int_or_float = .xword }, .any, .any },
116580 .patterns = &.{118383 .patterns = &.{
116581 .{ .src = .{ .to_mem, .none, .none } },118384 .{ .src = .{ .to_sse, .none, .none } },
116582 },118385 },
116583 .call_frame = .{ .alignment = .@"16" },
116584 .extra_temps = .{118386 .extra_temps = .{
116585 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118387 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116586 .{ .type = .u64, .kind = .{ .reg = .rdi } },118388 .unused,
116587 .{ .type = .u64, .kind = .{ .reg = .rsi } },118389 .unused,
116588 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },118390 .unused,
116589 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118391 .unused,
116590 .unused,118392 .unused,
116591 .unused,118393 .unused,
116592 .unused,118394 .unused,
...@@ -116595,30 +118397,79 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116595,30 +118397,79 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116595 .unused,118397 .unused,
116596 },118398 },
116597 .dst_temps = .{ .mem, .unused },118399 .dst_temps = .{ .mem, .unused },
116598 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116599 .each = .{ .once = &.{118400 .each = .{ .once = &.{
116600 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118401 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116601 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118402 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .src0x, ._, ._ },
116602 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },118403 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116603 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },118404 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116604 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },
116605 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116606 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116607 } },118405 } },
116608 }, .{118406 }, .{
116609 .required_features = .{ .@"64bit", .sse, null, null },118407 .required_features = .{ .@"64bit", .sse, null, null },
116610 .src_constraints = .{ .{ .multiple_scalar_unsigned_int = .{ .of = .xword, .is = .xword } }, .any, .any },118408 .dst_constraints = .{ .{ .scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116611 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .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 },
116612 .patterns = &.{118464 .patterns = &.{
116613 .{ .src = .{ .to_mem, .none, .none } },118465 .{ .src = .{ .to_mem, .none, .none } },
116614 },118466 },
116615 .call_frame = .{ .alignment = .@"16" },
116616 .extra_temps = .{118467 .extra_temps = .{
116617 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118468 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116618 .{ .type = .u64, .kind = .{ .reg = .rdi } },118469 .{ .type = .vector_2_u128, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116619 .{ .type = .u64, .kind = .{ .reg = .rsi } },118470 .unused,
116620 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuntitf" } } },118471 .unused,
116621 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118472 .unused,
116622 .unused,118473 .unused,
116623 .unused,118474 .unused,
116624 .unused,118475 .unused,
...@@ -116627,31 +118478,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116627,31 +118478,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116627 .unused,118478 .unused,
116628 },118479 },
116629 .dst_temps = .{ .mem, .unused },118480 .dst_temps = .{ .mem, .unused },
116630 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116631 .each = .{ .once = &.{118481 .each = .{ .once = &.{
116632 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },118482 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116633 .{ .@"0:", ._, .mov, .tmp1q, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },118483 .{ ._, .v_i128, .broadcast, .tmp1y, .src0x, ._, ._ },
116634 .{ ._, ._, .mov, .tmp2q, .memiad(.src0q, .tmp0, .add_unaligned_size, 8), ._, ._ },118484 .{ .@"0:", .v_dqa, .mov, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116635 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },118485 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116636 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp4x, ._, ._ },118486 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
116637 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
116638 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116639 } },118487 } },
116640 }, .{118488 }, .{
116641 .required_features = .{ .@"64bit", .avx, null, null },118489 .required_features = .{ .@"64bit", .avx, null, null },
116642 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },118490 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .tbyte } }, .any },
116643 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118491 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116644 .patterns = &.{118492 .patterns = &.{
116645 .{ .src = .{ .to_mem, .none, .none } },118493 .{ .src = .{ .to_mem, .none, .none } },
116646 },118494 },
116647 .call_frame = .{ .alignment = .@"16" },
116648 .extra_temps = .{118495 .extra_temps = .{
116649 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },118496 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116650 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118497 .{ .type = .vector_4_f64, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .sse } } },
116651 .{ .type = .usize, .kind = .{ .reg = .rdi } },118498 .unused,
116652 .{ .type = .usize, .kind = .{ .reg = .rsi } },118499 .unused,
116653 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },118500 .unused,
116654 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118501 .unused,
116655 .unused,118502 .unused,
116656 .unused,118503 .unused,
116657 .unused,118504 .unused,
...@@ -116659,33 +118506,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116659,33 +118506,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116659 .unused,118506 .unused,
116660 },118507 },
116661 .dst_temps = .{ .mem, .unused },118508 .dst_temps = .{ .mem, .unused },
116662 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116663 .each = .{ .once = &.{118509 .each = .{ .once = &.{
116664 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },118510 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
116665 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },118511 .{ ._, .v_f128, .broadcast, .tmp1y, .src0x, ._, ._ },
116666 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },118512 .{ .@"0:", .v_pd, .mova, .memi(.dst0y, .tmp0), .tmp1y, ._, ._ },
116667 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },118513 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
116668 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },118514 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
116673 } },118515 } },
116674 }, .{118516 }, .{
116675 .required_features = .{ .@"64bit", .sse2, null, null },118517 .required_features = .{ .@"64bit", .avx, null, null },
116676 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },118518 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116677 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118519 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116678 .patterns = &.{118520 .patterns = &.{
116679 .{ .src = .{ .to_mem, .none, .none } },118521 .{ .src = .{ .to_mem, .none, .none } },
116680 },118522 },
116681 .call_frame = .{ .alignment = .@"16" },
116682 .extra_temps = .{118523 .extra_temps = .{
116683 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },118524 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116684 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118525 .{ .type = .f80, .kind = .{ .rc = .sse } },
116685 .{ .type = .usize, .kind = .{ .reg = .rdi } },118526 .unused,
116686 .{ .type = .usize, .kind = .{ .reg = .rsi } },118527 .unused,
116687 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },118528 .unused,
116688 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118529 .unused,
116689 .unused,118530 .unused,
116690 .unused,118531 .unused,
116691 .unused,118532 .unused,
...@@ -116693,33 +118534,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116693,33 +118534,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116693 .unused,118534 .unused,
116694 },118535 },
116695 .dst_temps = .{ .mem, .unused },118536 .dst_temps = .{ .mem, .unused },
116696 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116697 .each = .{ .once = &.{118537 .each = .{ .once = &.{
116698 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },118538 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116699 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },118539 .{ ._, .v_dqa, .mov, .tmp1x, .mem(.src0x), ._, ._ },
116700 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },118540 .{ .@"0:", .v_dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116701 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },118541 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116702 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },118542 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
116707 } },118543 } },
116708 }, .{118544 }, .{
116709 .required_features = .{ .@"64bit", .sse, null, null },118545 .required_features = .{ .@"64bit", .sse2, null, null },
116710 .src_constraints = .{ .{ .scalar_remainder_signed_int = .{ .of = .dword, .is = .dword } }, .any, .any },118546 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116711 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118547 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116712 .patterns = &.{118548 .patterns = &.{
116713 .{ .src = .{ .to_mem, .none, .none } },118549 .{ .src = .{ .to_mem, .none, .none } },
116714 },118550 },
116715 .call_frame = .{ .alignment = .@"16" },
116716 .extra_temps = .{118551 .extra_temps = .{
116717 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },118552 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116718 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118553 .{ .type = .f80, .kind = .{ .rc = .sse } },
116719 .{ .type = .usize, .kind = .{ .reg = .rdi } },118554 .unused,
116720 .{ .type = .usize, .kind = .{ .reg = .rsi } },118555 .unused,
116721 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floateitf" } } },118556 .unused,
116722 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118557 .unused,
116723 .unused,118558 .unused,
116724 .unused,118559 .unused,
116725 .unused,118560 .unused,
...@@ -116727,33 +118562,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116727,33 +118562,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116727 .unused,118562 .unused,
116728 },118563 },
116729 .dst_temps = .{ .mem, .unused },118564 .dst_temps = .{ .mem, .unused },
116730 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116731 .each = .{ .once = &.{118565 .each = .{ .once = &.{
116732 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },118566 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116733 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },118567 .{ ._, ._dqa, .mov, .tmp1x, .mem(.src0x), ._, ._ },
116734 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },118568 .{ .@"0:", ._dqa, .mov, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116735 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },118569 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116736 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },118570 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
116741 } },118571 } },
116742 }, .{118572 }, .{
116743 .required_features = .{ .@"64bit", .avx, null, null },118573 .required_features = .{ .@"64bit", .sse, null, null },
116744 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },118574 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any },
116745 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118575 .src_constraints = .{ .{ .float = .tbyte }, .any, .any },
116746 .patterns = &.{118576 .patterns = &.{
116747 .{ .src = .{ .to_mem, .none, .none } },118577 .{ .src = .{ .to_mem, .none, .none } },
116748 },118578 },
116749 .call_frame = .{ .alignment = .@"16" },
116750 .extra_temps = .{118579 .extra_temps = .{
116751 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },118580 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116752 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },118581 .{ .type = .f80, .kind = .{ .rc = .sse } },
116753 .{ .type = .usize, .kind = .{ .reg = .rdi } },118582 .unused,
116754 .{ .type = .usize, .kind = .{ .reg = .rsi } },118583 .unused,
116755 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },118584 .unused,
116756 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118585 .unused,
116757 .unused,118586 .unused,
116758 .unused,118587 .unused,
116759 .unused,118588 .unused,
...@@ -116761,33 +118590,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116761,33 +118590,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116761 .unused,118590 .unused,
116762 },118591 },
116763 .dst_temps = .{ .mem, .unused },118592 .dst_temps = .{ .mem, .unused },
116764 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116765 .each = .{ .once = &.{118593 .each = .{ .once = &.{
116766 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },118594 .{ ._, ._, .mov, .tmp0d, .sia(-16, .dst0, .add_size), ._, ._ },
116767 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },118595 .{ ._, ._ps, .mova, .tmp1x, .mem(.src0x), ._, ._ },
116768 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },118596 .{ .@"0:", ._ps, .mova, .memi(.dst0x, .tmp0), .tmp1x, ._, ._ },
116769 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },118597 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
116770 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },118598 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
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", ._, ._, ._ },
116775 } },118599 } },
116776 }, .{118600 }, .{
116777 .required_features = .{ .@"64bit", .sse2, null, null },118601 .required_features = .{ .@"64bit", .slow_incdec, null, null },
116778 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },118602 .dst_constraints = .{ .{ .scalar_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
116779 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118603 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116780 .patterns = &.{118604 .patterns = &.{
116781 .{ .src = .{ .to_mem, .none, .none } },118605 .{ .src = .{ .to_mem, .none, .none } },
116782 },118606 },
116783 .call_frame = .{ .alignment = .@"16" },
116784 .extra_temps = .{118607 .extra_temps = .{
116785 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },118608 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116786 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116787 .{ .type = .usize, .kind = .{ .reg = .rdi } },118609 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116788 .{ .type = .usize, .kind = .{ .reg = .rsi } },118610 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116789 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },118611 .{ .type = .usize, .kind = .{ .reg = .rcx } },
116790 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118612 .unused,
118613 .unused,
116791 .unused,118614 .unused,
116792 .unused,118615 .unused,
116793 .unused,118616 .unused,
...@@ -116795,33 +118618,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116795,33 +118618,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116795 .unused,118618 .unused,
116796 },118619 },
116797 .dst_temps = .{ .mem, .unused },118620 .dst_temps = .{ .mem, .unused },
116798 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116799 .each = .{ .once = &.{118621 .each = .{ .once = &.{
116800 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },118622 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_len), ._, ._ },
116801 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },118623 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
116802 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },118624 .{ .@"0:", ._, .lea, .tmp2q, .mem(.src0), ._, ._ },
116803 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },118625 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_size_div_8), ._, ._ },
116804 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },118626 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
116805 .{ ._, ._dqa, .mov, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },118627 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
116806 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },118628 .{ ._, ._a, .j, .@"0b", ._, ._, ._ },
116807 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116808 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116809 } },118629 } },
116810 }, .{118630 }, .{
116811 .required_features = .{ .@"64bit", .sse, null, null },118631 .required_features = .{ .@"64bit", null, null, null },
116812 .src_constraints = .{ .{ .scalar_remainder_unsigned_int = .{ .of = .dword, .is = .dword } }, .any, .any },118632 .dst_constraints = .{ .{ .scalar_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
116813 .dst_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any },118633 .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
116814 .patterns = &.{118634 .patterns = &.{
116815 .{ .src = .{ .to_mem, .none, .none } },118635 .{ .src = .{ .to_mem, .none, .none } },
116816 },118636 },
116817 .call_frame = .{ .alignment = .@"16" },
116818 .extra_temps = .{118637 .extra_temps = .{
116819 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },118638 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
116820 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
116821 .{ .type = .usize, .kind = .{ .reg = .rdi } },118639 .{ .type = .usize, .kind = .{ .reg = .rdi } },
116822 .{ .type = .usize, .kind = .{ .reg = .rsi } },118640 .{ .type = .usize, .kind = .{ .reg = .rsi } },
116823 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__floatuneitf" } } },118641 .{ .type = .usize, .kind = .{ .reg = .rcx } },
116824 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },118642 .unused,
118643 .unused,
116825 .unused,118644 .unused,
116826 .unused,118645 .unused,
116827 .unused,118646 .unused,
...@@ -116829,23 +118648,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -116829,23 +118648,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
116829 .unused,118648 .unused,
116830 },118649 },
116831 .dst_temps = .{ .mem, .unused },118650 .dst_temps = .{ .mem, .unused },
116832 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
116833 .each = .{ .once = &.{118651 .each = .{ .once = &.{
116834 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },118652 .{ ._, ._, .mov, .tmp0d, .sa(.dst0, .add_len), ._, ._ },
116835 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },118653 .{ ._, ._, .lea, .tmp1q, .mem(.dst0), ._, ._ },
116836 .{ .@"0:", ._, .mov, .tmp2p, .tmp0p, ._, ._ },118654 .{ .@"0:", ._, .lea, .tmp2q, .mem(.src0), ._, ._ },
116837 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_bit_size), ._, ._ },118655 .{ ._, ._, .mov, .tmp3d, .sa(.src0, .add_size_div_8), ._, ._ },
116838 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },118656 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
116839 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp1, .add_unaligned_size), .tmp5x, ._, ._ },118657 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
116840 .{ ._, ._, .lea, .tmp0p, .leaa(.tmp0, .add_src0_elem_size), ._, ._ },118658 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
116841 .{ ._, ._, .add, .tmp1p, .si(16), ._, ._ },
116842 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
116843 } },118659 } },
116844 } }) catch |err| switch (err) {118660 } }) catch |err| switch (err) {
116845 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{118661 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
116846 @tagName(air_tag),118662 @tagName(air_tag),
116847 ty_op.ty.toType().fmt(pt),118663 ty_op.ty.toType().fmt(pt),
116848 cg.typeOf(ty_op.operand).fmt(pt),
116849 ops[0].tracking(cg),118664 ops[0].tracking(cg),
116850 }),118665 }),
116851 else => |e| return e,118666 else => |e| return e,
...@@ -143084,16 +144899,17 @@ const Select = struct {...@@ -143084,16 +144899,17 @@ const Select = struct {
143084 any_float,144899 any_float,
143085 po2_any,144900 po2_any,
143086 bool_vec: Memory.Size,144901 bool_vec: Memory.Size,
143087 vec: Memory.Size,
143088 signed_int_vec: Memory.Size,144902 signed_int_vec: Memory.Size,
143089 signed_int_or_full_vec: Memory.Size,144903 signed_int_or_full_vec: Memory.Size,
143090 unsigned_int_vec: Memory.Size,144904 unsigned_int_vec: Memory.Size,
143091 size: Memory.Size,144905 size: Memory.Size,
143092 multiple_size: Memory.Size,144906 multiple_size: Memory.Size,
143093 int: Memory.Size,144907 int: Memory.Size,
144908 int_or_float: Memory.Size,
143094 scalar_int_is: Memory.Size,144909 scalar_int_is: Memory.Size,
143095 scalar_signed_int_is: Memory.Size,144910 scalar_signed_int_is: Memory.Size,
143096 scalar_unsigned_int_is: Memory.Size,144911 scalar_unsigned_int_is: Memory.Size,
144912 scalar: OfIsSizes,
143097 scalar_int: OfIsSizes,144913 scalar_int: OfIsSizes,
143098 scalar_signed_int: OfIsSizes,144914 scalar_signed_int: OfIsSizes,
143099 scalar_unsigned_int: OfIsSizes,144915 scalar_unsigned_int: OfIsSizes,
...@@ -143101,6 +144917,7 @@ const Select = struct {...@@ -143101,6 +144917,7 @@ const Select = struct {
143101 scalar_exact_int: struct { of: Memory.Size, is: u16 },144917 scalar_exact_int: struct { of: Memory.Size, is: u16 },
143102 scalar_exact_signed_int: struct { of: Memory.Size, is: u16 },144918 scalar_exact_signed_int: struct { of: Memory.Size, is: u16 },
143103 scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 },144919 scalar_exact_unsigned_int: struct { of: Memory.Size, is: u16 },
144920 multiple_scalar: OfIsSizes,
143104 multiple_scalar_int: OfIsSizes,144921 multiple_scalar_int: OfIsSizes,
143105 multiple_scalar_signed_int: OfIsSizes,144922 multiple_scalar_signed_int: OfIsSizes,
143106 multiple_scalar_unsigned_int: OfIsSizes,144923 multiple_scalar_unsigned_int: OfIsSizes,
...@@ -143159,8 +144976,6 @@ const Select = struct {...@@ -143159,8 +144976,6 @@ const Select = struct {
143159 .po2_any => std.math.isPowerOfTwo(ty.abiSize(zcu)),144976 .po2_any => std.math.isPowerOfTwo(ty.abiSize(zcu)),
143160 .bool_vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() == .bool_type and144977 .bool_vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() == .bool_type and
143161 size.bitSize(cg.target) >= ty.vectorLen(zcu),144978 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),
143164 .signed_int_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and144979 .signed_int_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and
143165 if (cg.intInfo(ty.childType(zcu))) |int_info| int_info.signedness == .signed else false,144980 if (cg.intInfo(ty.childType(zcu))) |int_info| int_info.signedness == .signed else false,
143166 .signed_int_or_full_vec => |size| ty.isVector(zcu) and @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu) and144981 .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 {...@@ -143173,6 +144988,12 @@ const Select = struct {
143173 .size => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu),144988 .size => |size| @divExact(size.bitSize(cg.target), 8) >= ty.abiSize(zcu),
143174 .multiple_size => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0,144989 .multiple_size => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0,
143175 .int => |size| if (cg.intInfo(ty)) |int_info| size.bitSize(cg.target) >= int_info.bits else false,144990 .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,
143176 .scalar_int_is => |size| if (cg.intInfo(ty.scalarType(zcu))) |int_info|144997 .scalar_int_is => |size| if (cg.intInfo(ty.scalarType(zcu))) |int_info|
143177 size.bitSize(cg.target) >= int_info.bits144998 size.bitSize(cg.target) >= int_info.bits
143178 else144999 else
...@@ -143185,6 +145006,13 @@ const Select = struct {...@@ -143185,6 +145006,13 @@ const Select = struct {
143185 .signed => false,145006 .signed => false,
143186 .unsigned => size.bitSize(cg.target) >= int_info.bits,145007 .unsigned => size.bitSize(cg.target) >= int_info.bits,
143187 } else false,145008 } 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,
143188 .scalar_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and145016 .scalar_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
143189 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false,145017 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false,
143190 .scalar_signed_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and145018 .scalar_signed_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
...@@ -143206,6 +145034,13 @@ const Select = struct {...@@ -143206,6 +145034,13 @@ const Select = struct {
143206 .scalar_exact_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and145034 .scalar_exact_unsigned_int => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
143207 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and145035 if (cg.intInfo(ty.scalarType(zcu))) |int_info| int_info.signedness == .unsigned and
143208 of_is.is == int_info.bits else false,145036 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,
143209 .multiple_scalar_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and145044 .multiple_scalar_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
143210 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false,145045 if (cg.intInfo(ty.scalarType(zcu))) |int_info| of_is.is.bitSize(cg.target) >= int_info.bits else false,
143211 .multiple_scalar_signed_int => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and145046 .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 {...@@ -143557,6 +145392,7 @@ const Select = struct {
143557 f64_0x1p52_0x1p84_mem,145392 f64_0x1p52_0x1p84_mem,
143558 u32_0x1p52_hi_0x1p84_hi_0_0_mem,145393 u32_0x1p52_hi_0x1p84_hi_0_0_mem,
143559 f32_0_0x1p64_mem,145394 f32_0_0x1p64_mem,
145395 pshufb_splat_mem: struct { of: Memory.Size = .none, size: Memory.Size },
143560 pshufb_trunc_mem: struct { of: Memory.Size = .none, from: Memory.Size, to: Memory.Size },145396 pshufb_trunc_mem: struct { of: Memory.Size = .none, from: Memory.Size, to: Memory.Size },
143561 pand_trunc_mem: struct { from: Memory.Size, to: Memory.Size },145397 pand_trunc_mem: struct { from: Memory.Size, to: Memory.Size },
143562 pshufb_bswap_mem: struct { repeat: u4 = 1, size: Memory.Size, smear: u4 = 1 },145398 pshufb_bswap_mem: struct { repeat: u4 = 1, size: Memory.Size, smear: u4 = 1 },
...@@ -143809,6 +145645,26 @@ const Select = struct {...@@ -143809,6 +145645,26 @@ const Select = struct {
143809 (try pt.floatValue(.f32, @as(f32, 0x1p64))).toIntern(),145645 (try pt.floatValue(.f32, @as(f32, 0x1p64))).toIntern(),
143810 } },145646 } },
143811 } }))), true },145647 } }))), 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 },
143812 .pshufb_trunc_mem => |trunc_spec| {145668 .pshufb_trunc_mem => |trunc_spec| {
143813 const zcu = pt.zcu;145669 const zcu = pt.zcu;
143814 assert(spec.type.isVector(zcu));145670 assert(spec.type.isVector(zcu));
src/codegen/c/Type.zig+15
...@@ -1788,6 +1788,21 @@ pub const Pool = struct {...@@ -1788,6 +1788,21 @@ pub const Pool = struct {
1788 };1788 };
1789 return pool.fromFields(allocator, .@"struct", &fields, kind);1789 return pool.fromFields(allocator, .@"struct", &fields, kind);
1790 },1790 },
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 },
1791 .vector_4_f16_type => {1806 .vector_4_f16_type => {
1792 const vector_ctype = try pool.getVector(allocator, .{1807 const vector_ctype = try pool.getVector(allocator, .{
1793 .elem_ctype = .f16,1808 .elem_ctype = .f16,
test/behavior/export_builtin.zig-4
...@@ -57,10 +57,6 @@ test "exporting using namespace access" {...@@ -57,10 +57,6 @@ test "exporting using namespace access" {
5757
58test "exporting comptime-known value" {58test "exporting comptime-known value" {
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;59 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;
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;62 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
test/behavior/vector.zig+2-6
...@@ -31,8 +31,7 @@ test "vector wrap operators" {...@@ -31,8 +31,7 @@ test "vector wrap operators" {
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_x86_64 and34 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
35 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
3635
37 const S = struct {36 const S = struct {
38 fn doTheTest() !void {37 fn doTheTest() !void {
...@@ -350,12 +349,12 @@ test "vector casts of sizes not divisible by 8" {...@@ -350,12 +349,12 @@ test "vector casts of sizes not divisible by 8" {
350}349}
351350
352test "vector @splat" {351test "vector @splat" {
353 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;355 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
358 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;356 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
360 if (builtin.zig_backend == .stage2_llvm and359 if (builtin.zig_backend == .stage2_llvm and
361 builtin.os.tag == .macos)360 builtin.os.tag == .macos)
...@@ -1511,9 +1510,6 @@ test "boolean vector with 2 or more booleans" {...@@ -1511,9 +1510,6 @@ test "boolean vector with 2 or more booleans" {
1511 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1512 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1511 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
1517 const vec1 = @Vector(2, bool){ true, true };1513 const vec1 = @Vector(2, bool){ true, true };
1518 _ = vec1;1514 _ = vec1;
15191515
test/behavior/x86_64/unary.zig+9
...@@ -1818,3 +1818,12 @@ test optionalNotEqualNull {...@@ -1818,3 +1818,12 @@ test optionalNotEqualNull {
1818 try test_optional_not_equal_null.testInts();1818 try test_optional_not_equal_null.testInts();
1819 try test_optional_not_equal_null.testFloats();1819 try test_optional_not_equal_null.testFloats();
1820}1820}
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 {...@@ -117,9 +117,9 @@ export fn testMutablePointer() void {
117// tmp.zig:37:38: note: imported here117// tmp.zig:37:38: note: imported here
118// neg_inf.zon:1:1: error: expected type '?u8'118// neg_inf.zon:1:1: error: expected type '?u8'
119// tmp.zig:57:28: note: imported here119// 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'
121// tmp.zig:62:39: note: imported here121// 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'
123// tmp.zig:67:44: note: imported here123// 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'
125// tmp.zig:72:50: note: imported here125// 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 {...@@ -15,6 +15,6 @@ pub export fn entry() void {
15// error15// error
16//16//
17// :7:25: error: unable to resolve comptime value17// :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-known18// :7:25: note: initializer of comptime-only struct 'tmp.S.foo__anon_470.C' must be comptime-known
19// :4:16: note: struct requires comptime because of this field19// :4:16: note: struct requires comptime because of this field
20// :4:16: note: types are not available at runtime20// :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 {...@@ -16,5 +16,5 @@ pub export fn entry2() void {
16//16//
17// :3:6: error: no field or member function named 'copy' in '[]const u8'17// :3:6: error: no field or member function named 'copy' in '[]const u8'
18// :9:8: error: no field or member function named 'bar' in '@TypeOf(.{})'18// :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'
20// :12:6: note: struct declared here20// :12:6: note: struct declared here
test/cases/compile_errors/coerce_anon_struct.zig+1-1
...@@ -6,6 +6,6 @@ export fn foo() void {...@@ -6,6 +6,6 @@ export fn foo() void {
66
7// error7// error
8//8//
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'
10// :3:16: note: struct declared here10// :3:16: note: struct declared here
11// :1:11: note: struct declared here11// :1:11: note: struct declared here
test/cases/compile_errors/redundant_try.zig+2-2
...@@ -44,9 +44,9 @@ comptime {...@@ -44,9 +44,9 @@ comptime {
44//44//
45// :5:23: error: expected error union type, found 'comptime_int'45// :5:23: error: expected error union type, found 'comptime_int'
46// :10:23: error: expected error union type, found '@TypeOf(.{})'46// :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'
48// :15:23: note: struct declared here48// :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'
50// :20:27: note: struct declared here50// :20:27: note: struct declared here
51// :25:23: error: expected error union type, found 'struct { comptime *const [5:0]u8 = "hello" }'51// :25:23: error: expected error union type, found 'struct { comptime *const [5:0]u8 = "hello" }'
52// :31:13: error: expected error union type, found 'u32'52// :31:13: error: expected error union type, found 'u32'