authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-24 16:50:37-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-28 15:10:22-04:00
log7d727ed7dfc7f3a2880ff1d7b88569dea9531e73
treef1b8c6dcbcfc985745c6c5f1861bdc314a3d6ead
parentd1785cf61c2b7db5553532cb62cb058d99e2c7b0

x86_64: implement strict float `@reduce(.Mul)`


2 files changed, 715 insertions(+), 65 deletions(-)

src/arch/x86_64/CodeGen.zig+714-65
...@@ -2389,7 +2389,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2389,7 +2389,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2389}2389}
23902390
2391fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2391fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2392 @setEvalBranchQuota(23_900);2392 @setEvalBranchQuota(24_000);
2393 const pt = cg.pt;2393 const pt = cg.pt;
2394 const zcu = pt.zcu;2394 const zcu = pt.zcu;
2395 const ip = &zcu.intern_pool;2395 const ip = &zcu.intern_pool;
...@@ -101686,10 +101686,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101686,10 +101686,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101686 .each = .{ .once = &.{101686 .each = .{ .once = &.{
101687 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },101687 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101688 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },101688 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
101689 .{ ._, ._, .movzx, .dst0d, .tmp1w, ._, ._ },101689 .{ ._, ._, .movzx, .dst0d, .memd(.tmp1b, 1), ._, ._ },
101690 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },101690 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
101691 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101691 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101692 .{ ._, ._, .mov, .tmp1w, .dst0w, ._, ._ },101692 .{ ._, ._, .mov, .memd(.tmp1b, 1), .dst0b, ._, ._ },
101693 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },101693 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },
101694 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101694 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101695 .{ ._, ._, .movsx, .dst0d, .tmp2b, ._, ._ },101695 .{ ._, ._, .movsx, .dst0d, .tmp2b, ._, ._ },
...@@ -101718,10 +101718,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101718,10 +101718,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101718 .each = .{ .once = &.{101718 .each = .{ .once = &.{
101719 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },101719 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101720 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },101720 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
101721 .{ ._, ._, .movzx, .dst0d, .tmp1w, ._, ._ },101721 .{ ._, ._, .movzx, .dst0d, .memd(.tmp1b, 1), ._, ._ },
101722 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },101722 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
101723 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101723 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101724 .{ ._, ._, .mov, .tmp1w, .dst0w, ._, ._ },101724 .{ ._, ._, .mov, .memd(.tmp1b, 1), .dst0b, ._, ._ },
101725 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },101725 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },
101726 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101726 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101727 .{ ._, ._, .movzx, .dst0d, .tmp2b, ._, ._ },101727 .{ ._, ._, .movzx, .dst0d, .tmp2b, ._, ._ },
...@@ -101750,10 +101750,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101750,10 +101750,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101750 .each = .{ .once = &.{101750 .each = .{ .once = &.{
101751 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },101751 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101752 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },101752 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
101753 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },101753 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
101754 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },101754 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
101755 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101755 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101756 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },101756 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
101757 .{ ._, .fi_p, .st, .dst0w, ._, ._, ._ },101757 .{ ._, .fi_p, .st, .dst0w, ._, ._, ._ },
101758 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101758 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101759 } },101759 } },
...@@ -101781,10 +101781,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101781,10 +101781,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101781 .each = .{ .once = &.{101781 .each = .{ .once = &.{
101782 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },101782 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101783 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },101783 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
101784 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },101784 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
101785 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },101785 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
101786 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101786 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101787 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },101787 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
101788 .{ ._, .fi_p, .st, .dst0d, ._, ._, ._ },101788 .{ ._, .fi_p, .st, .dst0d, ._, ._, ._ },
101789 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101789 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101790 } },101790 } },
...@@ -101836,10 +101836,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101836,10 +101836,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101836 .each = .{ .once = &.{101836 .each = .{ .once = &.{
101837 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },101837 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101838 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },101838 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
101839 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },101839 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
101840 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },101840 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
101841 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101841 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101842 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },101842 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
101843 .{ ._, .fi_p, .st, .dst0q, ._, ._, ._ },101843 .{ ._, .fi_p, .st, .dst0q, ._, ._, ._ },
101844 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },101844 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
101845 } },101845 } },
...@@ -101933,10 +101933,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -101933,10 +101933,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
101933 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },101933 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
101934 .{ ._, .f_, .ld, .tmp0t, ._, ._, ._ },101934 .{ ._, .f_, .ld, .tmp0t, ._, ._, ._ },
101935 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },101935 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
101936 .{ ._, ._, .movzx, .dst0d, .tmp2w, ._, ._ },101936 .{ ._, ._, .movzx, .dst0d, .memd(.tmp2b, 1), ._, ._ },
101937 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },101937 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
101938 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },101938 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
101939 .{ ._, ._, .mov, .tmp2w, .dst0w, ._, ._ },101939 .{ ._, ._, .mov, .memd(.tmp2b, 1), .dst0b, ._, ._ },
101940 .{ ._, ._, .lea, .dst0q, .mem(.tmp3), ._, ._ },101940 .{ ._, ._, .lea, .dst0q, .mem(.tmp3), ._, ._ },
101941 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },101941 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
101942 .{ ._, .f_, .sub, .lea(.dst0d), ._, ._, ._ },101942 .{ ._, .f_, .sub, .lea(.dst0d), ._, ._, ._ },
...@@ -102284,10 +102284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102284,10 +102284,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102284 .each = .{ .once = &.{102284 .each = .{ .once = &.{
102285 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102285 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102286 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },102286 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
102287 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },102287 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
102288 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },102288 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
102289 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },102289 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102290 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },102290 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
102291 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },102291 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102292 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },102292 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },
102293 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },102293 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },
...@@ -102321,10 +102321,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102321,10 +102321,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102321 .each = .{ .once = &.{102321 .each = .{ .once = &.{
102322 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102322 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102323 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },102323 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
102324 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },102324 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
102325 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },102325 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
102326 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },102326 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102327 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },102327 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
102328 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },102328 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
102329 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },102329 .{ ._, .fi_p, .st, .tmp4w, ._, ._, ._ },
102330 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },102330 .{ ._, ._, .movzx, .tmp2d, .tmp4b, ._, ._ },
...@@ -102772,10 +102772,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102772,10 +102772,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102772 .clobbers = .{ .eflags = true },102772 .clobbers = .{ .eflags = true },
102773 .each = .{ .once = &.{102773 .each = .{ .once = &.{
102774 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },102774 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
102775 .{ ._, ._, .movzx, .tmp0d, .tmp1w, ._, ._ },102775 .{ ._, ._, .movzx, .tmp0d, .memd(.tmp1b, 1), ._, ._ },
102776 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },102776 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
102777 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },102777 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102778 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },102778 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
102779 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102779 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102780 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },102780 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102781 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },102781 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
...@@ -102808,10 +102808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -102808,10 +102808,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
102808 .each = .{ .once = &.{102808 .each = .{ .once = &.{
102809 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },102809 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
102810 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },102810 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
102811 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },102811 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
102812 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },102812 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
102813 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },102813 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
102814 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },102814 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
102815 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },102815 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
102816 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },102816 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },
102817 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },102817 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
...@@ -103032,10 +103032,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103032,10 +103032,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103032 .clobbers = .{ .eflags = true },103032 .clobbers = .{ .eflags = true },
103033 .each = .{ .once = &.{103033 .each = .{ .once = &.{
103034 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },103034 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103035 .{ ._, ._, .movzx, .tmp0d, .tmp1w, ._, ._ },103035 .{ ._, ._, .movzx, .tmp0d, .memd(.tmp1b, 1), ._, ._ },
103036 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },103036 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103037 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },103037 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103038 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },103038 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
103039 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103039 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103040 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },103040 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103041 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },103041 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
...@@ -103068,10 +103068,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103068,10 +103068,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103068 .each = .{ .once = &.{103068 .each = .{ .once = &.{
103069 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103069 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103070 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },103070 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103071 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },103071 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
103072 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },103072 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103073 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },103073 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103074 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },103074 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
103075 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },103075 .{ .@"0:", .f_, .ld, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
103076 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },103076 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
103077 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },103077 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
...@@ -103350,10 +103350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -103350,10 +103350,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
103350 .clobbers = .{ .eflags = true },103350 .clobbers = .{ .eflags = true },
103351 .each = .{ .once = &.{103351 .each = .{ .once = &.{
103352 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },103352 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
103353 .{ ._, ._, .movzx, .tmp0d, .tmp1w, ._, ._ },103353 .{ ._, ._, .movzx, .tmp0d, .memd(.tmp1b, 1), ._, ._ },
103354 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },103354 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
103355 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },103355 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
103356 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },103356 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
103357 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },103357 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
103358 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },103358 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
103359 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },103359 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
...@@ -104001,10 +104001,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104001,10 +104001,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104001 .each = .{ .once = &.{104001 .each = .{ .once = &.{
104002 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },104002 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104003 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104003 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104004 .{ ._, ._, .movzx, .dst0d, .tmp1w, ._, ._ },104004 .{ ._, ._, .movzx, .dst0d, .memd(.tmp1b, 1), ._, ._ },
104005 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104005 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104006 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104006 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104007 .{ ._, ._, .mov, .tmp1w, .dst0w, ._, ._ },104007 .{ ._, ._, .mov, .memd(.tmp1b, 1), .dst0b, ._, ._ },
104008 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },104008 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },
104009 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104009 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104010 .{ ._, ._, .movsx, .dst0d, .tmp2b, ._, ._ },104010 .{ ._, ._, .movsx, .dst0d, .tmp2b, ._, ._ },
...@@ -104061,10 +104061,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104061,10 +104061,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104061 .each = .{ .once = &.{104061 .each = .{ .once = &.{
104062 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },104062 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104063 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104063 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104064 .{ ._, ._, .movzx, .dst0d, .tmp1w, ._, ._ },104064 .{ ._, ._, .movzx, .dst0d, .memd(.tmp1b, 1), ._, ._ },
104065 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104065 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104066 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104066 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104067 .{ ._, ._, .mov, .tmp1w, .dst0w, ._, ._ },104067 .{ ._, ._, .mov, .memd(.tmp1b, 1), .dst0b, ._, ._ },
104068 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },104068 .{ ._, .fi_p, .st, .tmp2w, ._, ._, ._ },
104069 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104069 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104070 .{ ._, ._, .movzx, .dst0d, .tmp2b, ._, ._ },104070 .{ ._, ._, .movzx, .dst0d, .tmp2b, ._, ._ },
...@@ -104161,10 +104161,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104161,10 +104161,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104161 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },104161 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104162 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104162 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104163 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },104163 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104164 .{ ._, ._, .movsx, .tmp3d, .tmp2w, ._, ._ },104164 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104165 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },104165 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
104166 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },104166 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104167 .{ ._, ._, .mov, .tmp2w, .tmp3w, ._, ._ },104167 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
104168 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },104168 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104169 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },104169 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104170 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },104170 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },
...@@ -104200,10 +104200,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104200,10 +104200,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104200 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },104200 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104201 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104201 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104202 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },104202 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104203 .{ ._, ._, .movsx, .tmp3d, .tmp2w, ._, ._ },104203 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104204 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },104204 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
104205 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },104205 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104206 .{ ._, ._, .mov, .tmp2w, .tmp3w, ._, ._ },104206 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
104207 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },104207 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104208 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },104208 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104209 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },104209 .{ ._, ._, .movsx, .tmp3d, .tmp5b, ._, ._ },
...@@ -104305,10 +104305,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104305,10 +104305,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104305 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },104305 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104306 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104306 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104307 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },104307 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104308 .{ ._, ._, .movsx, .tmp3d, .tmp2w, ._, ._ },104308 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104309 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },104309 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
104310 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },104310 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104311 .{ ._, ._, .mov, .tmp2w, .tmp3w, ._, ._ },104311 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
104312 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },104312 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104313 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },104313 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104314 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },104314 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },
...@@ -104344,10 +104344,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104344,10 +104344,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104344 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },104344 .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
104345 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104345 .{ ._, ._, .mov, .tmp1p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104346 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },104346 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104347 .{ ._, ._, .movsx, .tmp3d, .tmp2w, ._, ._ },104347 .{ ._, ._, .movzx, .tmp3d, .memd(.tmp2b, 1), ._, ._ },
104348 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },104348 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
104349 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },104349 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104350 .{ ._, ._, .mov, .tmp2w, .tmp3w, ._, ._ },104350 .{ ._, ._, .mov, .memd(.tmp2b, 1), .tmp3b, ._, ._ },
104351 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },104351 .{ .@"0:", .f_, .ld, .lea(.tmp0t), ._, ._, ._ },
104352 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },104352 .{ ._, .fi_p, .st, .tmp5w, ._, ._, ._ },
104353 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },104353 .{ ._, ._, .movzx, .tmp3d, .tmp5b, ._, ._ },
...@@ -104408,10 +104408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104408,10 +104408,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104408 .each = .{ .once = &.{104408 .each = .{ .once = &.{
104409 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },104409 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104410 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104410 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104411 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },104411 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
104412 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104412 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104413 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104413 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104414 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },104414 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
104415 .{ ._, .fi_p, .st, .dst0w, ._, ._, ._ },104415 .{ ._, .fi_p, .st, .dst0w, ._, ._, ._ },
104416 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104416 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104417 } },104417 } },
...@@ -104468,10 +104468,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104468,10 +104468,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104468 .clobbers = .{ .eflags = true },104468 .clobbers = .{ .eflags = true },
104469 .each = .{ .once = &.{104469 .each = .{ .once = &.{
104470 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104470 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104471 .{ ._, ._, .movzx, .tmp0d, .tmp1w, ._, ._ },104471 .{ ._, ._, .movzx, .tmp0d, .memd(.tmp1b, 1), ._, ._ },
104472 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104472 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104473 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104473 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104474 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },104474 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
104475 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104475 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104476 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },104476 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
104477 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },104477 .{ ._, .fi_p, .st, .memia(.dst0w, .tmp0, .add_unaligned_size), ._, ._, ._ },
...@@ -104535,10 +104535,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104535,10 +104535,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104535 .each = .{ .once = &.{104535 .each = .{ .once = &.{
104536 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104536 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104537 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104537 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104538 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },104538 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
104539 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104539 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104540 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104540 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104541 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },104541 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
104542 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },104542 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"8", .tmp0, .add_unaligned_size), ._, ._, ._ },
104543 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },104543 .{ ._, .fi_p, .st, .tmp4d, ._, ._, ._ },
104544 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },104544 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
...@@ -104598,10 +104598,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104598,10 +104598,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104598 .each = .{ .once = &.{104598 .each = .{ .once = &.{
104599 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },104599 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104600 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104600 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104601 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },104601 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
104602 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104602 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104603 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104603 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104604 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },104604 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
104605 .{ ._, .fi_p, .st, .dst0d, ._, ._, ._ },104605 .{ ._, .fi_p, .st, .dst0d, ._, ._, ._ },
104606 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104606 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104607 } },104607 } },
...@@ -104658,10 +104658,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104658,10 +104658,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104658 .clobbers = .{ .eflags = true },104658 .clobbers = .{ .eflags = true },
104659 .each = .{ .once = &.{104659 .each = .{ .once = &.{
104660 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104660 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104661 .{ ._, ._, .movzx, .tmp0d, .tmp1w, ._, ._ },104661 .{ ._, ._, .movzx, .tmp0d, .memd(.tmp1b, 1), ._, ._ },
104662 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104662 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104663 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104663 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104664 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },104664 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
104665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104665 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104666 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },104666 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
104667 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },104667 .{ ._, .fi_p, .st, .memia(.dst0d, .tmp0, .add_unaligned_size), ._, ._, ._ },
...@@ -104725,10 +104725,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104725,10 +104725,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104725 .each = .{ .once = &.{104725 .each = .{ .once = &.{
104726 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104726 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104727 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104727 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104728 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },104728 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
104729 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104729 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104730 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104730 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104731 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },104731 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
104732 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },104732 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"4", .tmp0, .add_unaligned_size), ._, ._, ._ },
104733 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },104733 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
104734 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },104734 .{ ._, ._, .mov, .tmp2d, .tmp4d, ._, ._ },
...@@ -104788,10 +104788,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104788,10 +104788,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104788 .each = .{ .once = &.{104788 .each = .{ .once = &.{
104789 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },104789 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104790 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104790 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104791 .{ ._, ._, .movzx, .tmp2d, .tmp1w, ._, ._ },104791 .{ ._, ._, .movzx, .tmp2d, .memd(.tmp1b, 1), ._, ._ },
104792 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104792 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104793 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104793 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104794 .{ ._, ._, .mov, .tmp1w, .tmp2w, ._, ._ },104794 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp2b, ._, ._ },
104795 .{ ._, .fi_p, .st, .dst0q, ._, ._, ._ },104795 .{ ._, .fi_p, .st, .dst0q, ._, ._, ._ },
104796 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104796 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104797 } },104797 } },
...@@ -104858,10 +104858,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104858,10 +104858,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104858 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },104858 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
104859 .{ ._, .f_, .ld, .tmp0t, ._, ._, ._ },104859 .{ ._, .f_, .ld, .tmp0t, ._, ._, ._ },
104860 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },104860 .{ ._, .fn_cw, .st, .tmp2w, ._, ._, ._ },
104861 .{ ._, ._, .movzx, .dst0d, .tmp2w, ._, ._ },104861 .{ ._, ._, .movzx, .dst0d, .memd(.tmp2b, 1), ._, ._ },
104862 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },104862 .{ ._, ._, .@"or", .memd(.tmp2b, 1), .ui(0b000_0_11_00), ._, ._ },
104863 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },104863 .{ ._, .f_cw, .ld, .tmp2w, ._, ._, ._ },
104864 .{ ._, ._, .mov, .tmp2w, .dst0w, ._, ._ },104864 .{ ._, ._, .mov, .memd(.tmp2b, 1), .dst0b, ._, ._ },
104865 .{ ._, ._, .lea, .dst0q, .mem(.tmp3), ._, ._ },104865 .{ ._, ._, .lea, .dst0q, .mem(.tmp3), ._, ._ },
104866 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },104866 .{ ._, .fi_p, .st, .tmp4q, ._, ._, ._ },
104867 .{ ._, .f_, .sub, .lea(.dst0d), ._, ._, ._ },104867 .{ ._, .f_, .sub, .lea(.dst0d), ._, ._, ._ },
...@@ -104926,10 +104926,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -104926,10 +104926,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
104926 .clobbers = .{ .eflags = true },104926 .clobbers = .{ .eflags = true },
104927 .each = .{ .once = &.{104927 .each = .{ .once = &.{
104928 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },104928 .{ ._, .fn_cw, .st, .tmp1w, ._, ._, ._ },
104929 .{ ._, ._, .movzx, .tmp0d, .tmp1w, ._, ._ },104929 .{ ._, ._, .movzx, .tmp0d, .memd(.tmp1b, 1), ._, ._ },
104930 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },104930 .{ ._, ._, .@"or", .memd(.tmp1b, 1), .ui(0b000_0_11_00), ._, ._ },
104931 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },104931 .{ ._, .f_cw, .ld, .tmp1w, ._, ._, ._ },
104932 .{ ._, ._, .mov, .tmp1w, .tmp0w, ._, ._ },104932 .{ ._, ._, .mov, .memd(.tmp1b, 1), .tmp0b, ._, ._ },
104933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },104933 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
104934 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },104934 .{ .@"0:", .f_, .ld, .memsia(.src0t, .@"2", .tmp0, .add_unaligned_size), ._, ._, ._ },
104935 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },104935 .{ ._, .fi_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
...@@ -117442,8 +117442,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117442,8 +117442,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117442 switch (reduce.operation) {117442 switch (reduce.operation) {
117443 .And, .Or, .Xor => {},117443 .And, .Or, .Xor => {},
117444 .Min, .Max => break :fallback try cg.airReduce(inst),117444 .Min, .Max => break :fallback try cg.airReduce(inst),
117445 .Add => {},117445 .Add, .Mul => {},
117446 .Mul => if (cg.floatBits(res_ty)) |_| break :fallback try cg.airReduce(inst),
117447 }117446 }
117448 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});117447 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});
117449 var res: [1]Temp = undefined;117448 var res: [1]Temp = undefined;
...@@ -126937,7 +126936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126937,7 +126936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126937 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },126936 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
126938 .each = .{ .once = &.{126937 .each = .{ .once = &.{
126939 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },126938 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
126940 .{ ._, .v_ps, .add, .tmp0x, .src0x, .tmp0x, ._ },126939 .{ ._, .v_ss, .add, .tmp0x, .src0x, .tmp0x, ._ },
126941 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },126940 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },
126942 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },126941 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },
126943 } },126942 } },
...@@ -127176,7 +127175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127176,7 +127175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127176 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },127175 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
127177 .each = .{ .once = &.{127176 .each = .{ .once = &.{
127178 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },127177 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
127179 .{ ._, .v_pd, .add, .tmp0x, .src0x, .tmp0x, ._ },127178 .{ ._, .v_sd, .add, .tmp0x, .src0x, .tmp0x, ._ },
127180 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },127179 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
127181 .{ ._, .v_sd, .add, .dst0x, .tmp0x, .dst0x, ._ },127180 .{ ._, .v_sd, .add, .dst0x, .tmp0x, .dst0x, ._ },
127182 } },127181 } },
...@@ -130297,6 +130296,656 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -130297,6 +130296,656 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
130297 .{ ._, ._, .sub, .tmp0d, .sa(.dst0, .add_size), ._, ._ },130296 .{ ._, ._, .sub, .tmp0d, .sa(.dst0, .add_size), ._, ._ },
130298 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },130297 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130299 } },130298 } },
130299 }, .{
130300 .required_features = .{ .f16c, null, null, null },
130301 .dst_constraints = .{ .{ .float = .word }, .any },
130302 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
130303 .patterns = &.{
130304 .{ .src = .{ .mem, .none, .none } },
130305 .{ .src = .{ .to_sse, .none, .none } },
130306 },
130307 .extra_temps = .{
130308 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130309 .unused,
130310 .unused,
130311 .unused,
130312 .unused,
130313 .unused,
130314 .unused,
130315 .unused,
130316 .unused,
130317 .unused,
130318 .unused,
130319 },
130320 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130321 .each = .{ .once = &.{
130322 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
130323 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130324 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0x, ._ },
130325 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130326 } },
130327 }, .{
130328 .required_features = .{ .f16c, null, null, null },
130329 .dst_constraints = .{ .{ .float = .word }, .any },
130330 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
130331 .patterns = &.{
130332 .{ .src = .{ .mem, .none, .none } },
130333 .{ .src = .{ .to_sse, .none, .none } },
130334 },
130335 .extra_temps = .{
130336 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130337 .unused,
130338 .unused,
130339 .unused,
130340 .unused,
130341 .unused,
130342 .unused,
130343 .unused,
130344 .unused,
130345 .unused,
130346 .unused,
130347 },
130348 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130349 .each = .{ .once = &.{
130350 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
130351 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
130352 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0x, ._ },
130353 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130354 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp0x, ._ },
130355 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130356 } },
130357 }, .{
130358 .required_features = .{ .f16c, null, null, null },
130359 .dst_constraints = .{ .{ .float = .word }, .any },
130360 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130361 .patterns = &.{
130362 .{ .src = .{ .to_mem, .none, .none } },
130363 },
130364 .extra_temps = .{
130365 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130366 .{ .type = .f16, .kind = .{ .rc = .sse } },
130367 .unused,
130368 .unused,
130369 .unused,
130370 .unused,
130371 .unused,
130372 .unused,
130373 .unused,
130374 .unused,
130375 .unused,
130376 },
130377 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130378 .clobbers = .{ .eflags = true },
130379 .each = .{ .once = &.{
130380 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
130381 .{ ._, ._, .mov, .tmp0p, .sia(2, .src0, .sub_unaligned_size), ._, ._ },
130382 .{ ._, .vp_w, .insr, .dst0x, .dst0x, .mem(.src0w), .ui(0) },
130383 .{ .@"0:", .vp_w, .insr, .dst0x, .dst0x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(1) },
130384 .{ ._, .v_ps, .cvtph2, .dst0x, .dst0q, ._, ._ },
130385 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130386 .{ ._, .v_ss, .mul, .dst0x, .dst0x, .tmp1x, ._ },
130387 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130388 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
130389 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130390 } },
130391 }, .{
130392 .required_features = .{ .avx, null, null, null },
130393 .dst_constraints = .{ .{ .float = .word }, .any },
130394 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130395 .patterns = &.{
130396 .{ .src = .{ .to_mem, .none, .none } },
130397 },
130398 .call_frame = .{ .alignment = .@"16" },
130399 .extra_temps = .{
130400 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130401 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
130402 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
130403 .unused,
130404 .unused,
130405 .unused,
130406 .unused,
130407 .unused,
130408 .unused,
130409 .unused,
130410 .unused,
130411 },
130412 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130413 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130414 .each = .{ .once = &.{
130415 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
130416 .{ ._, ._, .mov, .tmp0p, .sia(2, .src0, .sub_unaligned_size), ._, ._ },
130417 .{ ._, .vp_w, .insr, .dst0x, .dst0x, .mem(.src0w), .ui(0) },
130418 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
130419 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
130420 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130421 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
130422 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130423 } },
130424 }, .{
130425 .required_features = .{ .sse2, null, null, null },
130426 .dst_constraints = .{ .{ .float = .word }, .any },
130427 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130428 .patterns = &.{
130429 .{ .src = .{ .to_mem, .none, .none } },
130430 },
130431 .call_frame = .{ .alignment = .@"16" },
130432 .extra_temps = .{
130433 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130434 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
130435 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
130436 .unused,
130437 .unused,
130438 .unused,
130439 .unused,
130440 .unused,
130441 .unused,
130442 .unused,
130443 .unused,
130444 },
130445 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130446 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130447 .each = .{ .once = &.{
130448 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
130449 .{ ._, ._, .mov, .tmp0p, .sia(2, .src0, .sub_unaligned_size), ._, ._ },
130450 .{ ._, .p_w, .insr, .dst0x, .mem(.src0w), .ui(0), ._ },
130451 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
130452 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
130453 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130454 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
130455 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130456 } },
130457 }, .{
130458 .required_features = .{ .sse, null, null, null },
130459 .dst_constraints = .{ .{ .float = .word }, .any },
130460 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130461 .patterns = &.{
130462 .{ .src = .{ .to_mem, .none, .none } },
130463 },
130464 .call_frame = .{ .alignment = .@"16" },
130465 .extra_temps = .{
130466 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130467 .{ .type = .f16, .kind = .{ .reg = .ax } },
130468 .{ .type = .f32, .kind = .mem },
130469 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
130470 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__mulhf3" } } },
130471 .unused,
130472 .unused,
130473 .unused,
130474 .unused,
130475 .unused,
130476 .unused,
130477 },
130478 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130479 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130480 .each = .{ .once = &.{
130481 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
130482 .{ ._, ._, .mov, .tmp0p, .sia(2, .src0, .sub_unaligned_size), ._, ._ },
130483 .{ ._, ._, .movzx, .tmp1d, .mem(.src0w), ._, ._ },
130484 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
130485 .{ ._, ._ss, .mov, .dst0x, .mem(.tmp2d), ._, ._ },
130486 .{ .@"0:", ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
130487 .{ ._, ._ss, .mov, .tmp3x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
130488 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
130489 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
130490 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130491 } },
130492 }, .{
130493 .required_features = .{ .avx, null, null, null },
130494 .dst_constraints = .{ .{ .float = .dword }, .any },
130495 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
130496 .patterns = &.{
130497 .{ .src = .{ .to_sse, .none, .none } },
130498 },
130499 .extra_temps = .{
130500 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130501 .unused,
130502 .unused,
130503 .unused,
130504 .unused,
130505 .unused,
130506 .unused,
130507 .unused,
130508 .unused,
130509 .unused,
130510 .unused,
130511 },
130512 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130513 .each = .{ .once = &.{
130514 .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01_01_01_01) },
130515 .{ ._, .v_ss, .mul, .dst0x, .src0x, .tmp0x, ._ },
130516 } },
130517 }, .{
130518 .required_features = .{ .sse, null, null, null },
130519 .dst_constraints = .{ .{ .float = .dword }, .any },
130520 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
130521 .patterns = &.{
130522 .{ .src = .{ .to_mut_sse, .none, .none } },
130523 },
130524 .extra_temps = .{
130525 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130526 .unused,
130527 .unused,
130528 .unused,
130529 .unused,
130530 .unused,
130531 .unused,
130532 .unused,
130533 .unused,
130534 .unused,
130535 .unused,
130536 },
130537 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130538 .each = .{ .once = &.{
130539 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
130540 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01_01_01_01), ._ },
130541 .{ ._, ._ss, .mul, .dst0x, .tmp0x, ._, ._ },
130542 } },
130543 }, .{
130544 .required_features = .{ .avx, null, null, null },
130545 .dst_constraints = .{ .{ .float = .dword }, .any },
130546 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130547 .patterns = &.{
130548 .{ .src = .{ .to_sse, .none, .none } },
130549 },
130550 .extra_temps = .{
130551 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130552 .unused,
130553 .unused,
130554 .unused,
130555 .unused,
130556 .unused,
130557 .unused,
130558 .unused,
130559 .unused,
130560 .unused,
130561 .unused,
130562 },
130563 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130564 .each = .{ .once = &.{
130565 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
130566 .{ ._, .v_ss, .mul, .tmp0x, .src0x, .tmp0x, ._ },
130567 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },
130568 .{ ._, .v_ss, .mul, .dst0x, .tmp0x, .dst0x, ._ },
130569 } },
130570 }, .{
130571 .required_features = .{ .sse, null, null, null },
130572 .dst_constraints = .{ .{ .float = .dword }, .any },
130573 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130574 .patterns = &.{
130575 .{ .src = .{ .to_mut_sse, .none, .none } },
130576 },
130577 .extra_temps = .{
130578 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130579 .unused,
130580 .unused,
130581 .unused,
130582 .unused,
130583 .unused,
130584 .unused,
130585 .unused,
130586 .unused,
130587 .unused,
130588 .unused,
130589 },
130590 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130591 .each = .{ .once = &.{
130592 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
130593 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
130594 .{ ._, ._ss, .mul, .tmp0x, .src0x, ._, ._ },
130595 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
130596 .{ ._, ._ss, .mul, .dst0x, .tmp0x, ._, ._ },
130597 } },
130598 }, .{
130599 .required_features = .{ .avx, null, null, null },
130600 .dst_constraints = .{ .{ .float = .dword }, .any },
130601 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
130602 .patterns = &.{
130603 .{ .src = .{ .to_mem, .none, .none } },
130604 },
130605 .extra_temps = .{
130606 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130607 .unused,
130608 .unused,
130609 .unused,
130610 .unused,
130611 .unused,
130612 .unused,
130613 .unused,
130614 .unused,
130615 .unused,
130616 .unused,
130617 },
130618 .dst_temps = .{ .{ .rc = .sse }, .unused },
130619 .clobbers = .{ .eflags = true },
130620 .each = .{ .once = &.{
130621 .{ ._, ._, .mov, .tmp0p, .sia(4, .src0, .sub_unaligned_size), ._, ._ },
130622 .{ ._, .v_ss, .mov, .dst0x, .mem(.src0d), ._, ._ },
130623 .{ .@"0:", .v_ss, .mul, .dst0x, .dst0x, .memia(.src0d, .tmp0, .add_unaligned_size), ._ },
130624 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
130625 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130626 } },
130627 }, .{
130628 .required_features = .{ .sse, null, null, null },
130629 .dst_constraints = .{ .{ .float = .dword }, .any },
130630 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .dword, .is = .dword } }, .any, .any },
130631 .patterns = &.{
130632 .{ .src = .{ .to_mem, .none, .none } },
130633 },
130634 .extra_temps = .{
130635 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130636 .unused,
130637 .unused,
130638 .unused,
130639 .unused,
130640 .unused,
130641 .unused,
130642 .unused,
130643 .unused,
130644 .unused,
130645 .unused,
130646 },
130647 .dst_temps = .{ .{ .rc = .sse }, .unused },
130648 .clobbers = .{ .eflags = true },
130649 .each = .{ .once = &.{
130650 .{ ._, ._, .mov, .tmp0p, .sia(4, .src0, .sub_unaligned_size), ._, ._ },
130651 .{ ._, ._ss, .mov, .dst0x, .mem(.src0d), ._, ._ },
130652 .{ .@"0:", ._ss, .mul, .dst0x, .memia(.src0d, .tmp0, .add_unaligned_size), ._, ._ },
130653 .{ ._, ._, .add, .tmp0p, .si(4), ._, ._ },
130654 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130655 } },
130656 }, .{
130657 .required_features = .{ .avx, null, null, null },
130658 .dst_constraints = .{ .{ .float = .qword }, .any },
130659 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
130660 .patterns = &.{
130661 .{ .src = .{ .to_sse, .none, .none } },
130662 },
130663 .extra_temps = .{
130664 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
130665 .unused,
130666 .unused,
130667 .unused,
130668 .unused,
130669 .unused,
130670 .unused,
130671 .unused,
130672 .unused,
130673 .unused,
130674 .unused,
130675 },
130676 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130677 .each = .{ .once = &.{
130678 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
130679 .{ ._, .v_sd, .mul, .dst0x, .src0x, .tmp0x, ._ },
130680 } },
130681 }, .{
130682 .required_features = .{ .sse2, null, null, null },
130683 .dst_constraints = .{ .{ .float = .qword }, .any },
130684 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
130685 .patterns = &.{
130686 .{ .src = .{ .to_mut_sse, .none, .none } },
130687 },
130688 .extra_temps = .{
130689 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
130690 .unused,
130691 .unused,
130692 .unused,
130693 .unused,
130694 .unused,
130695 .unused,
130696 .unused,
130697 .unused,
130698 .unused,
130699 .unused,
130700 },
130701 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130702 .each = .{ .once = &.{
130703 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
130704 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
130705 .{ ._, ._sd, .mul, .dst0x, .tmp0x, ._, ._ },
130706 } },
130707 }, .{
130708 .required_features = .{ .avx, null, null, null },
130709 .dst_constraints = .{ .{ .float = .qword }, .any },
130710 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
130711 .patterns = &.{
130712 .{ .src = .{ .to_sse, .none, .none } },
130713 },
130714 .extra_temps = .{
130715 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
130716 .unused,
130717 .unused,
130718 .unused,
130719 .unused,
130720 .unused,
130721 .unused,
130722 .unused,
130723 .unused,
130724 .unused,
130725 .unused,
130726 },
130727 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130728 .each = .{ .once = &.{
130729 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
130730 .{ ._, .v_sd, .mul, .tmp0x, .src0x, .tmp0x, ._ },
130731 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
130732 .{ ._, .v_sd, .mul, .dst0x, .tmp0x, .dst0x, ._ },
130733 } },
130734 }, .{
130735 .required_features = .{ .avx, null, null, null },
130736 .dst_constraints = .{ .{ .float = .qword }, .any },
130737 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
130738 .patterns = &.{
130739 .{ .src = .{ .to_mem, .none, .none } },
130740 },
130741 .extra_temps = .{
130742 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130743 .unused,
130744 .unused,
130745 .unused,
130746 .unused,
130747 .unused,
130748 .unused,
130749 .unused,
130750 .unused,
130751 .unused,
130752 .unused,
130753 },
130754 .dst_temps = .{ .{ .rc = .sse }, .unused },
130755 .clobbers = .{ .eflags = true },
130756 .each = .{ .once = &.{
130757 .{ ._, ._, .mov, .tmp0p, .sia(8, .src0, .sub_unaligned_size), ._, ._ },
130758 .{ ._, .v_sd, .mov, .dst0x, .mem(.src0q), ._, ._ },
130759 .{ .@"0:", .v_sd, .mul, .dst0x, .dst0x, .memia(.src0q, .tmp0, .add_unaligned_size), ._ },
130760 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
130761 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130762 } },
130763 }, .{
130764 .required_features = .{ .sse2, null, null, null },
130765 .dst_constraints = .{ .{ .float = .qword }, .any },
130766 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
130767 .patterns = &.{
130768 .{ .src = .{ .to_mem, .none, .none } },
130769 },
130770 .extra_temps = .{
130771 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130772 .unused,
130773 .unused,
130774 .unused,
130775 .unused,
130776 .unused,
130777 .unused,
130778 .unused,
130779 .unused,
130780 .unused,
130781 .unused,
130782 },
130783 .dst_temps = .{ .{ .rc = .sse }, .unused },
130784 .clobbers = .{ .eflags = true },
130785 .each = .{ .once = &.{
130786 .{ ._, ._, .mov, .tmp0p, .sia(8, .src0, .sub_unaligned_size), ._, ._ },
130787 .{ ._, ._sd, .mov, .dst0x, .mem(.src0q), ._, ._ },
130788 .{ .@"0:", ._sd, .mul, .dst0x, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._ },
130789 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
130790 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130791 } },
130792 }, .{
130793 .required_features = .{ .x87, null, null, null },
130794 .dst_constraints = .{ .{ .float = .qword }, .any },
130795 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
130796 .patterns = &.{
130797 .{ .src = .{ .to_mem, .none, .none } },
130798 },
130799 .extra_temps = .{
130800 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130801 .{ .type = .f64, .kind = .{ .reg = .st7 } },
130802 .unused,
130803 .unused,
130804 .unused,
130805 .unused,
130806 .unused,
130807 .unused,
130808 .unused,
130809 .unused,
130810 .unused,
130811 },
130812 .dst_temps = .{ .mem, .unused },
130813 .clobbers = .{ .eflags = true },
130814 .each = .{ .once = &.{
130815 .{ ._, ._, .mov, .tmp0p, .sia(8, .src0, .sub_unaligned_size), ._, ._ },
130816 .{ ._, .f_, .ld, .mem(.src0q), ._, ._, ._ },
130817 .{ ._, ._mp, .j, .@"1f", ._, ._, ._ },
130818 .{ .pseudo, .f_cstp, .in, ._, ._, ._, ._ },
130819 .{ .@"0:", .f_, .ld, .dst0q, ._, ._, ._ },
130820 .{ .@"1:", .f_, .mul, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
130821 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
130822 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
130823 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130824 } },
130825 }, .{
130826 .required_features = .{ .x87, null, null, null },
130827 .dst_constraints = .{ .{ .float = .tbyte }, .any },
130828 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .tbyte } }, .any, .any },
130829 .patterns = &.{
130830 .{ .src = .{ .to_mem, .none, .none } },
130831 },
130832 .extra_temps = .{
130833 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130834 .{ .type = .f80, .kind = .{ .reg = .st6 } },
130835 .{ .type = .f80, .kind = .{ .reg = .st7 } },
130836 .unused,
130837 .unused,
130838 .unused,
130839 .unused,
130840 .unused,
130841 .unused,
130842 .unused,
130843 .unused,
130844 },
130845 .dst_temps = .{ .mem, .unused },
130846 .clobbers = .{ .eflags = true },
130847 .each = .{ .once = &.{
130848 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
130849 .{ ._, .f_, .ld, .mem(.src0t), ._, ._, ._ },
130850 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
130851 .{ ._, .f_p, .mul, ._, ._, ._, ._ },
130852 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
130853 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130854 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
130855 } },
130856 }, .{
130857 .required_features = .{ .avx, null, null, null },
130858 .dst_constraints = .{ .{ .float = .xword }, .any },
130859 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
130860 .patterns = &.{
130861 .{ .src = .{ .to_mem, .none, .none } },
130862 },
130863 .call_frame = .{ .alignment = .@"16" },
130864 .extra_temps = .{
130865 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130866 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
130867 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
130868 .unused,
130869 .unused,
130870 .unused,
130871 .unused,
130872 .unused,
130873 .unused,
130874 .unused,
130875 .unused,
130876 },
130877 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130878 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130879 .each = .{ .once = &.{
130880 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
130881 .{ ._, .v_dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
130882 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
130883 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130884 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
130885 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130886 } },
130887 }, .{
130888 .required_features = .{ .sse2, null, null, null },
130889 .dst_constraints = .{ .{ .float = .xword }, .any },
130890 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
130891 .patterns = &.{
130892 .{ .src = .{ .to_mem, .none, .none } },
130893 },
130894 .call_frame = .{ .alignment = .@"16" },
130895 .extra_temps = .{
130896 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130897 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
130898 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
130899 .unused,
130900 .unused,
130901 .unused,
130902 .unused,
130903 .unused,
130904 .unused,
130905 .unused,
130906 .unused,
130907 },
130908 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130909 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130910 .each = .{ .once = &.{
130911 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
130912 .{ ._, ._dqa, .mov, .dst0x, .mem(.src0x), ._, ._ },
130913 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
130914 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130915 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
130916 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130917 } },
130918 }, .{
130919 .required_features = .{ .sse, null, null, null },
130920 .dst_constraints = .{ .{ .float = .xword }, .any },
130921 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
130922 .patterns = &.{
130923 .{ .src = .{ .to_mem, .none, .none } },
130924 },
130925 .call_frame = .{ .alignment = .@"16" },
130926 .extra_temps = .{
130927 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
130928 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
130929 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__multf3" } } },
130930 .unused,
130931 .unused,
130932 .unused,
130933 .unused,
130934 .unused,
130935 .unused,
130936 .unused,
130937 .unused,
130938 },
130939 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130940 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130941 .each = .{ .once = &.{
130942 .{ ._, ._, .mov, .tmp0p, .sia(16, .src0, .sub_unaligned_size), ._, ._ },
130943 .{ ._, ._ps, .mova, .dst0x, .mem(.src0x), ._, ._ },
130944 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
130945 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130946 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
130947 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
130948 } },
130300 } },130949 } },
130301 }) catch |err| switch (err) {130950 }) catch |err| switch (err) {
130302 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{130951 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
...@@ -131253,7 +131902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -131253,7 +131902,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
131253 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },131902 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131254 .each = .{ .once = &.{131903 .each = .{ .once = &.{
131255 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },131904 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
131256 .{ ._, .v_ps, .add, .tmp0x, .src0x, .tmp0x, ._ },131905 .{ ._, .v_ss, .add, .tmp0x, .src0x, .tmp0x, ._ },
131257 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },131906 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },
131258 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },131907 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },
131259 } },131908 } },
...@@ -132014,7 +132663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132014,7 +132663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132014 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },132663 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
132015 .each = .{ .once = &.{132664 .each = .{ .once = &.{
132016 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },132665 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
132017 .{ ._, .v_pd, .add, .tmp0x, .src0x, .tmp0x, ._ },132666 .{ ._, .v_sd, .add, .tmp0x, .src0x, .tmp0x, ._ },
132018 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },132667 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
132019 .{ ._, .v_sd, .add, .dst0x, .tmp0x, .dst0x, ._ },132668 .{ ._, .v_sd, .add, .dst0x, .tmp0x, .dst0x, ._ },
132020 } },132669 } },
...@@ -133215,7 +133864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133215,7 +133864,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133215 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },133864 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
133216 .each = .{ .once = &.{133865 .each = .{ .once = &.{
133217 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },133866 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
133218 .{ ._, .v_ps, .mul, .tmp0x, .src0x, .tmp0x, ._ },133867 .{ ._, .v_ss, .mul, .tmp0x, .src0x, .tmp0x, ._ },
133219 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },133868 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },
133220 .{ ._, .v_ss, .mul, .dst0x, .tmp0x, .dst0x, ._ },133869 .{ ._, .v_ss, .mul, .dst0x, .tmp0x, .dst0x, ._ },
133221 } },133870 } },
...@@ -133701,7 +134350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -133701,7 +134350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
133701 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },134350 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
133702 .each = .{ .once = &.{134351 .each = .{ .once = &.{
133703 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },134352 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
133704 .{ ._, .v_pd, .mul, .tmp0x, .src0x, .tmp0x, ._ },134353 .{ ._, .v_sd, .mul, .tmp0x, .src0x, .tmp0x, ._ },
133705 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },134354 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
133706 .{ ._, .v_sd, .mul, .dst0x, .tmp0x, .dst0x, ._ },134355 .{ ._, .v_sd, .mul, .dst0x, .tmp0x, .dst0x, ._ },
133707 } },134356 } },
test/behavior/x86_64/unary.zig+1
...@@ -5109,6 +5109,7 @@ inline fn reduceMul(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child...@@ -5109,6 +5109,7 @@ inline fn reduceMul(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child
5109test reduceMul {5109test reduceMul {
5110 const test_reduce_mul = unary(reduceMul, .{});5110 const test_reduce_mul = unary(reduceMul, .{});
5111 try test_reduce_mul.testIntVectors();5111 try test_reduce_mul.testIntVectors();
5112 try test_reduce_mul.testFloatVectors();
5112}5113}
51135114
5114inline fn reduceAddOptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {5115inline fn reduceAddOptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {