authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-28 05:33:14-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-28 15:10:22-04:00
log9f9e7e398f045c08a6652920af741c9f6569689e
tree2c6a1420d007f4fffbb15a12e1ae7363da35f52d
parentf5a1aaf2fc4f6987ce56c27bf19fb825addeff0b

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


3 files changed, 2325 insertions(+), 16 deletions(-)

src/arch/x86_64/CodeGen.zig+2321-13
...@@ -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(27_800);2392 @setEvalBranchQuota(28_600);
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;
...@@ -117436,15 +117436,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -117436,15 +117436,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
117436 };117436 };
117437 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);117437 try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
117438 },117438 },
117439 .reduce => |air_tag| if (use_old) try cg.airReduce(inst) else fallback: {117439 .reduce => |air_tag| if (use_old) try cg.airReduce(inst) else {
117440 const nan = std.math.nan(f16);117440 const nan = std.math.nan(f16);
117441 const reduce = air_datas[@intFromEnum(inst)].reduce;117441 const reduce = air_datas[@intFromEnum(inst)].reduce;
117442 const res_ty = cg.typeOfIndex(inst);117442 const res_ty = cg.typeOfIndex(inst);
117443 switch (reduce.operation) {
117444 .And, .Or, .Xor, .Min => {},
117445 .Max => if (cg.floatBits(res_ty)) |_| break :fallback try cg.airReduce(inst),
117446 .Add, .Mul => {},
117447 }
117448 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});117443 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});
117449 var res: [1]Temp = undefined;117444 var res: [1]Temp = undefined;
117450 cg.select(&res, &.{res_ty}, &ops, switch (reduce.operation) {117445 cg.select(&res, &.{res_ty}, &ops, switch (reduce.operation) {
...@@ -132294,7 +132289,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132294,7 +132289,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132294 },132289 },
132295 .extra_temps = .{132290 .extra_temps = .{
132296 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },132291 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
132297 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },132292 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
132298 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },132293 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
132299 .unused,132294 .unused,
132300 .unused,132295 .unused,
...@@ -132472,7 +132467,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132472,7 +132467,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132472 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },132467 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
132473 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },132468 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
132474 .{ .type = .vector_2_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } },132469 .{ .type = .vector_2_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = nan } } },
132475 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },132470 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
132476 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },132471 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
132477 .unused,132472 .unused,
132478 .unused,132473 .unused,
...@@ -132620,7 +132615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132620,7 +132615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132620 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },132615 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
132621 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },132616 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
132622 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },132617 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
132623 .{ ._, .f_, .st, .tmp1t, ._, ._, ._ },132618 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
132624 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },132619 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },
132625 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },132620 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
132626 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },132621 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
...@@ -132660,7 +132655,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132660,7 +132655,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132660 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },132655 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
132661 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },132656 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
132662 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },132657 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
132663 .{ ._, .f_, .st, .tmp1t, ._, ._, ._ },132658 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
132664 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },132659 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },
132665 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },132660 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
132666 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },132661 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
...@@ -132735,7 +132730,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132735,7 +132730,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132735 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },132730 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
132736 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },132731 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
132737 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },132732 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
132738 .{ ._, .f_, .st, .tmp1t, ._, ._, ._ },132733 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
132739 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },132734 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },
132740 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },132735 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
132741 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },132736 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
...@@ -132775,7 +132770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -132775,7 +132770,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
132775 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },132770 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
132776 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },132771 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
132777 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },132772 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
132778 .{ ._, .f_, .st, .tmp1t, ._, ._, ._ },132773 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
132779 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },132774 .{ .@"1:", .f_p, .st, .tmp2t, ._, ._, ._ },
132780 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },132775 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
132781 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },132776 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
...@@ -140689,6 +140684,2319 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -140689,6 +140684,2319 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
140689 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },140684 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
140690 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },140685 .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
140691 } },140686 } },
140687 }, .{
140688 .required_features = .{ .f16c, null, null, null },
140689 .dst_constraints = .{ .{ .float = .word }, .any },
140690 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
140691 .patterns = &.{
140692 .{ .src = .{ .mem, .none, .none } },
140693 .{ .src = .{ .to_sse, .none, .none } },
140694 },
140695 .extra_temps = .{
140696 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
140697 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
140698 .unused,
140699 .unused,
140700 .unused,
140701 .unused,
140702 .unused,
140703 .unused,
140704 .unused,
140705 .unused,
140706 .unused,
140707 },
140708 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140709 .each = .{ .once = &.{
140710 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
140711 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
140712 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140713 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140714 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140715 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140716 } },
140717 }, .{
140718 .required_features = .{ .f16c, null, null, null },
140719 .dst_constraints = .{ .{ .float = .word }, .any },
140720 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
140721 .patterns = &.{
140722 .{ .src = .{ .mem, .none, .none } },
140723 .{ .src = .{ .to_sse, .none, .none } },
140724 },
140725 .extra_temps = .{
140726 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
140727 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
140728 .unused,
140729 .unused,
140730 .unused,
140731 .unused,
140732 .unused,
140733 .unused,
140734 .unused,
140735 .unused,
140736 .unused,
140737 },
140738 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140739 .each = .{ .once = &.{
140740 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
140741 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) },
140742 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140743 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140744 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140745 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
140746 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140747 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140748 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140749 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140750 } },
140751 }, .{
140752 .required_features = .{ .f16c, null, null, null },
140753 .dst_constraints = .{ .{ .float = .word }, .any },
140754 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
140755 .patterns = &.{
140756 .{ .src = .{ .mem, .none, .none } },
140757 .{ .src = .{ .to_sse, .none, .none } },
140758 },
140759 .extra_temps = .{
140760 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
140761 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
140762 .unused,
140763 .unused,
140764 .unused,
140765 .unused,
140766 .unused,
140767 .unused,
140768 .unused,
140769 .unused,
140770 .unused,
140771 },
140772 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140773 .each = .{ .once = &.{
140774 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
140775 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) },
140776 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140777 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140778 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140779 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
140780 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140781 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140782 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140783 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140784 } },
140785 }, .{
140786 .required_features = .{ .f16c, null, null, null },
140787 .dst_constraints = .{ .{ .float = .word }, .any },
140788 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
140789 .patterns = &.{
140790 .{ .src = .{ .to_sse, .none, .none } },
140791 },
140792 .extra_temps = .{
140793 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
140794 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
140795 .{ .type = .vector_8_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
140796 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140797 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140798 .unused,
140799 .unused,
140800 .unused,
140801 .unused,
140802 .unused,
140803 .unused,
140804 },
140805 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140806 .each = .{ .once = &.{
140807 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
140808 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
140809 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
140810 .{ ._, .v_ps, .@"or", .dst0x, .src0x, .lea(.tmp0x), ._ },
140811 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
140812 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
140813 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140814 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
140815 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
140816 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) },
140817 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140818 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
140819 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
140820 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
140821 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140822 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
140823 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
140824 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140825 } },
140826 }, .{
140827 .required_features = .{ .f16c, null, null, null },
140828 .dst_constraints = .{ .{ .float = .word }, .any },
140829 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
140830 .patterns = &.{
140831 .{ .src = .{ .mem, .none, .none } },
140832 .{ .src = .{ .to_sse, .none, .none } },
140833 },
140834 .extra_temps = .{
140835 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140836 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140837 .unused,
140838 .unused,
140839 .unused,
140840 .unused,
140841 .unused,
140842 .unused,
140843 .unused,
140844 .unused,
140845 .unused,
140846 },
140847 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140848 .each = .{ .once = &.{
140849 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
140850 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
140851 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140852 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140853 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140854 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) },
140855 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140856 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140857 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140858 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
140859 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140860 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140861 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140862 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140863 } },
140864 }, .{
140865 .required_features = .{ .f16c, null, null, null },
140866 .dst_constraints = .{ .{ .float = .word }, .any },
140867 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
140868 .patterns = &.{
140869 .{ .src = .{ .to_sse, .none, .none } },
140870 },
140871 .extra_temps = .{
140872 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
140873 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
140874 .{ .type = .vector_16_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
140875 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140876 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140877 .unused,
140878 .unused,
140879 .unused,
140880 .unused,
140881 .unused,
140882 .unused,
140883 },
140884 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140885 .each = .{ .once = &.{
140886 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
140887 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
140888 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
140889 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
140890 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
140891 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
140892 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
140893 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
140894 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
140895 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
140896 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
140897 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140898 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
140899 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
140900 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) },
140901 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140902 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
140903 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
140904 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
140905 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140906 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
140907 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
140908 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140909 } },
140910 }, .{
140911 .required_features = .{ .f16c, null, null, null },
140912 .dst_constraints = .{ .{ .float = .word }, .any },
140913 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
140914 .patterns = &.{
140915 .{ .src = .{ .to_sse, .none, .none } },
140916 },
140917 .extra_temps = .{
140918 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140919 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140920 .unused,
140921 .unused,
140922 .unused,
140923 .unused,
140924 .unused,
140925 .unused,
140926 .unused,
140927 .unused,
140928 .unused,
140929 },
140930 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
140931 .each = .{ .once = &.{
140932 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
140933 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
140934 .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ },
140935 .{ ._, .v_ps, .max, .tmp1y, .dst0y, .tmp0y, ._ },
140936 .{ ._, .v_ps, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) },
140937 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y },
140938 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
140939 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140940 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140941 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140942 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) },
140943 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140944 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140945 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140946 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
140947 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
140948 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
140949 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
140950 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
140951 } },
140952 }, .{
140953 .required_features = .{ .avx512f, null, null, null },
140954 .dst_constraints = .{ .{ .float = .word }, .any },
140955 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any },
140956 .patterns = &.{
140957 .{ .src = .{ .to_mem, .none, .none } },
140958 },
140959 .extra_temps = .{
140960 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
140961 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
140962 .{ .type = .vector_32_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
140963 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140964 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140965 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
140966 .unused,
140967 .unused,
140968 .unused,
140969 .unused,
140970 .unused,
140971 },
140972 .dst_temps = .{ .{ .rc = .sse }, .unused },
140973 .each = .{ .once = &.{
140974 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
140975 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
140976 .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ },
140977 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
140978 .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ },
140979 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ },
140980 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
140981 .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ },
140982 .{ ._, .v_f128, .extract, .tmp4x, .tmp3y, .ui(1), ._ },
140983 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
140984 .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ },
140985 .{ ._, .v_ps, .max, .tmp5y, .tmp3y, .tmp4y, ._ },
140986 .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) },
140987 .{ ._, .v_ps, .blendv, .tmp3y, .tmp3y, .tmp5y, .tmp4y },
140988 .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ },
140989 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
140990 .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ },
140991 .{ ._, .v_ps, .max, .tmp5y, .dst0y, .tmp4y, ._ },
140992 .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) },
140993 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp5y, .tmp4y },
140994 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
140995 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
140996 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
140997 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
140998 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
140999 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141000 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141001 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) },
141002 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141003 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141004 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141005 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
141006 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141007 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141008 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141009 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
141010 } },
141011 }, .{
141012 .required_features = .{ .avx512f, null, null, null },
141013 .dst_constraints = .{ .{ .float = .word }, .any },
141014 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any },
141015 .patterns = &.{
141016 .{ .src = .{ .to_mem, .none, .none } },
141017 },
141018 .extra_temps = .{
141019 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141020 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141021 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141022 .unused,
141023 .unused,
141024 .unused,
141025 .unused,
141026 .unused,
141027 .unused,
141028 .unused,
141029 .unused,
141030 },
141031 .dst_temps = .{ .{ .rc = .sse }, .unused },
141032 .each = .{ .once = &.{
141033 .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ },
141034 .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ },
141035 .{ ._, .v_f128, .extract, .tmp1x, .tmp0y, .ui(1), ._ },
141036 .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ },
141037 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
141038 .{ ._, .v_ps, .max, .tmp2y, .tmp0y, .tmp1y, ._ },
141039 .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) },
141040 .{ ._, .v_ps, .blendv, .tmp0y, .tmp0y, .tmp2y, .tmp1y },
141041 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
141042 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
141043 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
141044 .{ ._, .v_ps, .max, .tmp2y, .dst0y, .tmp1y, ._ },
141045 .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) },
141046 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y },
141047 .{ ._, .v_ps, .max, .tmp1y, .dst0y, .tmp0y, ._ },
141048 .{ ._, .v_ps, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) },
141049 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y },
141050 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
141051 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141052 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141053 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141054 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10) },
141055 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141056 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141057 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141058 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
141059 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141060 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141061 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141062 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
141063 } },
141064 }, .{
141065 .required_features = .{ .f16c, null, null, null },
141066 .dst_constraints = .{ .{ .float = .word }, .any },
141067 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
141068 .patterns = &.{
141069 .{ .src = .{ .to_mem, .none, .none } },
141070 },
141071 .extra_temps = .{
141072 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141073 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141074 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141075 .unused,
141076 .unused,
141077 .unused,
141078 .unused,
141079 .unused,
141080 .unused,
141081 .unused,
141082 .unused,
141083 },
141084 .dst_temps = .{ .{ .rc = .sse }, .unused },
141085 .clobbers = .{ .eflags = true },
141086 .each = .{ .once = &.{
141087 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
141088 .{ ._, .v_ps, .cvtph2, .dst0y, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
141089 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
141090 .{ ._, .v_ps, .max, .tmp2y, .dst0y, .tmp1y, ._ },
141091 .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) },
141092 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y },
141093 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
141094 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141095 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
141096 .{ ._, .v_ps, .max, .tmp2x, .dst0x, .tmp1x, ._ },
141097 .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
141098 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
141099 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10) },
141100 .{ ._, .v_ps, .max, .tmp2x, .dst0x, .tmp1x, ._ },
141101 .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
141102 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
141103 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) },
141104 .{ ._, .v_ss, .max, .tmp2x, .dst0x, .tmp1x, ._ },
141105 .{ ._, .v_ss, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
141106 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
141107 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
141108 } },
141109 }, .{
141110 .required_features = .{ .avx512f, null, null, null },
141111 .dst_constraints = .{ .{ .float = .word }, .any },
141112 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any },
141113 .patterns = &.{
141114 .{ .src = .{ .to_mem, .none, .none } },
141115 },
141116 .extra_temps = .{
141117 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141118 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
141119 .{ .type = .vector_32_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
141120 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141121 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141122 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141123 .unused,
141124 .unused,
141125 .unused,
141126 .unused,
141127 .unused,
141128 },
141129 .dst_temps = .{ .{ .rc = .sse }, .unused },
141130 .clobbers = .{ .eflags = true },
141131 .each = .{ .once = &.{
141132 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
141133 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
141134 .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ },
141135 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
141136 .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ },
141137 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ },
141138 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
141139 .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ },
141140 .{ ._, ._, .mov, .tmp0d, .sia(-80, .src0, .add_size), ._, ._ },
141141 .{ ._, .v_f128, .extract, .tmp4x, .tmp3y, .ui(1), ._ },
141142 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
141143 .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ },
141144 .{ ._, .v_ps, .max, .tmp5y, .tmp3y, .tmp4y, ._ },
141145 .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) },
141146 .{ ._, .v_ps, .blendv, .tmp3y, .tmp3y, .tmp5y, .tmp4y },
141147 .{ ._, .v_f128, .extract, .tmp4x, .dst0y, .ui(1), ._ },
141148 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
141149 .{ ._, .v_ps, .cvtph2, .tmp4y, .tmp4x, ._, ._ },
141150 .{ ._, .v_ps, .max, .tmp5y, .dst0y, .tmp4y, ._ },
141151 .{ ._, .v_ps, .cmp, .tmp4y, .tmp4y, .tmp4y, .vp(.ord) },
141152 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp5y, .tmp4y },
141153 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141154 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141155 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141156 .{ .@"0:", .v_ps, .cvtph2, .tmp3y, .memi(.src0x, .tmp0), ._, ._ },
141157 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141158 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141159 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141160 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
141161 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141162 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
141163 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141164 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141165 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141166 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) },
141167 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141168 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141169 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141170 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
141171 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141172 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141173 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141174 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
141175 } },
141176 }, .{
141177 .required_features = .{ .f16c, null, null, null },
141178 .dst_constraints = .{ .{ .float = .word }, .any },
141179 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
141180 .patterns = &.{
141181 .{ .src = .{ .to_mem, .none, .none } },
141182 },
141183 .extra_temps = .{
141184 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141185 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
141186 .{ .type = .vector_16_f16, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
141187 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141188 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141189 .unused,
141190 .unused,
141191 .unused,
141192 .unused,
141193 .unused,
141194 .unused,
141195 },
141196 .dst_temps = .{ .{ .rc = .sse }, .unused },
141197 .clobbers = .{ .eflags = true },
141198 .each = .{ .once = &.{
141199 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
141200 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
141201 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
141202 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
141203 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
141204 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
141205 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
141206 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
141207 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
141208 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141209 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141210 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141211 .{ .@"0:", .v_ps, .cvtph2, .tmp3y, .memi(.src0x, .tmp0), ._, ._ },
141212 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141213 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141214 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141215 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
141216 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141217 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
141218 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141219 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141220 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141221 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b11_10) },
141222 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141223 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141224 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141225 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
141226 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141227 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141228 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141229 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
141230 } },
141231 }, .{
141232 .required_features = .{ .avx, null, null, null },
141233 .dst_constraints = .{ .{ .float = .word }, .any },
141234 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
141235 .patterns = &.{
141236 .{ .src = .{ .to_mem, .none, .none } },
141237 },
141238 .call_frame = .{ .alignment = .@"16" },
141239 .extra_temps = .{
141240 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141241 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
141242 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
141243 .unused,
141244 .unused,
141245 .unused,
141246 .unused,
141247 .unused,
141248 .unused,
141249 .unused,
141250 .unused,
141251 },
141252 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
141253 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141254 .each = .{ .once = &.{
141255 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
141256 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
141257 .{ ._, .vp_w, .insr, .dst0x, .dst0x, .memad(.src0w, .add_unaligned_size, -2), .ui(0) },
141258 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
141259 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
141260 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
141261 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
141262 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141263 } },
141264 }, .{
141265 .required_features = .{ .sse2, null, null, null },
141266 .dst_constraints = .{ .{ .float = .word }, .any },
141267 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
141268 .patterns = &.{
141269 .{ .src = .{ .to_mem, .none, .none } },
141270 },
141271 .call_frame = .{ .alignment = .@"16" },
141272 .extra_temps = .{
141273 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141274 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
141275 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
141276 .unused,
141277 .unused,
141278 .unused,
141279 .unused,
141280 .unused,
141281 .unused,
141282 .unused,
141283 .unused,
141284 },
141285 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
141286 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141287 .each = .{ .once = &.{
141288 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
141289 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
141290 .{ ._, .p_w, .insr, .dst0x, .memad(.src0w, .add_unaligned_size, -2), .ui(0), ._ },
141291 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
141292 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
141293 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
141294 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
141295 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141296 } },
141297 }, .{
141298 .required_features = .{ .sse, null, null, null },
141299 .dst_constraints = .{ .{ .float = .word }, .any },
141300 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
141301 .patterns = &.{
141302 .{ .src = .{ .to_mem, .none, .none } },
141303 },
141304 .call_frame = .{ .alignment = .@"16" },
141305 .extra_temps = .{
141306 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141307 .{ .type = .f16, .kind = .{ .reg = .ax } },
141308 .{ .type = .f32, .kind = .mem },
141309 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
141310 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__fmaxh" } } },
141311 .unused,
141312 .unused,
141313 .unused,
141314 .unused,
141315 .unused,
141316 .unused,
141317 },
141318 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
141319 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
141320 .each = .{ .once = &.{
141321 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
141322 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
141323 .{ ._, ._, .movzx, .tmp1d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ },
141324 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
141325 .{ ._, ._ss, .mov, .dst0x, .mem(.tmp2d), ._, ._ },
141326 .{ .@"0:", ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
141327 .{ ._, ._ss, .mov, .tmp3x, .memi(.src0d, .tmp0), ._, ._ },
141328 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
141329 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
141330 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141331 } },
141332 }, .{
141333 .required_features = .{ .avx, null, null, null },
141334 .dst_constraints = .{ .{ .float = .dword }, .any },
141335 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
141336 .patterns = &.{
141337 .{ .src = .{ .to_sse, .none, .none } },
141338 },
141339 .extra_temps = .{
141340 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141341 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141342 .unused,
141343 .unused,
141344 .unused,
141345 .unused,
141346 .unused,
141347 .unused,
141348 .unused,
141349 .unused,
141350 .unused,
141351 },
141352 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
141353 .each = .{ .once = &.{
141354 .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01) },
141355 .{ ._, .v_ss, .max, .tmp1x, .src0x, .tmp0x, ._ },
141356 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141357 .{ ._, .v_ps, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x },
141358 } },
141359 }, .{
141360 .required_features = .{ .sse4_1, null, null, null },
141361 .dst_constraints = .{ .{ .float = .dword }, .any },
141362 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
141363 .patterns = &.{
141364 .{ .src = .{ .to_mut_sse, .none, .none } },
141365 },
141366 .extra_temps = .{
141367 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
141368 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141369 .unused,
141370 .unused,
141371 .unused,
141372 .unused,
141373 .unused,
141374 .unused,
141375 .unused,
141376 .unused,
141377 .unused,
141378 },
141379 .dst_temps = .{ .{ .ref = .src0 }, .unused },
141380 .each = .{ .once = &.{
141381 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
141382 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ },
141383 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141384 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141385 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ },
141386 .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ },
141387 } },
141388 }, .{
141389 .required_features = .{ .sse, null, null, null },
141390 .dst_constraints = .{ .{ .float = .dword }, .any },
141391 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
141392 .patterns = &.{
141393 .{ .src = .{ .to_mut_sse, .none, .none } },
141394 },
141395 .extra_temps = .{
141396 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141397 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141398 .unused,
141399 .unused,
141400 .unused,
141401 .unused,
141402 .unused,
141403 .unused,
141404 .unused,
141405 .unused,
141406 .unused,
141407 },
141408 .dst_temps = .{ .{ .ref = .src0 }, .unused },
141409 .each = .{ .once = &.{
141410 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
141411 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ },
141412 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141413 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141414 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ },
141415 .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ },
141416 .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ },
141417 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
141418 } },
141419 }, .{
141420 .required_features = .{ .avx, null, null, null },
141421 .dst_constraints = .{ .{ .float = .dword }, .any },
141422 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141423 .patterns = &.{
141424 .{ .src = .{ .to_sse, .none, .none } },
141425 },
141426 .extra_temps = .{
141427 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141428 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141429 .unused,
141430 .unused,
141431 .unused,
141432 .unused,
141433 .unused,
141434 .unused,
141435 .unused,
141436 .unused,
141437 .unused,
141438 },
141439 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
141440 .each = .{ .once = &.{
141441 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
141442 .{ ._, .v_ss, .max, .tmp1x, .src0x, .tmp0x, ._ },
141443 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141444 .{ ._, .v_ps, .blendv, .tmp0x, .src0x, .tmp1x, .tmp0x },
141445 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01) },
141446 .{ ._, .v_ss, .max, .tmp1x, .tmp0x, .dst0x, ._ },
141447 .{ ._, .v_ss, .cmp, .dst0x, .dst0x, .dst0x, .vp(.ord) },
141448 .{ ._, .v_ps, .blendv, .dst0x, .tmp0x, .tmp1x, .dst0x },
141449 } },
141450 }, .{
141451 .required_features = .{ .sse4_1, null, null, null },
141452 .dst_constraints = .{ .{ .float = .dword }, .any },
141453 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141454 .patterns = &.{
141455 .{ .src = .{ .to_mut_sse, .none, .none } },
141456 },
141457 .extra_temps = .{
141458 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
141459 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141460 .unused,
141461 .unused,
141462 .unused,
141463 .unused,
141464 .unused,
141465 .unused,
141466 .unused,
141467 .unused,
141468 .unused,
141469 },
141470 .dst_temps = .{ .{ .ref = .src0 }, .unused },
141471 .each = .{ .once = &.{
141472 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
141473 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
141474 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141475 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141476 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ },
141477 .{ ._, ._ps, .blendv, .tmp1x, .src0x, .tmp0x, ._ },
141478 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01), ._ },
141479 .{ ._, ._ps, .mova, .tmp0x, .tmp1x, ._, ._ },
141480 .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ },
141481 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141482 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ },
141483 .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ },
141484 } },
141485 }, .{
141486 .required_features = .{ .sse, null, null, null },
141487 .dst_constraints = .{ .{ .float = .dword }, .any },
141488 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141489 .patterns = &.{
141490 .{ .src = .{ .to_mut_sse, .none, .none } },
141491 },
141492 .extra_temps = .{
141493 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141494 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141495 .unused,
141496 .unused,
141497 .unused,
141498 .unused,
141499 .unused,
141500 .unused,
141501 .unused,
141502 .unused,
141503 .unused,
141504 },
141505 .dst_temps = .{ .{ .ref = .src0 }, .unused },
141506 .each = .{ .once = &.{
141507 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
141508 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
141509 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141510 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141511 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ },
141512 .{ ._, ._ps, .@"and", .tmp1x, .tmp0x, ._, ._ },
141513 .{ ._, ._ps, .andn, .tmp0x, .dst0x, ._, ._ },
141514 .{ ._, ._ps, .@"or", .tmp0x, .tmp1x, ._, ._ },
141515 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01), ._ },
141516 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141517 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141518 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ },
141519 .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ },
141520 .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ },
141521 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
141522 } },
141523 }, .{
141524 .required_features = .{ .avx, null, null, null },
141525 .dst_constraints = .{ .{ .float = .dword }, .any },
141526 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141527 .patterns = &.{
141528 .{ .src = .{ .to_sse, .none, .none } },
141529 },
141530 .extra_temps = .{
141531 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141532 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141533 .unused,
141534 .unused,
141535 .unused,
141536 .unused,
141537 .unused,
141538 .unused,
141539 .unused,
141540 .unused,
141541 .unused,
141542 },
141543 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
141544 .each = .{ .once = &.{
141545 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
141546 .{ ._, .v_ps, .max, .tmp1x, .src0x, .tmp0x, ._ },
141547 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141548 .{ ._, .v_ps, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x },
141549 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
141550 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141551 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141552 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141553 } },
141554 }, .{
141555 .required_features = .{ .sse4_1, null, null, null },
141556 .dst_constraints = .{ .{ .float = .dword }, .any },
141557 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141558 .patterns = &.{
141559 .{ .src = .{ .to_mut_sse, .none, .none } },
141560 },
141561 .extra_temps = .{
141562 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
141563 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141564 .unused,
141565 .unused,
141566 .unused,
141567 .unused,
141568 .unused,
141569 .unused,
141570 .unused,
141571 .unused,
141572 .unused,
141573 },
141574 .dst_temps = .{ .{ .ref = .src0 }, .unused },
141575 .each = .{ .once = &.{
141576 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
141577 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
141578 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141579 .{ ._, ._ps, .max, .tmp1x, .tmp0x, ._, ._ },
141580 .{ ._, ._ps, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ },
141581 .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ },
141582 .{ ._, ._ps, .mova, .tmp0x, .dst0x, ._, ._ },
141583 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ },
141584 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141585 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141586 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ },
141587 .{ ._, ._ps, .blendv, .dst0x, .tmp1x, .tmp0x, ._ },
141588 } },
141589 }, .{
141590 .required_features = .{ .sse, null, null, null },
141591 .dst_constraints = .{ .{ .float = .dword }, .any },
141592 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141593 .patterns = &.{
141594 .{ .src = .{ .to_mut_sse, .none, .none } },
141595 },
141596 .extra_temps = .{
141597 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141598 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141599 .unused,
141600 .unused,
141601 .unused,
141602 .unused,
141603 .unused,
141604 .unused,
141605 .unused,
141606 .unused,
141607 .unused,
141608 },
141609 .dst_temps = .{ .{ .ref = .src0 }, .unused },
141610 .each = .{ .once = &.{
141611 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
141612 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
141613 .{ ._, ._ps, .mova, .tmp1x, .src0x, ._, ._ },
141614 .{ ._, ._ps, .max, .tmp1x, .tmp0x, ._, ._ },
141615 .{ ._, ._ps, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ },
141616 .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ },
141617 .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ },
141618 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
141619 .{ ._, ._ps, .mova, .tmp0x, .dst0x, ._, ._ },
141620 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01), ._ },
141621 .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ },
141622 .{ ._, ._ss, .max, .tmp1x, .tmp0x, ._, ._ },
141623 .{ ._, ._ss, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ },
141624 .{ ._, ._ps, .@"and", .dst0x, .tmp0x, ._, ._ },
141625 .{ ._, ._ps, .andn, .tmp0x, .tmp1x, ._, ._ },
141626 .{ ._, ._ps, .@"or", .dst0x, .tmp0x, ._, ._ },
141627 } },
141628 }, .{
141629 .required_features = .{ .avx, null, null, null },
141630 .dst_constraints = .{ .{ .float = .dword }, .any },
141631 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
141632 .patterns = &.{
141633 .{ .src = .{ .to_sse, .none, .none } },
141634 },
141635 .extra_temps = .{
141636 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
141637 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
141638 .{ .type = .vector_8_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
141639 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141640 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141641 .unused,
141642 .unused,
141643 .unused,
141644 .unused,
141645 .unused,
141646 .unused,
141647 },
141648 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
141649 .each = .{ .once = &.{
141650 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
141651 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
141652 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
141653 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
141654 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
141655 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141656 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141657 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141658 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
141659 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141660 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141661 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141662 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
141663 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141664 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141665 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141666 } },
141667 }, .{
141668 .required_features = .{ .avx, null, null, null },
141669 .dst_constraints = .{ .{ .float = .dword }, .any },
141670 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
141671 .patterns = &.{
141672 .{ .src = .{ .to_sse, .none, .none } },
141673 },
141674 .extra_temps = .{
141675 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141676 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141677 .unused,
141678 .unused,
141679 .unused,
141680 .unused,
141681 .unused,
141682 .unused,
141683 .unused,
141684 .unused,
141685 .unused,
141686 },
141687 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
141688 .each = .{ .once = &.{
141689 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
141690 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141691 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141692 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141693 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
141694 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141695 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141696 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141697 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
141698 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141699 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141700 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141701 } },
141702 }, .{
141703 .required_features = .{ .avx512f, null, null, null },
141704 .dst_constraints = .{ .{ .float = .dword }, .any },
141705 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any },
141706 .patterns = &.{
141707 .{ .src = .{ .to_mem, .none, .none } },
141708 },
141709 .extra_temps = .{
141710 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
141711 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
141712 .{ .type = .vector_16_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
141713 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141714 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141715 .unused,
141716 .unused,
141717 .unused,
141718 .unused,
141719 .unused,
141720 .unused,
141721 },
141722 .dst_temps = .{ .{ .rc = .sse }, .unused },
141723 .each = .{ .once = &.{
141724 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
141725 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
141726 .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ },
141727 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
141728 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ },
141729 .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ },
141730 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
141731 .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ },
141732 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141733 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141734 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141735 .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
141736 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141737 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141738 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141739 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
141740 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141741 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141742 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141743 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
141744 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141745 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141746 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141747 } },
141748 }, .{
141749 .required_features = .{ .avx512f, null, null, null },
141750 .dst_constraints = .{ .{ .float = .dword }, .any },
141751 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any },
141752 .patterns = &.{
141753 .{ .src = .{ .to_mem, .none, .none } },
141754 },
141755 .extra_temps = .{
141756 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141757 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141758 .unused,
141759 .unused,
141760 .unused,
141761 .unused,
141762 .unused,
141763 .unused,
141764 .unused,
141765 .unused,
141766 .unused,
141767 },
141768 .dst_temps = .{ .{ .rc = .sse }, .unused },
141769 .each = .{ .once = &.{
141770 .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ },
141771 .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ },
141772 .{ ._, .v_ps, .max, .tmp1y, .dst0y, .tmp0y, ._ },
141773 .{ ._, .v_ps, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) },
141774 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y },
141775 .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
141776 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141777 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141778 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141779 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
141780 .{ ._, .v_ps, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141781 .{ ._, .v_ps, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141782 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141783 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01) },
141784 .{ ._, .v_ss, .max, .tmp1x, .dst0x, .tmp0x, ._ },
141785 .{ ._, .v_ss, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
141786 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
141787 } },
141788 }, .{
141789 .required_features = .{ .avx, null, null, null },
141790 .dst_constraints = .{ .{ .float = .dword }, .any },
141791 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
141792 .patterns = &.{
141793 .{ .src = .{ .to_mem, .none, .none } },
141794 },
141795 .extra_temps = .{
141796 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141797 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141798 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141799 .unused,
141800 .unused,
141801 .unused,
141802 .unused,
141803 .unused,
141804 .unused,
141805 .unused,
141806 .unused,
141807 },
141808 .dst_temps = .{ .{ .rc = .sse }, .unused },
141809 .clobbers = .{ .eflags = true },
141810 .each = .{ .once = &.{
141811 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
141812 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
141813 .{ .@"0:", .v_ps, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
141814 .{ ._, .v_ps, .max, .tmp2y, .dst0y, .tmp1y, ._ },
141815 .{ ._, .v_ps, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) },
141816 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y },
141817 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
141818 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141819 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
141820 .{ ._, .v_ps, .max, .tmp2x, .dst0x, .tmp1x, ._ },
141821 .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
141822 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
141823 .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ },
141824 .{ ._, .v_ps, .max, .tmp2x, .dst0x, .tmp1x, ._ },
141825 .{ ._, .v_ps, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
141826 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
141827 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01) },
141828 .{ ._, .v_ss, .max, .tmp2x, .dst0x, .tmp1x, ._ },
141829 .{ ._, .v_ss, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
141830 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
141831 } },
141832 }, .{
141833 .required_features = .{ .sse4_1, null, null, null },
141834 .dst_constraints = .{ .{ .float = .dword }, .any },
141835 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141836 .patterns = &.{
141837 .{ .src = .{ .to_mem, .none, .none } },
141838 },
141839 .extra_temps = .{
141840 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141841 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
141842 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141843 .unused,
141844 .unused,
141845 .unused,
141846 .unused,
141847 .unused,
141848 .unused,
141849 .unused,
141850 .unused,
141851 },
141852 .dst_temps = .{ .{ .rc = .sse }, .unused },
141853 .clobbers = .{ .eflags = true },
141854 .each = .{ .once = &.{
141855 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
141856 .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
141857 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
141858 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
141859 .{ ._, ._ps, .max, .tmp2x, .tmp1x, ._, ._ },
141860 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
141861 .{ ._, ._ps, .blendv, .dst0x, .tmp2x, .tmp1x, ._ },
141862 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
141863 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141864 .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
141865 .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ },
141866 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
141867 .{ ._, ._ps, .max, .tmp2x, .tmp1x, ._, ._ },
141868 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
141869 .{ ._, ._ps, .blendv, .dst0x, .tmp2x, .tmp1x, ._ },
141870 .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ },
141871 .{ ._, ._ps, .shuf, .tmp1x, .tmp1x, .ui(0b01), ._ },
141872 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
141873 .{ ._, ._ss, .max, .tmp2x, .tmp1x, ._, ._ },
141874 .{ ._, ._ss, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
141875 .{ ._, ._ps, .blendv, .dst0x, .tmp2x, .tmp1x, ._ },
141876 } },
141877 }, .{
141878 .required_features = .{ .sse, null, null, null },
141879 .dst_constraints = .{ .{ .float = .dword }, .any },
141880 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
141881 .patterns = &.{
141882 .{ .src = .{ .to_mem, .none, .none } },
141883 },
141884 .extra_temps = .{
141885 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141886 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141887 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141888 .unused,
141889 .unused,
141890 .unused,
141891 .unused,
141892 .unused,
141893 .unused,
141894 .unused,
141895 .unused,
141896 },
141897 .dst_temps = .{ .{ .rc = .sse }, .unused },
141898 .clobbers = .{ .eflags = true },
141899 .each = .{ .once = &.{
141900 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
141901 .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
141902 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
141903 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
141904 .{ ._, ._ps, .max, .tmp2x, .tmp1x, ._, ._ },
141905 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
141906 .{ ._, ._ps, .@"and", .dst0x, .tmp1x, ._, ._ },
141907 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
141908 .{ ._, ._ps, .@"or", .dst0x, .tmp1x, ._, ._ },
141909 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
141910 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141911 .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
141912 .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ },
141913 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
141914 .{ ._, ._ps, .max, .tmp2x, .tmp1x, ._, ._ },
141915 .{ ._, ._ps, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
141916 .{ ._, ._ps, .@"and", .dst0x, .tmp1x, ._, ._ },
141917 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
141918 .{ ._, ._ps, .@"or", .dst0x, .tmp1x, ._, ._ },
141919 .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ },
141920 .{ ._, ._ps, .shuf, .tmp1x, .tmp1x, .ui(0b01), ._ },
141921 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
141922 .{ ._, ._ss, .max, .tmp2x, .tmp1x, ._, ._ },
141923 .{ ._, ._ss, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
141924 .{ ._, ._ps, .@"and", .dst0x, .tmp1x, ._, ._ },
141925 .{ ._, ._ps, .andn, .tmp1x, .tmp2x, ._, ._ },
141926 .{ ._, ._ps, .@"or", .dst0x, .tmp1x, ._, ._ },
141927 } },
141928 }, .{
141929 .required_features = .{ .avx512f, null, null, null },
141930 .dst_constraints = .{ .{ .float = .dword }, .any },
141931 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any },
141932 .patterns = &.{
141933 .{ .src = .{ .to_mem, .none, .none } },
141934 },
141935 .extra_temps = .{
141936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141937 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
141938 .{ .type = .vector_16_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
141939 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141940 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
141941 .unused,
141942 .unused,
141943 .unused,
141944 .unused,
141945 .unused,
141946 .unused,
141947 },
141948 .dst_temps = .{ .{ .rc = .sse }, .unused },
141949 .clobbers = .{ .eflags = true },
141950 .each = .{ .once = &.{
141951 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
141952 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
141953 .{ ._, .v_ps, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ },
141954 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
141955 .{ ._, .v_ps, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ },
141956 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ },
141957 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
141958 .{ ._, .v_ps, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ },
141959 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141960 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141961 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141962 .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ },
141963 .{ .@"0:", .v_ps, .mova, .tmp3y, .memi(.src0y, .tmp0), ._, ._ },
141964 .{ ._, .v_ps, .max, .tmp4y, .dst0y, .tmp3y, ._ },
141965 .{ ._, .v_ps, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
141966 .{ ._, .v_ps, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
141967 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
141968 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
141969 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
141970 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141971 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141972 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141973 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
141974 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141975 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141976 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141977 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
141978 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
141979 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
141980 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
141981 } },
141982 }, .{
141983 .required_features = .{ .avx, null, null, null },
141984 .dst_constraints = .{ .{ .float = .dword }, .any },
141985 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
141986 .patterns = &.{
141987 .{ .src = .{ .to_mem, .none, .none } },
141988 },
141989 .extra_temps = .{
141990 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
141991 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
141992 .{ .type = .vector_8_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
141993 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141994 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
141995 .unused,
141996 .unused,
141997 .unused,
141998 .unused,
141999 .unused,
142000 .unused,
142001 },
142002 .dst_temps = .{ .{ .rc = .sse }, .unused },
142003 .clobbers = .{ .eflags = true },
142004 .each = .{ .once = &.{
142005 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142006 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
142007 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142008 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
142009 .{ ._, .v_ps, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
142010 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
142011 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
142012 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142013 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142014 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142015 .{ .@"0:", .v_ps, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ },
142016 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142017 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142018 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142019 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142020 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142021 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
142022 .{ ._, .v_ps, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142023 .{ ._, .v_ps, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142024 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142025 .{ ._, .v_ps, .shuf, .tmp3x, .dst0x, .dst0x, .ui(0b01) },
142026 .{ ._, .v_ss, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142027 .{ ._, .v_ss, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142028 .{ ._, .v_ps, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142029 } },
142030 }, .{
142031 .required_features = .{ .sse4_1, null, null, null },
142032 .dst_constraints = .{ .{ .float = .dword }, .any },
142033 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
142034 .patterns = &.{
142035 .{ .src = .{ .to_mem, .none, .none } },
142036 },
142037 .extra_temps = .{
142038 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142039 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142040 .{ .type = .vector_4_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142041 .{ .type = .vector_4_f32, .kind = .{ .reg = .xmm0 } },
142042 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
142043 .unused,
142044 .unused,
142045 .unused,
142046 .unused,
142047 .unused,
142048 .unused,
142049 },
142050 .dst_temps = .{ .{ .rc = .sse }, .unused },
142051 .clobbers = .{ .eflags = true },
142052 .each = .{ .once = &.{
142053 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142054 .{ ._, ._ps, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
142055 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142056 .{ ._, ._ps, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
142057 .{ ._, ._ps, .@"or", .dst0x, .lea(.tmp0x), ._, ._ },
142058 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
142059 .{ .@"0:", ._ps, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ },
142060 .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ },
142061 .{ ._, ._ps, .max, .tmp4x, .tmp3x, ._, ._ },
142062 .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ },
142063 .{ ._, ._ps, .blendv, .dst0x, .tmp4x, .tmp3x, ._ },
142064 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142065 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142066 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
142067 .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ },
142068 .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ },
142069 .{ ._, ._ps, .max, .tmp4x, .tmp3x, ._, ._ },
142070 .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ },
142071 .{ ._, ._ps, .blendv, .dst0x, .tmp4x, .tmp3x, ._ },
142072 .{ ._, ._ps, .mova, .tmp3x, .dst0x, ._, ._ },
142073 .{ ._, ._ps, .shuf, .tmp3x, .tmp3x, .ui(0b01), ._ },
142074 .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ },
142075 .{ ._, ._ss, .max, .tmp4x, .tmp3x, ._, ._ },
142076 .{ ._, ._ss, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ },
142077 .{ ._, ._ps, .blendv, .dst0x, .tmp4x, .tmp3x, ._ },
142078 } },
142079 }, .{
142080 .required_features = .{ .sse, null, null, null },
142081 .dst_constraints = .{ .{ .float = .dword }, .any },
142082 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
142083 .patterns = &.{
142084 .{ .src = .{ .to_mem, .none, .none } },
142085 },
142086 .extra_temps = .{
142087 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142088 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142089 .{ .type = .vector_4_f32, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142090 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
142091 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
142092 .unused,
142093 .unused,
142094 .unused,
142095 .unused,
142096 .unused,
142097 .unused,
142098 },
142099 .dst_temps = .{ .{ .rc = .sse }, .unused },
142100 .clobbers = .{ .eflags = true },
142101 .each = .{ .once = &.{
142102 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142103 .{ ._, ._ps, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
142104 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142105 .{ ._, ._ps, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
142106 .{ ._, ._ps, .@"or", .dst0x, .lea(.tmp0x), ._, ._ },
142107 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
142108 .{ .@"0:", ._ps, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ },
142109 .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ },
142110 .{ ._, ._ps, .max, .tmp4x, .tmp3x, ._, ._ },
142111 .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ },
142112 .{ ._, ._ps, .@"and", .dst0x, .tmp3x, ._, ._ },
142113 .{ ._, ._ps, .andn, .tmp3x, .tmp4x, ._, ._ },
142114 .{ ._, ._ps, .@"or", .dst0x, .tmp3x, ._, ._ },
142115 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142116 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142117 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
142118 .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ },
142119 .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ },
142120 .{ ._, ._ps, .max, .tmp4x, .tmp3x, ._, ._ },
142121 .{ ._, ._ps, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ },
142122 .{ ._, ._ps, .@"and", .dst0x, .tmp3x, ._, ._ },
142123 .{ ._, ._ps, .andn, .tmp3x, .tmp4x, ._, ._ },
142124 .{ ._, ._ps, .@"or", .dst0x, .tmp3x, ._, ._ },
142125 .{ ._, ._ps, .mova, .tmp3x, .dst0x, ._, ._ },
142126 .{ ._, ._ps, .shuf, .tmp3x, .tmp3x, .ui(0b01), ._ },
142127 .{ ._, ._ps, .mova, .tmp4x, .dst0x, ._, ._ },
142128 .{ ._, ._ss, .max, .tmp4x, .tmp3x, ._, ._ },
142129 .{ ._, ._ss, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ },
142130 .{ ._, ._ps, .@"and", .dst0x, .tmp3x, ._, ._ },
142131 .{ ._, ._ps, .andn, .tmp3x, .tmp4x, ._, ._ },
142132 .{ ._, ._ps, .@"or", .dst0x, .tmp3x, ._, ._ },
142133 } },
142134 }, .{
142135 .required_features = .{ .avx, null, null, null },
142136 .dst_constraints = .{ .{ .float = .qword }, .any },
142137 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142138 .patterns = &.{
142139 .{ .src = .{ .to_sse, .none, .none } },
142140 },
142141 .extra_temps = .{
142142 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142143 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142144 .unused,
142145 .unused,
142146 .unused,
142147 .unused,
142148 .unused,
142149 .unused,
142150 .unused,
142151 .unused,
142152 .unused,
142153 },
142154 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
142155 .each = .{ .once = &.{
142156 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
142157 .{ ._, .v_sd, .max, .tmp1x, .src0x, .tmp0x, ._ },
142158 .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
142159 .{ ._, .v_pd, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x },
142160 } },
142161 }, .{
142162 .required_features = .{ .sse4_1, null, null, null },
142163 .dst_constraints = .{ .{ .float = .qword }, .any },
142164 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142165 .patterns = &.{
142166 .{ .src = .{ .to_mut_sse, .none, .none } },
142167 },
142168 .extra_temps = .{
142169 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
142170 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142171 .unused,
142172 .unused,
142173 .unused,
142174 .unused,
142175 .unused,
142176 .unused,
142177 .unused,
142178 .unused,
142179 .unused,
142180 },
142181 .dst_temps = .{ .{ .ref = .src0 }, .unused },
142182 .each = .{ .once = &.{
142183 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
142184 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
142185 .{ ._, ._pd, .mova, .tmp1x, .src0x, ._, ._ },
142186 .{ ._, ._sd, .max, .tmp1x, .tmp0x, ._, ._ },
142187 .{ ._, ._sd, .cmp, .tmp0x, .tmp0x, .sp(.ord), ._ },
142188 .{ ._, ._pd, .blendv, .dst0x, .tmp1x, .tmp0x, ._ },
142189 } },
142190 }, .{
142191 .required_features = .{ .sse2, null, null, null },
142192 .dst_constraints = .{ .{ .float = .qword }, .any },
142193 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142194 .patterns = &.{
142195 .{ .src = .{ .to_mut_sse, .none, .none } },
142196 },
142197 .extra_temps = .{
142198 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142199 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142200 .unused,
142201 .unused,
142202 .unused,
142203 .unused,
142204 .unused,
142205 .unused,
142206 .unused,
142207 .unused,
142208 .unused,
142209 },
142210 .dst_temps = .{ .{ .ref = .src0 }, .unused },
142211 .each = .{ .once = &.{
142212 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
142213 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
142214 .{ ._, ._pd, .mova, .tmp1x, .src0x, ._, ._ },
142215 .{ ._, ._sd, .max, .tmp1x, .tmp0x, ._, ._ },
142216 .{ ._, ._sd, .cmp, .tmp0x, .tmp0x, .sp(.unord), ._ },
142217 .{ ._, ._pd, .@"and", .dst0x, .tmp0x, ._, ._ },
142218 .{ ._, ._pd, .andn, .tmp0x, .tmp1x, ._, ._ },
142219 .{ ._, ._pd, .@"or", .dst0x, .tmp0x, ._, ._ },
142220 } },
142221 }, .{
142222 .required_features = .{ .avx, null, null, null },
142223 .dst_constraints = .{ .{ .float = .qword }, .any },
142224 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
142225 .patterns = &.{
142226 .{ .src = .{ .to_sse, .none, .none } },
142227 },
142228 .extra_temps = .{
142229 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142230 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142231 .unused,
142232 .unused,
142233 .unused,
142234 .unused,
142235 .unused,
142236 .unused,
142237 .unused,
142238 .unused,
142239 .unused,
142240 },
142241 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
142242 .each = .{ .once = &.{
142243 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
142244 .{ ._, .v_sd, .max, .tmp1x, .src0x, .tmp0x, ._ },
142245 .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
142246 .{ ._, .v_pd, .blendv, .tmp0x, .src0x, .tmp1x, .tmp0x },
142247 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
142248 .{ ._, .v_sd, .max, .tmp1x, .tmp0x, .dst0x, ._ },
142249 .{ ._, .v_sd, .cmp, .dst0x, .dst0x, .dst0x, .vp(.ord) },
142250 .{ ._, .v_pd, .blendv, .dst0x, .tmp0x, .tmp1x, .dst0x },
142251 } },
142252 }, .{
142253 .required_features = .{ .avx, null, null, null },
142254 .dst_constraints = .{ .{ .float = .qword }, .any },
142255 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
142256 .patterns = &.{
142257 .{ .src = .{ .to_sse, .none, .none } },
142258 },
142259 .extra_temps = .{
142260 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142261 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142262 .unused,
142263 .unused,
142264 .unused,
142265 .unused,
142266 .unused,
142267 .unused,
142268 .unused,
142269 .unused,
142270 .unused,
142271 },
142272 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
142273 .each = .{ .once = &.{
142274 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
142275 .{ ._, .v_pd, .max, .tmp1x, .src0x, .tmp0x, ._ },
142276 .{ ._, .v_pd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
142277 .{ ._, .v_pd, .blendv, .dst0x, .src0x, .tmp1x, .tmp0x },
142278 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
142279 .{ ._, .v_sd, .max, .tmp1x, .dst0x, .tmp0x, ._ },
142280 .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
142281 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
142282 } },
142283 }, .{
142284 .required_features = .{ .avx512f, null, null, null },
142285 .dst_constraints = .{ .{ .float = .qword }, .any },
142286 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any },
142287 .patterns = &.{
142288 .{ .src = .{ .to_mem, .none, .none } },
142289 },
142290 .extra_temps = .{
142291 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
142292 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142293 .{ .type = .vector_8_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142294 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
142295 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
142296 .unused,
142297 .unused,
142298 .unused,
142299 .unused,
142300 .unused,
142301 .unused,
142302 },
142303 .dst_temps = .{ .{ .rc = .sse }, .unused },
142304 .each = .{ .once = &.{
142305 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142306 .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
142307 .{ ._, .v_pd, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ },
142308 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142309 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ },
142310 .{ ._, .v_pd, .@"and", .tmp3y, .tmp3y, .memd(.src0y, 32), ._ },
142311 .{ ._, .v_pd, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
142312 .{ ._, .v_pd, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ },
142313 .{ ._, .v_pd, .max, .tmp4y, .dst0y, .tmp3y, ._ },
142314 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
142315 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
142316 .{ ._, .v_i128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
142317 .{ ._, .v_pd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142318 .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142319 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142320 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
142321 .{ ._, .v_sd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142322 .{ ._, .v_sd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142323 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142324 } },
142325 }, .{
142326 .required_features = .{ .avx512f, null, null, null },
142327 .dst_constraints = .{ .{ .float = .qword }, .any },
142328 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any },
142329 .patterns = &.{
142330 .{ .src = .{ .to_mem, .none, .none } },
142331 },
142332 .extra_temps = .{
142333 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142334 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142335 .unused,
142336 .unused,
142337 .unused,
142338 .unused,
142339 .unused,
142340 .unused,
142341 .unused,
142342 .unused,
142343 .unused,
142344 },
142345 .dst_temps = .{ .{ .rc = .sse }, .unused },
142346 .each = .{ .once = &.{
142347 .{ ._, .v_pd, .mova, .dst0y, .mem(.src0y), ._, ._ },
142348 .{ ._, .v_pd, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ },
142349 .{ ._, .v_pd, .max, .tmp1y, .dst0y, .tmp0y, ._ },
142350 .{ ._, .v_pd, .cmp, .tmp0y, .tmp0y, .tmp0y, .vp(.ord) },
142351 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp1y, .tmp0y },
142352 .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
142353 .{ ._, .v_pd, .max, .tmp1x, .dst0x, .tmp0x, ._ },
142354 .{ ._, .v_pd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
142355 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
142356 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
142357 .{ ._, .v_sd, .max, .tmp1x, .dst0x, .tmp0x, ._ },
142358 .{ ._, .v_sd, .cmp, .tmp0x, .tmp0x, .tmp0x, .vp(.ord) },
142359 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp1x, .tmp0x },
142360 } },
142361 }, .{
142362 .required_features = .{ .avx, null, null, null },
142363 .dst_constraints = .{ .{ .float = .qword }, .any },
142364 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
142365 .patterns = &.{
142366 .{ .src = .{ .to_mem, .none, .none } },
142367 },
142368 .extra_temps = .{
142369 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142370 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142371 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142372 .unused,
142373 .unused,
142374 .unused,
142375 .unused,
142376 .unused,
142377 .unused,
142378 .unused,
142379 .unused,
142380 },
142381 .dst_temps = .{ .{ .rc = .sse }, .unused },
142382 .clobbers = .{ .eflags = true },
142383 .each = .{ .once = &.{
142384 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
142385 .{ ._, .v_pd, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
142386 .{ .@"0:", .v_pd, .mova, .tmp1y, .memi(.src0y, .tmp0), ._, ._ },
142387 .{ ._, .v_pd, .max, .tmp2y, .dst0y, .tmp1y, ._ },
142388 .{ ._, .v_pd, .cmp, .tmp1y, .tmp1y, .tmp1y, .vp(.ord) },
142389 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp2y, .tmp1y },
142390 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
142391 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142392 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
142393 .{ ._, .v_pd, .max, .tmp2x, .dst0x, .tmp1x, ._ },
142394 .{ ._, .v_pd, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
142395 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
142396 .{ ._, .v_pd, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
142397 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
142398 .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ },
142399 .{ ._, .v_sd, .max, .tmp2x, .dst0x, .tmp1x, ._ },
142400 .{ ._, .v_sd, .cmp, .tmp1x, .tmp1x, .tmp1x, .vp(.ord) },
142401 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp2x, .tmp1x },
142402 } },
142403 }, .{
142404 .required_features = .{ .sse4_1, null, null, null },
142405 .dst_constraints = .{ .{ .float = .qword }, .any },
142406 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142407 .patterns = &.{
142408 .{ .src = .{ .to_mem, .none, .none } },
142409 },
142410 .extra_temps = .{
142411 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142412 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
142413 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142414 .unused,
142415 .unused,
142416 .unused,
142417 .unused,
142418 .unused,
142419 .unused,
142420 .unused,
142421 .unused,
142422 },
142423 .dst_temps = .{ .{ .rc = .sse }, .unused },
142424 .clobbers = .{ .eflags = true },
142425 .each = .{ .once = &.{
142426 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142427 .{ ._, ._pd, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
142428 .{ .@"0:", ._pd, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
142429 .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ },
142430 .{ ._, ._pd, .max, .tmp2x, .tmp1x, ._, ._ },
142431 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
142432 .{ ._, ._pd, .blendv, .dst0x, .tmp2x, .tmp1x, ._ },
142433 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142434 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142435 .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
142436 .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ },
142437 .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ },
142438 .{ ._, ._sd, .max, .tmp2x, .tmp1x, ._, ._ },
142439 .{ ._, ._sd, .cmp, .tmp1x, .tmp1x, .sp(.ord), ._ },
142440 .{ ._, ._pd, .blendv, .dst0x, .tmp2x, .tmp1x, ._ },
142441 } },
142442 }, .{
142443 .required_features = .{ .sse2, null, null, null },
142444 .dst_constraints = .{ .{ .float = .qword }, .any },
142445 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142446 .patterns = &.{
142447 .{ .src = .{ .to_mem, .none, .none } },
142448 },
142449 .extra_temps = .{
142450 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142451 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142452 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142453 .unused,
142454 .unused,
142455 .unused,
142456 .unused,
142457 .unused,
142458 .unused,
142459 .unused,
142460 .unused,
142461 },
142462 .dst_temps = .{ .{ .rc = .sse }, .unused },
142463 .clobbers = .{ .eflags = true },
142464 .each = .{ .once = &.{
142465 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142466 .{ ._, ._pd, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
142467 .{ .@"0:", ._pd, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
142468 .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ },
142469 .{ ._, ._pd, .max, .tmp2x, .tmp1x, ._, ._ },
142470 .{ ._, ._pd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
142471 .{ ._, ._pd, .@"and", .dst0x, .tmp1x, ._, ._ },
142472 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
142473 .{ ._, ._pd, .@"or", .dst0x, .tmp1x, ._, ._ },
142474 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142475 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142476 .{ ._, ._pd, .xor, .tmp1x, .tmp1x, ._, ._ },
142477 .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ },
142478 .{ ._, ._pd, .mova, .tmp2x, .dst0x, ._, ._ },
142479 .{ ._, ._sd, .max, .tmp2x, .tmp1x, ._, ._ },
142480 .{ ._, ._sd, .cmp, .tmp1x, .tmp1x, .sp(.unord), ._ },
142481 .{ ._, ._pd, .@"and", .dst0x, .tmp1x, ._, ._ },
142482 .{ ._, ._pd, .andn, .tmp1x, .tmp2x, ._, ._ },
142483 .{ ._, ._pd, .@"or", .dst0x, .tmp1x, ._, ._ },
142484 } },
142485 }, .{
142486 .required_features = .{ .avx512f, null, null, null },
142487 .dst_constraints = .{ .{ .float = .qword }, .any },
142488 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any },
142489 .patterns = &.{
142490 .{ .src = .{ .to_mem, .none, .none } },
142491 },
142492 .extra_temps = .{
142493 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142494 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142495 .{ .type = .vector_8_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142496 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
142497 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
142498 .unused,
142499 .unused,
142500 .unused,
142501 .unused,
142502 .unused,
142503 .unused,
142504 },
142505 .dst_temps = .{ .{ .rc = .sse }, .unused },
142506 .clobbers = .{ .eflags = true },
142507 .each = .{ .once = &.{
142508 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142509 .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
142510 .{ ._, .v_pd, .mova, .tmp3y, .lead(.tmp0y, 32), ._, ._ },
142511 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142512 .{ ._, .v_pd, .@"and", .tmp3y, .tmp3y, .memad(.src0y, .add_size, -32), ._ },
142513 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ },
142514 .{ ._, .v_pd, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
142515 .{ ._, .v_pd, .@"or", .tmp3y, .tmp3y, .lead(.tmp0y, 32), ._ },
142516 .{ ._, .v_pd, .max, .tmp4y, .dst0y, .tmp3y, ._ },
142517 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
142518 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
142519 .{ ._, ._, .mov, .tmp0d, .sia(-96, .src0, .add_size), ._, ._ },
142520 .{ .@"0:", .v_pd, .mova, .tmp3y, .memi(.src0y, .tmp0), ._, ._ },
142521 .{ ._, .v_pd, .max, .tmp4y, .dst0y, .tmp3y, ._ },
142522 .{ ._, .v_pd, .cmp, .tmp3y, .tmp3y, .tmp3y, .vp(.ord) },
142523 .{ ._, .v_pd, .blendv, .dst0y, .dst0y, .tmp4y, .tmp3y },
142524 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
142525 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142526 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
142527 .{ ._, .v_pd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142528 .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142529 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142530 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
142531 .{ ._, .v_sd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142532 .{ ._, .v_sd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142533 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142534 } },
142535 }, .{
142536 .required_features = .{ .avx, null, null, null },
142537 .dst_constraints = .{ .{ .float = .qword }, .any },
142538 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
142539 .patterns = &.{
142540 .{ .src = .{ .to_mem, .none, .none } },
142541 },
142542 .extra_temps = .{
142543 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142544 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142545 .{ .type = .vector_4_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142546 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142547 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142548 .unused,
142549 .unused,
142550 .unused,
142551 .unused,
142552 .unused,
142553 .unused,
142554 },
142555 .dst_temps = .{ .{ .rc = .sse }, .unused },
142556 .clobbers = .{ .eflags = true },
142557 .each = .{ .once = &.{
142558 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142559 .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
142560 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142561 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
142562 .{ ._, .v_pd, .@"or", .dst0y, .dst0y, .lea(.tmp0y), ._ },
142563 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
142564 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
142565 .{ ._, .v_pd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142566 .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142567 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142568 .{ .@"0:", .v_pd, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ },
142569 .{ ._, .v_pd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142570 .{ ._, .v_pd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142571 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142572 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142573 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142574 .{ ._, .v_ps, .movhl, .tmp3x, .dst0x, .dst0x, ._ },
142575 .{ ._, .v_sd, .max, .tmp4x, .dst0x, .tmp3x, ._ },
142576 .{ ._, .v_sd, .cmp, .tmp3x, .tmp3x, .tmp3x, .vp(.ord) },
142577 .{ ._, .v_pd, .blendv, .dst0x, .dst0x, .tmp4x, .tmp3x },
142578 } },
142579 }, .{
142580 .required_features = .{ .sse4_1, null, null, null },
142581 .dst_constraints = .{ .{ .float = .qword }, .any },
142582 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142583 .patterns = &.{
142584 .{ .src = .{ .to_mem, .none, .none } },
142585 },
142586 .extra_temps = .{
142587 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142588 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142589 .{ .type = .vector_2_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142590 .{ .type = .vector_2_f64, .kind = .{ .reg = .xmm0 } },
142591 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142592 .unused,
142593 .unused,
142594 .unused,
142595 .unused,
142596 .unused,
142597 .unused,
142598 },
142599 .dst_temps = .{ .{ .rc = .sse }, .unused },
142600 .clobbers = .{ .eflags = true },
142601 .each = .{ .once = &.{
142602 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142603 .{ ._, ._pd, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
142604 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142605 .{ ._, ._pd, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
142606 .{ ._, ._pd, .@"or", .dst0x, .lea(.tmp0x), ._, ._ },
142607 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
142608 .{ .@"0:", ._pd, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ },
142609 .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ },
142610 .{ ._, ._pd, .max, .tmp4x, .tmp3x, ._, ._ },
142611 .{ ._, ._pd, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ },
142612 .{ ._, ._pd, .blendv, .dst0x, .tmp4x, .tmp3x, ._ },
142613 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142614 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142615 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
142616 .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ },
142617 .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ },
142618 .{ ._, ._sd, .max, .tmp4x, .tmp3x, ._, ._ },
142619 .{ ._, ._sd, .cmp, .tmp3x, .tmp3x, .sp(.ord), ._ },
142620 .{ ._, ._pd, .blendv, .dst0x, .tmp4x, .tmp3x, ._ },
142621 } },
142622 }, .{
142623 .required_features = .{ .sse2, null, null, null },
142624 .dst_constraints = .{ .{ .float = .qword }, .any },
142625 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
142626 .patterns = &.{
142627 .{ .src = .{ .to_mem, .none, .none } },
142628 },
142629 .extra_temps = .{
142630 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142631 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
142632 .{ .type = .vector_2_f64, .kind = .{ .splat_float_mem = .{ .ref = .src0, .outside = -nan } } },
142633 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142634 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
142635 .unused,
142636 .unused,
142637 .unused,
142638 .unused,
142639 .unused,
142640 .unused,
142641 },
142642 .dst_temps = .{ .{ .rc = .sse }, .unused },
142643 .clobbers = .{ .eflags = true },
142644 .each = .{ .once = &.{
142645 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
142646 .{ ._, ._pd, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
142647 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
142648 .{ ._, ._pd, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
142649 .{ ._, ._pd, .@"or", .dst0x, .lea(.tmp0x), ._, ._ },
142650 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
142651 .{ .@"0:", ._pd, .mova, .tmp3x, .memi(.src0x, .tmp0), ._, ._ },
142652 .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ },
142653 .{ ._, ._pd, .max, .tmp4x, .tmp3x, ._, ._ },
142654 .{ ._, ._pd, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ },
142655 .{ ._, ._pd, .@"and", .dst0x, .tmp3x, ._, ._ },
142656 .{ ._, ._pd, .andn, .tmp3x, .tmp4x, ._, ._ },
142657 .{ ._, ._pd, .@"or", .dst0x, .tmp3x, ._, ._ },
142658 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142659 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142660 .{ ._, ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
142661 .{ ._, ._ps, .movhl, .tmp3x, .dst0x, ._, ._ },
142662 .{ ._, ._pd, .mova, .tmp4x, .dst0x, ._, ._ },
142663 .{ ._, ._sd, .max, .tmp4x, .tmp3x, ._, ._ },
142664 .{ ._, ._sd, .cmp, .tmp3x, .tmp3x, .sp(.unord), ._ },
142665 .{ ._, ._pd, .@"and", .dst0x, .tmp3x, ._, ._ },
142666 .{ ._, ._pd, .andn, .tmp3x, .tmp4x, ._, ._ },
142667 .{ ._, ._pd, .@"or", .dst0x, .tmp3x, ._, ._ },
142668 } },
142669 }, .{
142670 .required_features = .{ .x87, .cmov, null, null },
142671 .dst_constraints = .{ .{ .float = .qword }, .any },
142672 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
142673 .patterns = &.{
142674 .{ .src = .{ .to_mem, .none, .none } },
142675 },
142676 .extra_temps = .{
142677 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142678 .{ .type = .f64, .kind = .{ .reg = .st7 } },
142679 .{ .type = .f64, .kind = .{ .reg = .st6 } },
142680 .unused,
142681 .unused,
142682 .unused,
142683 .unused,
142684 .unused,
142685 .unused,
142686 .unused,
142687 .unused,
142688 },
142689 .dst_temps = .{ .mem, .unused },
142690 .clobbers = .{ .eflags = true },
142691 .each = .{ .once = &.{
142692 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
142693 .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ },
142694 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
142695 .{ ._, .f_, .ucomi, .tmp2t, .tmp2t, ._, ._ },
142696 .{ ._, .f_u, .cmov, .tmp2t, .tmp1t, ._, ._ },
142697 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142698 .{ ._, .f_, .ucomi, .tmp2t, .tmp1t, ._, ._ },
142699 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142700 .{ ._, .f_nb, .cmov, .tmp2t, .tmp1t, ._, ._ },
142701 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },
142702 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
142703 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142704 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
142705 } },
142706 }, .{
142707 .required_features = .{ .sahf, .x87, null, null },
142708 .dst_constraints = .{ .{ .float = .qword }, .any },
142709 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
142710 .patterns = &.{
142711 .{ .src = .{ .to_mem, .none, .none } },
142712 },
142713 .extra_temps = .{
142714 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142715 .{ .type = .f64, .kind = .{ .reg = .st7 } },
142716 .{ .type = .f64, .kind = .{ .reg = .st6 } },
142717 .{ .type = .u16, .kind = .{ .reg = .ax } },
142718 .unused,
142719 .unused,
142720 .unused,
142721 .unused,
142722 .unused,
142723 .unused,
142724 .unused,
142725 },
142726 .dst_temps = .{ .mem, .unused },
142727 .clobbers = .{ .eflags = true },
142728 .each = .{ .once = &.{
142729 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
142730 .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ },
142731 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
142732 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
142733 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142734 .{ ._, ._, .sahf, ._, ._, ._, ._ },
142735 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
142736 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142737 .{ ._, .f_, .xam, ._, ._, ._, ._ },
142738 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142739 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
142740 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
142741 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142742 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
142743 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
142744 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142745 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
142746 } },
142747 }, .{
142748 .required_features = .{ .x87, null, null, null },
142749 .dst_constraints = .{ .{ .float = .qword }, .any },
142750 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
142751 .patterns = &.{
142752 .{ .src = .{ .to_mem, .none, .none } },
142753 },
142754 .extra_temps = .{
142755 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142756 .{ .type = .f64, .kind = .{ .reg = .st7 } },
142757 .{ .type = .f64, .kind = .{ .reg = .st6 } },
142758 .{ .type = .u16, .kind = .{ .reg = .ax } },
142759 .unused,
142760 .unused,
142761 .unused,
142762 .unused,
142763 .unused,
142764 .unused,
142765 .unused,
142766 },
142767 .dst_temps = .{ .mem, .unused },
142768 .clobbers = .{ .eflags = true },
142769 .each = .{ .once = &.{
142770 .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
142771 .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ },
142772 .{ .@"0:", .f_, .ld, .memi(.src0q, .tmp0), ._, ._, ._ },
142773 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
142774 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142775 .{ ._, ._, .@"test", .tmp3h, .si(0b0_000_001), ._, ._ },
142776 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
142777 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142778 .{ ._, .f_, .xam, ._, ._, ._, ._ },
142779 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142780 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
142781 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
142782 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142783 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
142784 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
142785 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142786 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
142787 } },
142788 }, .{
142789 .required_features = .{ .x87, .cmov, null, null },
142790 .dst_constraints = .{ .{ .float = .tbyte }, .any },
142791 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
142792 .patterns = &.{
142793 .{ .src = .{ .to_mem, .none, .none } },
142794 },
142795 .extra_temps = .{
142796 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142797 .{ .type = .f80, .kind = .{ .reg = .st7 } },
142798 .{ .type = .f80, .kind = .{ .reg = .st6 } },
142799 .unused,
142800 .unused,
142801 .unused,
142802 .unused,
142803 .unused,
142804 .unused,
142805 .unused,
142806 .unused,
142807 },
142808 .dst_temps = .{ .{ .rc = .x87 }, .unused },
142809 .clobbers = .{ .eflags = true },
142810 .each = .{ .once = &.{
142811 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142812 .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ },
142813 .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ },
142814 .{ ._, .f_, .ucomi, .tmp2t, .tmp2t, ._, ._ },
142815 .{ ._, .f_u, .cmov, .tmp2t, .tmp1t, ._, ._ },
142816 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142817 .{ ._, .f_, .ucomi, .tmp2t, .tmp1t, ._, ._ },
142818 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142819 .{ ._, .f_nb, .cmov, .tmp2t, .tmp1t, ._, ._ },
142820 .{ ._, .f_p, .st, .tmp1t, ._, ._, ._ },
142821 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142822 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142823 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
142824 } },
142825 }, .{
142826 .required_features = .{ .sahf, .x87, null, null },
142827 .dst_constraints = .{ .{ .float = .tbyte }, .any },
142828 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
142829 .patterns = &.{
142830 .{ .src = .{ .to_mem, .none, .none } },
142831 },
142832 .extra_temps = .{
142833 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142834 .{ .type = .f80, .kind = .{ .reg = .st7 } },
142835 .{ .type = .f80, .kind = .{ .reg = .st6 } },
142836 .{ .type = .u16, .kind = .{ .reg = .ax } },
142837 .unused,
142838 .unused,
142839 .unused,
142840 .unused,
142841 .unused,
142842 .unused,
142843 .unused,
142844 },
142845 .dst_temps = .{ .{ .rc = .x87 }, .unused },
142846 .clobbers = .{ .eflags = true },
142847 .each = .{ .once = &.{
142848 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142849 .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ },
142850 .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ },
142851 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
142852 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142853 .{ ._, ._, .sahf, ._, ._, ._, ._ },
142854 .{ ._, ._nb, .j, .@"1f", ._, ._, ._ },
142855 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142856 .{ ._, .f_, .xam, ._, ._, ._, ._ },
142857 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142858 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
142859 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
142860 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142861 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
142862 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142863 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142864 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
142865 } },
142866 }, .{
142867 .required_features = .{ .x87, null, null, null },
142868 .dst_constraints = .{ .{ .float = .tbyte }, .any },
142869 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } }, .any, .any },
142870 .patterns = &.{
142871 .{ .src = .{ .to_mem, .none, .none } },
142872 },
142873 .extra_temps = .{
142874 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142875 .{ .type = .f80, .kind = .{ .reg = .st7 } },
142876 .{ .type = .f80, .kind = .{ .reg = .st6 } },
142877 .{ .type = .u16, .kind = .{ .reg = .ax } },
142878 .unused,
142879 .unused,
142880 .unused,
142881 .unused,
142882 .unused,
142883 .unused,
142884 .unused,
142885 },
142886 .dst_temps = .{ .{ .rc = .x87 }, .unused },
142887 .clobbers = .{ .eflags = true },
142888 .each = .{ .once = &.{
142889 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142890 .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ },
142891 .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ },
142892 .{ ._, .f_, .ucom, .tmp1t, ._, ._, ._ },
142893 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142894 .{ ._, ._, .@"test", .tmp3h, .si(0b0_000_001), ._, ._ },
142895 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
142896 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142897 .{ ._, .f_, .xam, ._, ._, ._, ._ },
142898 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
142899 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
142900 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
142901 .{ ._, .f_, .xch, .tmp1t, ._, ._, ._ },
142902 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
142903 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142904 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142905 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
142906 } },
142907 }, .{
142908 .required_features = .{ .avx, null, null, null },
142909 .dst_constraints = .{ .{ .float = .xword }, .any },
142910 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
142911 .patterns = &.{
142912 .{ .src = .{ .to_mem, .none, .none } },
142913 },
142914 .call_frame = .{ .alignment = .@"16" },
142915 .extra_temps = .{
142916 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142917 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
142918 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
142919 .unused,
142920 .unused,
142921 .unused,
142922 .unused,
142923 .unused,
142924 .unused,
142925 .unused,
142926 .unused,
142927 },
142928 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
142929 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
142930 .each = .{ .once = &.{
142931 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142932 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
142933 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
142934 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
142935 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142936 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142937 } },
142938 }, .{
142939 .required_features = .{ .sse2, null, null, null },
142940 .dst_constraints = .{ .{ .float = .xword }, .any },
142941 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
142942 .patterns = &.{
142943 .{ .src = .{ .to_mem, .none, .none } },
142944 },
142945 .call_frame = .{ .alignment = .@"16" },
142946 .extra_temps = .{
142947 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142948 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
142949 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
142950 .unused,
142951 .unused,
142952 .unused,
142953 .unused,
142954 .unused,
142955 .unused,
142956 .unused,
142957 .unused,
142958 },
142959 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
142960 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
142961 .each = .{ .once = &.{
142962 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142963 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
142964 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
142965 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
142966 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142967 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142968 } },
142969 }, .{
142970 .required_features = .{ .sse, null, null, null },
142971 .dst_constraints = .{ .{ .float = .xword }, .any },
142972 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
142973 .patterns = &.{
142974 .{ .src = .{ .to_mem, .none, .none } },
142975 },
142976 .call_frame = .{ .alignment = .@"16" },
142977 .extra_temps = .{
142978 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
142979 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
142980 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "fmaxq" } } },
142981 .unused,
142982 .unused,
142983 .unused,
142984 .unused,
142985 .unused,
142986 .unused,
142987 .unused,
142988 .unused,
142989 },
142990 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
142991 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
142992 .each = .{ .once = &.{
142993 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
142994 .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
142995 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
142996 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
142997 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
142998 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
142999 } },
140692 } },143000 } },
140693 .Add => comptime &.{ .{143001 .Add => comptime &.{ .{
140694 .required_features = .{ .avx, null, null, null },143002 .required_features = .{ .avx, null, null, null },
test/behavior/vector.zig+3-3
...@@ -756,15 +756,15 @@ test "vector shift operators" {...@@ -756,15 +756,15 @@ test "vector shift operators" {
756756
757test "vector reduce operation" {757test "vector reduce operation" {
758 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO758 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
760 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO759 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
761 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO760 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
762 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO761 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
763 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;762 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
764 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;763 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
765 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;764 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
766 if (builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21091765 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isMIPS64()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/21091
767 if (builtin.cpu.arch.isSPARC()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23719766 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isSPARC()) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23719
767 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
768768
769 const S = struct {769 const S = struct {
770 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {770 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
test/behavior/x86_64/unary.zig+1
...@@ -5109,6 +5109,7 @@ inline fn reduceMax(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child...@@ -5109,6 +5109,7 @@ inline fn reduceMax(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child
5109test reduceMax {5109test reduceMax {
5110 const test_reduce_max = unary(reduceMax, .{});5110 const test_reduce_max = unary(reduceMax, .{});
5111 try test_reduce_max.testIntVectors();5111 try test_reduce_max.testIntVectors();
5112 try test_reduce_max.testFloatVectors();
5112}5113}
51135114
5114inline fn reduceAdd(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {5115inline fn reduceAdd(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {