authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-23 12:43:58-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-28 15:10:22-04:00
log612f5784cf0a02b4d3be5aaf9e3822d72e220c96
tree83784a10e7d74db1c8f1290fec949369379d9d5f
parent7c31f9d4ff56146dc21818967aab7123e0cd5dfe

x86_64: implement optimized float `@reduce(.Add)`


9 files changed, 3908 insertions(+), 660 deletions(-)

src/arch/x86_64/CodeGen.zig+3355-530
...@@ -2389,7 +2389,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2389,7 +2389,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2389}2389}
23902390
2391fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {2391fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2392 @setEvalBranchQuota(23_100);2392 @setEvalBranchQuota(23_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;
...@@ -2427,7 +2427,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -2427,7 +2427,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2427 // zig fmt: off2427 // zig fmt: off
2428 .select => try cg.airSelect(inst),2428 .select => try cg.airSelect(inst),
2429 .shuffle => try cg.airShuffle(inst),2429 .shuffle => try cg.airShuffle(inst),
2430 .reduce_optimized => try cg.airReduce(inst),
2431 // zig fmt: on2430 // zig fmt: on
24322431
2433 .arg => if (cg.debug_output != .none) {2432 .arg => if (cg.debug_output != .none) {
...@@ -67795,7 +67794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67795,7 +67794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67795 .clobbers = .{ .eflags = true },67794 .clobbers = .{ .eflags = true },
67796 .each = .{ .once = &.{67795 .each = .{ .once = &.{
67797 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },67796 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
67798 .{ ._, ._, .movbe, .dst0w, .src0w, ._, ._ },67797 .{ ._, ._be, .mov, .dst0w, .src0w, ._, ._ },
67799 } },67798 } },
67800 }, .{67799 }, .{
67801 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },67800 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
...@@ -67815,7 +67814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67815,7 +67814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67815 },67814 },
67816 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },67815 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
67817 .each = .{ .once = &.{67816 .each = .{ .once = &.{
67818 .{ ._, ._, .movbe, .dst0d, .src0d, ._, ._ },67817 .{ ._, ._be, .mov, .dst0d, .src0d, ._, ._ },
67819 } },67818 } },
67820 }, .{67819 }, .{
67821 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },67820 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
...@@ -67824,7 +67823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67824,7 +67823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67824 },67823 },
67825 .dst_temps = .{ .{ .ref = .src0 }, .unused },67824 .dst_temps = .{ .{ .ref = .src0 }, .unused },
67826 .each = .{ .once = &.{67825 .each = .{ .once = &.{
67827 .{ ._, ._, .bswap, .dst0d, ._, ._, ._ },67826 .{ ._, .b_, .swap, .dst0d, ._, ._, ._ },
67828 } },67827 } },
67829 }, .{67828 }, .{
67830 .required_features = .{ .movbe, null, null, null },67829 .required_features = .{ .movbe, null, null, null },
...@@ -67835,7 +67834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67835,7 +67834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67835 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },67834 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
67836 .clobbers = .{ .eflags = true },67835 .clobbers = .{ .eflags = true },
67837 .each = .{ .once = &.{67836 .each = .{ .once = &.{
67838 .{ ._, ._, .movbe, .dst0d, .src0d, ._, ._ },67837 .{ ._, ._be, .mov, .dst0d, .src0d, ._, ._ },
67839 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },67838 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
67840 } },67839 } },
67841 }, .{67840 }, .{
...@@ -67846,7 +67845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67846,7 +67845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67846 .dst_temps = .{ .{ .ref = .src0 }, .unused },67845 .dst_temps = .{ .{ .ref = .src0 }, .unused },
67847 .clobbers = .{ .eflags = true },67846 .clobbers = .{ .eflags = true },
67848 .each = .{ .once = &.{67847 .each = .{ .once = &.{
67849 .{ ._, ._, .bswap, .dst0d, ._, ._, ._ },67848 .{ ._, .b_, .swap, .dst0d, ._, ._, ._ },
67850 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },67849 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
67851 } },67850 } },
67852 }, .{67851 }, .{
...@@ -67858,7 +67857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67858,7 +67857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67858 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },67857 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
67859 .clobbers = .{ .eflags = true },67858 .clobbers = .{ .eflags = true },
67860 .each = .{ .once = &.{67859 .each = .{ .once = &.{
67861 .{ ._, ._, .movbe, .dst0d, .src0d, ._, ._ },67860 .{ ._, ._be, .mov, .dst0d, .src0d, ._, ._ },
67862 .{ ._, ._r, .sh, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },67861 .{ ._, ._r, .sh, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
67863 } },67862 } },
67864 }, .{67863 }, .{
...@@ -67869,7 +67868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67869,7 +67868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67869 .dst_temps = .{ .{ .ref = .src0 }, .unused },67868 .dst_temps = .{ .{ .ref = .src0 }, .unused },
67870 .clobbers = .{ .eflags = true },67869 .clobbers = .{ .eflags = true },
67871 .each = .{ .once = &.{67870 .each = .{ .once = &.{
67872 .{ ._, ._, .bswap, .dst0d, ._, ._, ._ },67871 .{ ._, .b_, .swap, .dst0d, ._, ._, ._ },
67873 .{ ._, ._r, .sh, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },67872 .{ ._, ._r, .sh, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
67874 } },67873 } },
67875 }, .{67874 }, .{
...@@ -67880,7 +67879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67880,7 +67879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67880 },67879 },
67881 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },67880 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
67882 .each = .{ .once = &.{67881 .each = .{ .once = &.{
67883 .{ ._, ._, .movbe, .dst0q, .src0q, ._, ._ },67882 .{ ._, ._be, .mov, .dst0q, .src0q, ._, ._ },
67884 } },67883 } },
67885 }, .{67884 }, .{
67886 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },67885 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
...@@ -67889,7 +67888,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67889,7 +67888,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67889 },67888 },
67890 .dst_temps = .{ .{ .ref = .src0 }, .unused },67889 .dst_temps = .{ .{ .ref = .src0 }, .unused },
67891 .each = .{ .once = &.{67890 .each = .{ .once = &.{
67892 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },67891 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
67893 } },67892 } },
67894 }, .{67893 }, .{
67895 .required_features = .{ .movbe, null, null, null },67894 .required_features = .{ .movbe, null, null, null },
...@@ -67900,7 +67899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67900,7 +67899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67900 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },67899 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
67901 .clobbers = .{ .eflags = true },67900 .clobbers = .{ .eflags = true },
67902 .each = .{ .once = &.{67901 .each = .{ .once = &.{
67903 .{ ._, ._, .movbe, .dst0q, .src0q, ._, ._ },67902 .{ ._, ._be, .mov, .dst0q, .src0q, ._, ._ },
67904 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },67903 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
67905 } },67904 } },
67906 }, .{67905 }, .{
...@@ -67911,7 +67910,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67911,7 +67910,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67911 .dst_temps = .{ .{ .ref = .src0 }, .unused },67910 .dst_temps = .{ .{ .ref = .src0 }, .unused },
67912 .clobbers = .{ .eflags = true },67911 .clobbers = .{ .eflags = true },
67913 .each = .{ .once = &.{67912 .each = .{ .once = &.{
67914 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },67913 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
67915 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },67914 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
67916 } },67915 } },
67917 }, .{67916 }, .{
...@@ -67923,7 +67922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67923,7 +67922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67923 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },67922 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
67924 .clobbers = .{ .eflags = true },67923 .clobbers = .{ .eflags = true },
67925 .each = .{ .once = &.{67924 .each = .{ .once = &.{
67926 .{ ._, ._, .movbe, .dst0q, .src0q, ._, ._ },67925 .{ ._, ._be, .mov, .dst0q, .src0q, ._, ._ },
67927 .{ ._, ._r, .sh, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },67926 .{ ._, ._r, .sh, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
67928 } },67927 } },
67929 }, .{67928 }, .{
...@@ -67934,7 +67933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67934,7 +67933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67934 .dst_temps = .{ .{ .ref = .src0 }, .unused },67933 .dst_temps = .{ .{ .ref = .src0 }, .unused },
67935 .clobbers = .{ .eflags = true },67934 .clobbers = .{ .eflags = true },
67936 .each = .{ .once = &.{67935 .each = .{ .once = &.{
67937 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },67936 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
67938 .{ ._, ._r, .sh, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },67937 .{ ._, ._r, .sh, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
67939 } },67938 } },
67940 }, .{67939 }, .{
...@@ -67962,7 +67961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67962,7 +67961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67962 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },67961 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
67963 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },67962 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
67964 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },67963 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
67965 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },67964 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
67966 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },67965 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
67967 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },67966 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
67968 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },67967 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
...@@ -67992,7 +67991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -67992,7 +67991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
67992 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },67991 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
67993 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },67992 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
67994 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },67993 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
67995 .{ ._, ._, .bswap, .tmp2q, ._, ._, ._ },67994 .{ ._, .b_, .swap, .tmp2q, ._, ._, ._ },
67996 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },67995 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
67997 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },67996 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
67998 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },67997 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
...@@ -68026,7 +68025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68026,7 +68025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68026 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },68025 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68027 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },68026 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68028 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },68027 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68029 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },68028 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
68030 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },68029 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
68031 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },68030 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
68032 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },68031 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
...@@ -68059,7 +68058,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68059,7 +68058,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68059 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },68058 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68060 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },68059 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68061 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },68060 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68062 .{ ._, ._, .bswap, .tmp2q, ._, ._, ._ },68061 .{ ._, .b_, .swap, .tmp2q, ._, ._, ._ },
68063 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },68062 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
68064 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },68063 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
68065 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },68064 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
...@@ -68091,7 +68090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68091,7 +68090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68091 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },68090 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
68092 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },68091 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
68093 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },68092 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68094 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },68093 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
68095 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },68094 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
68096 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },68095 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
68097 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },68096 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
...@@ -68122,7 +68121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68122,7 +68121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68122 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },68121 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
68123 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },68122 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
68124 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },68123 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68125 .{ ._, ._, .bswap, .tmp2q, ._, ._, ._ },68124 .{ ._, .b_, .swap, .tmp2q, ._, ._, ._ },
68126 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },68125 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
68127 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },68126 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
68128 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },68127 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
...@@ -68155,7 +68154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68155,7 +68154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68155 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },68154 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },
68156 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },68155 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68157 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },68156 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68158 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },68157 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68159 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68158 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68160 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68159 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68161 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68160 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68192,7 +68191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68192,7 +68191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68192 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },68191 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68193 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },68192 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68194 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },68193 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68195 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },68194 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
68196 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68195 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68197 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68196 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68198 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68197 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68227,7 +68226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68227,7 +68226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68227 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },68226 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
68228 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },68227 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
68229 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },68228 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68230 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },68229 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68231 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68230 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68232 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68231 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68233 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68232 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68263,7 +68262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68263,7 +68262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68263 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },68262 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
68264 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },68263 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68265 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },68264 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68266 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },68265 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
68267 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68266 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68268 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68267 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68269 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68268 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68298,7 +68297,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68298,7 +68297,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68298 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },68297 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
68299 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },68298 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },
68300 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },68299 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68301 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },68300 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68302 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68301 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68303 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68302 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68304 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68303 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68334,7 +68333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68334,7 +68333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68334 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },68333 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },
68335 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },68334 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68336 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },68335 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68337 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },68336 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
68338 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68337 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68339 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68338 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68340 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68339 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68368,7 +68367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68368,7 +68367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68368 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },68367 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
68369 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },68368 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
68370 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },68369 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
68371 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },68370 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68372 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68371 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68373 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68372 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68374 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68373 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -68403,7 +68402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -68403,7 +68402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
68403 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },68402 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
68404 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },68403 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
68405 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },68404 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68406 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },68405 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
68407 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },68406 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
68408 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },68407 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
68409 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },68408 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
...@@ -69742,7 +69741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -69742,7 +69741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
69742 .dst_temps = .{ .{ .ref = .src0 }, .unused },69741 .dst_temps = .{ .{ .ref = .src0 }, .unused },
69743 .clobbers = .{ .eflags = true },69742 .clobbers = .{ .eflags = true },
69744 .each = .{ .once = &.{69743 .each = .{ .once = &.{
69745 .{ ._, ._, .bswap, .src0d, ._, ._, ._ },69744 .{ ._, .b_, .swap, .src0d, ._, ._, ._ },
69746 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },69745 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
69747 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },69746 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },
69748 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },69747 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },
...@@ -69897,7 +69896,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -69897,7 +69896,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
69897 .dst_temps = .{ .{ .ref = .src0 }, .unused },69896 .dst_temps = .{ .{ .ref = .src0 }, .unused },
69898 .clobbers = .{ .eflags = true },69897 .clobbers = .{ .eflags = true },
69899 .each = .{ .once = &.{69898 .each = .{ .once = &.{
69900 .{ ._, ._, .bswap, .src0d, ._, ._, ._ },69899 .{ ._, .b_, .swap, .src0d, ._, ._, ._ },
69901 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },69900 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
69902 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },69901 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },
69903 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },69902 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },
...@@ -70053,7 +70052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70053,7 +70052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70053 .dst_temps = .{ .{ .ref = .src0 }, .unused },70052 .dst_temps = .{ .{ .ref = .src0 }, .unused },
70054 .clobbers = .{ .eflags = true },70053 .clobbers = .{ .eflags = true },
70055 .each = .{ .once = &.{70054 .each = .{ .once = &.{
70056 .{ ._, ._, .bswap, .src0d, ._, ._, ._ },70055 .{ ._, .b_, .swap, .src0d, ._, ._, ._ },
70057 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },70056 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
70058 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },70057 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },
70059 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },70058 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },
...@@ -70150,7 +70149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70150,7 +70149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70150 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },70149 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
70151 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },70150 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },
70152 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },70151 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },
70153 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },70152 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
70154 } },70153 } },
70155 }, .{70154 }, .{
70156 .required_features = .{ .@"64bit", null, null, null },70155 .required_features = .{ .@"64bit", null, null, null },
...@@ -70174,7 +70173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70174,7 +70173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70174 .dst_temps = .{ .{ .ref = .src0 }, .unused },70173 .dst_temps = .{ .{ .ref = .src0 }, .unused },
70175 .clobbers = .{ .eflags = true },70174 .clobbers = .{ .eflags = true },
70176 .each = .{ .once = &.{70175 .each = .{ .once = &.{
70177 .{ ._, ._, .bswap, .src0q, ._, ._, ._ },70176 .{ ._, .b_, .swap, .src0q, ._, ._, ._ },
70178 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },70177 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
70179 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },70178 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
70180 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },70179 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
...@@ -70222,7 +70221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70222,7 +70221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70222 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },70221 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
70223 .{ ._, .v_b, .gf2p8affineq, .tmp1x, .src0x, .lea(.dst0x), .ui(0) },70222 .{ ._, .v_b, .gf2p8affineq, .tmp1x, .src0x, .lea(.dst0x), .ui(0) },
70224 .{ ._, .v_q, .mov, .dst0q, .tmp1x, ._, ._ },70223 .{ ._, .v_q, .mov, .dst0q, .tmp1x, ._, ._ },
70225 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },70224 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
70226 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },70225 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
70227 } },70226 } },
70228 }, .{70227 }, .{
...@@ -70250,7 +70249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70250,7 +70249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70250 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },70249 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
70251 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },70250 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },
70252 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },70251 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },
70253 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },70252 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
70254 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },70253 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
70255 } },70254 } },
70256 }, .{70255 }, .{
...@@ -70275,7 +70274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70275,7 +70274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70275 .dst_temps = .{ .{ .ref = .src0 }, .unused },70274 .dst_temps = .{ .{ .ref = .src0 }, .unused },
70276 .clobbers = .{ .eflags = true },70275 .clobbers = .{ .eflags = true },
70277 .each = .{ .once = &.{70276 .each = .{ .once = &.{
70278 .{ ._, ._, .bswap, .src0q, ._, ._, ._ },70277 .{ ._, .b_, .swap, .src0q, ._, ._, ._ },
70279 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },70278 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
70280 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },70279 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
70281 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },70280 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
...@@ -70378,7 +70377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70378,7 +70377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70378 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },70377 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
70379 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },70378 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },
70380 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },70379 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },
70381 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },70380 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
70382 .{ ._, ._r, .sh, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },70381 .{ ._, ._r, .sh, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
70383 } },70382 } },
70384 }, .{70383 }, .{
...@@ -70403,7 +70402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70403,7 +70402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70403 .dst_temps = .{ .{ .ref = .src0 }, .unused },70402 .dst_temps = .{ .{ .ref = .src0 }, .unused },
70404 .clobbers = .{ .eflags = true },70403 .clobbers = .{ .eflags = true },
70405 .each = .{ .once = &.{70404 .each = .{ .once = &.{
70406 .{ ._, ._, .bswap, .src0q, ._, ._, ._ },70405 .{ ._, .b_, .swap, .src0q, ._, ._, ._ },
70407 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },70406 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
70408 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },70407 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
70409 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },70408 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
...@@ -70646,10 +70645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70646,10 +70645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70646 },70645 },
70647 .extra_temps = .{70646 .extra_temps = .{
70648 .{ .type = .vector_32_u8, .kind = .forward_bits_mem },70647 .{ .type = .vector_32_u8, .kind = .forward_bits_mem },
70649 .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .repeat = 2, .size = .xword } } },70648 .{ .type = .vector_16_u8, .kind = .{ .pshufb_bswap_mem = .{ .size = .xword } } },
70650 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },70649 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
70651 .unused,70650 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
70652 .unused,70651 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
70653 .unused,70652 .unused,
70654 .unused,70653 .unused,
70655 .unused,70654 .unused,
...@@ -70661,9 +70660,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70661,9 +70660,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70661 .each = .{ .once = &.{70660 .each = .{ .once = &.{
70662 .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ },70661 .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ },
70663 .{ ._, .v_b, .gf2p8affineq, .dst0y, .src0y, .lea(.tmp2y), .ui(0) },70662 .{ ._, .v_b, .gf2p8affineq, .dst0y, .src0y, .lea(.tmp2y), .ui(0) },
70663 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
70664 .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ },70664 .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ },
70665 .{ ._, .vp_b, .shuf, .dst0y, .dst0y, .lea(.tmp2y), ._ },70665 .{ ._, .v_dqa, .mov, .tmp4x, .lea(.tmp2x), ._, ._ },
70666 .{ ._, .v_pd, .perm, .dst0y, .dst0y, .ui(0b01_00_11_10), ._ },70666 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .tmp4x, ._ },
70667 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp4x, ._ },
70668 .{ ._, .v_f128, .insert, .dst0y, .tmp3y, .dst0x, .ui(1) },
70667 } },70669 } },
70668 }, .{70670 }, .{
70669 .required_features = .{ .avx2, .gfni, null, null },70671 .required_features = .{ .avx2, .gfni, null, null },
...@@ -70701,42 +70703,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70701,42 +70703,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70701 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },70703 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
70702 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },70704 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
70703 } },70705 } },
70704 }, .{
70705 .required_features = .{ .avx, .gfni, null, null },
70706 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .yword, .is = 256 } }, .any, .any },
70707 .patterns = &.{
70708 .{ .src = .{ .to_mem, .none, .none } },
70709 },
70710 .extra_temps = .{
70711 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
70712 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
70713 .{ .type = .vector_32_u8, .kind = .forward_bits_mem },
70714 .{ .type = .vector_32_u8, .kind = .{ .pshufb_bswap_mem = .{ .repeat = 2, .size = .xword } } },
70715 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
70716 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
70717 .{ .type = .vector_32_u8, .kind = .{ .rc = .sse } },
70718 .unused,
70719 .unused,
70720 .unused,
70721 .unused,
70722 },
70723 .dst_temps = .{ .mem, .unused },
70724 .clobbers = .{ .eflags = true },
70725 .each = .{ .once = &.{
70726 .{ ._, ._, .lea, .tmp0p, .mem(.tmp2), ._, ._ },
70727 .{ ._, .v_dqa, .mov, .tmp4y, .lea(.tmp0y), ._, ._ },
70728 .{ ._, ._, .lea, .tmp0p, .mem(.tmp3), ._, ._ },
70729 .{ ._, .v_dqa, .mov, .tmp5y, .lea(.tmp0y), ._, ._ },
70730 .{ ._, ._, .mov, .tmp0d, .sia(-32, .dst0, .add_size), ._, ._ },
70731 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
70732 .{ .@"0:", .v_pd, .perm, .tmp6y, .lea(.tmp1y), .ui(0b01_00_11_10), ._ },
70733 .{ ._, .v_b, .gf2p8affineq, .tmp6y, .tmp6y, .tmp4y, .ui(0) },
70734 .{ ._, .vp_b, .shuf, .tmp6y, .tmp6y, .tmp5y, ._ },
70735 .{ ._, .v_dqu, .mov, .memi(.dst0y, .tmp0), .tmp6y, ._, ._ },
70736 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 32), ._, ._ },
70737 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
70738 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
70739 } },
70740 }, .{70706 }, .{
70741 .required_features = .{ .avx, .gfni, null, null },70707 .required_features = .{ .avx, .gfni, null, null },
70742 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },70708 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
...@@ -70819,7 +70785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70819,7 +70785,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70819 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },70785 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
70820 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },70786 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
70821 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },70787 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70822 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },70788 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
70823 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },70789 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
70824 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },70790 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
70825 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },70791 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
...@@ -70870,7 +70836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70870,7 +70836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70870 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },70836 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
70871 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },70837 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
70872 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },70838 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70873 .{ ._, ._, .bswap, .tmp5q, ._, ._, ._ },70839 .{ ._, .b_, .swap, .tmp5q, ._, ._, ._ },
70874 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },70840 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
70875 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },70841 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
70876 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },70842 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
...@@ -70926,7 +70892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70926,7 +70892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70926 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },70892 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
70927 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },70893 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
70928 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },70894 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70929 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },70895 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
70930 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },70896 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
70931 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },70897 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
70932 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },70898 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
...@@ -70981,7 +70947,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -70981,7 +70947,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
70981 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },70947 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
70982 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },70948 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
70983 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },70949 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70984 .{ ._, ._, .bswap, .tmp5q, ._, ._, ._ },70950 .{ ._, .b_, .swap, .tmp5q, ._, ._, ._ },
70985 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },70951 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
70986 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },70952 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
70987 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },70953 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
...@@ -71034,7 +71000,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71034,7 +71000,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71034 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },71000 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
71035 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },71001 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
71036 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },71002 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
71037 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },71003 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
71038 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },71004 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
71039 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },71005 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
71040 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },71006 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
...@@ -71068,7 +71034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71068,7 +71034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71068 .{ ._, ._, .mov, .tmp3q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71034 .{ ._, ._, .mov, .tmp3q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71069 .{ ._, ._, .mov, .tmp4q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71035 .{ ._, ._, .mov, .tmp4q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71070 .{ .@"0:", ._, .mov, .tmp5q, .lea(.tmp1q), ._, ._ },71036 .{ .@"0:", ._, .mov, .tmp5q, .lea(.tmp1q), ._, ._ },
71071 .{ ._, ._, .bswap, .tmp5q, ._, ._, ._ },71037 .{ ._, .b_, .swap, .tmp5q, ._, ._, ._ },
71072 .{ ._, ._, .mov, .tmp6q, .tmp5q, ._, ._ },71038 .{ ._, ._, .mov, .tmp6q, .tmp5q, ._, ._ },
71073 .{ ._, ._, .@"and", .tmp6q, .tmp2q, ._, ._ },71039 .{ ._, ._, .@"and", .tmp6q, .tmp2q, ._, ._ },
71074 .{ ._, ._r, .sh, .tmp5q, .ui(4), ._, ._ },71040 .{ ._, ._r, .sh, .tmp5q, .ui(4), ._, ._ },
...@@ -71123,7 +71089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71123,7 +71089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71123 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },71089 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
71124 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71090 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71125 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71091 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71126 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },71092 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71127 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71093 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71128 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71094 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71129 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71095 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71182,7 +71148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71182,7 +71148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71182 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71148 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71183 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71149 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71184 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },71150 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71185 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },71151 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
71186 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71152 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71187 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71153 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71188 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71154 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71238,7 +71204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71238,7 +71204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71238 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },71204 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
71239 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71205 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71240 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71206 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71241 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },71207 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71242 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71208 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71243 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71209 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71244 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71210 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71295,7 +71261,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71295,7 +71261,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71295 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71261 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71296 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71262 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71297 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },71263 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71298 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },71264 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
71299 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71265 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71300 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71266 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71301 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71267 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71352,7 +71318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71352,7 +71318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71352 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },71318 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
71353 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71319 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71354 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71320 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71355 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },71321 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71356 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71322 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71357 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71323 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71358 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71324 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71410,7 +71376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71410,7 +71376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71410 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71376 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71411 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71377 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71412 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },71378 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71413 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },71379 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
71414 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71380 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71415 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71381 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71416 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71382 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71465,7 +71431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71465,7 +71431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71465 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },71431 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
71466 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71432 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71467 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71433 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71468 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },71434 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71469 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71435 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71470 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71436 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71471 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71437 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -71521,7 +71487,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -71521,7 +71487,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
71521 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },71487 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
71522 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },71488 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71523 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },71489 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71524 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },71490 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
71525 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },71491 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
71526 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },71492 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
71527 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },71493 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
...@@ -98883,7 +98849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -98883,7 +98849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
98883 .clobbers = .{ .eflags = true },98849 .clobbers = .{ .eflags = true },
98884 .each = .{ .once = &.{98850 .each = .{ .once = &.{
98885 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },98851 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98886 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },98852 .{ ._, .v_ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
98887 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },98853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
98888 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },98854 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
98889 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },98855 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
...@@ -118968,26 +118934,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -118968,26 +118934,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118968 } },118934 } },
118969 } },118935 } },
118970 } ++ [_]Select.Case{ .{118936 } ++ [_]Select.Case{ .{
118971 .required_features = .{ .sse, null, null, null },
118972 .dst_constraints = .{ .{ .int = .byte }, .any },
118973 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
118974 .patterns = &.{
118975 .{ .src = .{ .mut_mem, .none, .none } },
118976 .{ .src = .{ .mut_gpr, .none, .none } },
118977 .{ .src = .{ .to_mut_sse, .none, .none } },
118978 },
118979 .dst_temps = .{ .{ .ref = .src0 }, .unused },
118980 .each = .{ .once = &.{} },
118981 }, .{
118982 .dst_constraints = .{ .{ .int = .byte }, .any },
118983 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
118984 .patterns = &.{
118985 .{ .src = .{ .mut_mem, .none, .none } },
118986 .{ .src = .{ .to_mut_gpr, .none, .none } },
118987 },
118988 .dst_temps = .{ .{ .ref = .src0 }, .unused },
118989 .each = .{ .once = &.{} },
118990 }, .{
118991 .required_features = .{ .avx, null, null, null },118937 .required_features = .{ .avx, null, null, null },
118992 .dst_constraints = .{ .{ .int = .byte }, .any },118938 .dst_constraints = .{ .{ .int = .byte }, .any },
118993 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },118939 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
...@@ -119627,7 +119573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119627,7 +119573,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119627 .unused,119573 .unused,
119628 .unused,119574 .unused,
119629 },119575 },
119630 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },119576 .dst_temps = .{ .{ .rc = .sse }, .unused },
119631 .each = .{ .once = &.{119577 .each = .{ .once = &.{
119632 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },119578 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
119633 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },119579 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -119669,7 +119615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119669,7 +119615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119669 .unused,119615 .unused,
119670 .unused,119616 .unused,
119671 },119617 },
119672 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },119618 .dst_temps = .{ .{ .rc = .sse }, .unused },
119673 .each = .{ .once = &.{119619 .each = .{ .once = &.{
119674 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },119620 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119675 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },119621 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -119717,6 +119663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119717,6 +119663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119717 .unused,119663 .unused,
119718 },119664 },
119719 .dst_temps = .{ .{ .rc = .sse }, .unused },119665 .dst_temps = .{ .{ .rc = .sse }, .unused },
119666 .clobbers = .{ .eflags = true },
119720 .each = .{ .once = &.{119667 .each = .{ .once = &.{
119721 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },119668 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
119722 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },119669 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -119755,6 +119702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119755,6 +119702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119755 .unused,119702 .unused,
119756 },119703 },
119757 .dst_temps = .{ .{ .rc = .sse }, .unused },119704 .dst_temps = .{ .{ .rc = .sse }, .unused },
119705 .clobbers = .{ .eflags = true },
119758 .each = .{ .once = &.{119706 .each = .{ .once = &.{
119759 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },119707 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
119760 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },119708 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -119793,6 +119741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119793,6 +119741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119793 .unused,119741 .unused,
119794 },119742 },
119795 .dst_temps = .{ .{ .rc = .sse }, .unused },119743 .dst_temps = .{ .{ .rc = .sse }, .unused },
119744 .clobbers = .{ .eflags = true },
119796 .each = .{ .once = &.{119745 .each = .{ .once = &.{
119797 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },119746 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
119798 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },119747 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -119838,6 +119787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119838,6 +119787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119838 .unused,119787 .unused,
119839 },119788 },
119840 .dst_temps = .{ .{ .rc = .sse }, .unused },119789 .dst_temps = .{ .{ .rc = .sse }, .unused },
119790 .clobbers = .{ .eflags = true },
119841 .each = .{ .once = &.{119791 .each = .{ .once = &.{
119842 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },119792 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119843 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },119793 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -119897,6 +119847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119897,6 +119847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119897 .unused,119847 .unused,
119898 },119848 },
119899 .dst_temps = .{ .{ .rc = .sse }, .unused },119849 .dst_temps = .{ .{ .rc = .sse }, .unused },
119850 .clobbers = .{ .eflags = true },
119900 .each = .{ .once = &.{119851 .each = .{ .once = &.{
119901 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },119852 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119902 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },119853 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -119948,6 +119899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119948,6 +119899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119948 .unused,119899 .unused,
119949 },119900 },
119950 .dst_temps = .{ .{ .rc = .sse }, .unused },119901 .dst_temps = .{ .{ .rc = .sse }, .unused },
119902 .clobbers = .{ .eflags = true },
119951 .each = .{ .once = &.{119903 .each = .{ .once = &.{
119952 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },119904 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119953 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },119905 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -119999,6 +119951,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -119999,6 +119951,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119999 .unused,119951 .unused,
120000 },119952 },
120001 .dst_temps = .{ .{ .rc = .sse }, .unused },119953 .dst_temps = .{ .{ .rc = .sse }, .unused },
119954 .clobbers = .{ .eflags = true },
120002 .each = .{ .once = &.{119955 .each = .{ .once = &.{
120003 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },119956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120004 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },119957 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -120025,7 +119978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120025,7 +119978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120025 }, .{119978 }, .{
120026 .required_features = .{ .slow_incdec, null, null, null },119979 .required_features = .{ .slow_incdec, null, null, null },
120027 .dst_constraints = .{ .{ .int = .byte }, .any },119980 .dst_constraints = .{ .{ .int = .byte }, .any },
120028 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },119981 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
120029 .patterns = &.{119982 .patterns = &.{
120030 .{ .src = .{ .to_mem, .none, .none } },119983 .{ .src = .{ .to_mem, .none, .none } },
120031 },119984 },
...@@ -120053,7 +120006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120053,7 +120006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120053 } },120006 } },
120054 }, .{120007 }, .{
120055 .dst_constraints = .{ .{ .int = .byte }, .any },120008 .dst_constraints = .{ .{ .int = .byte }, .any },
120056 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },120009 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
120057 .patterns = &.{120010 .patterns = &.{
120058 .{ .src = .{ .to_mem, .none, .none } },120011 .{ .src = .{ .to_mem, .none, .none } },
120059 },120012 },
...@@ -120079,26 +120032,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120079,26 +120032,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120079 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },120032 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120080 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },120033 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
120081 } },120034 } },
120082 }, .{
120083 .required_features = .{ .sse, null, null, null },
120084 .dst_constraints = .{ .{ .int = .word }, .any },
120085 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
120086 .patterns = &.{
120087 .{ .src = .{ .mut_mem, .none, .none } },
120088 .{ .src = .{ .mut_gpr, .none, .none } },
120089 .{ .src = .{ .to_mut_sse, .none, .none } },
120090 },
120091 .dst_temps = .{ .{ .ref = .src0 }, .unused },
120092 .each = .{ .once = &.{} },
120093 }, .{
120094 .dst_constraints = .{ .{ .int = .word }, .any },
120095 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
120096 .patterns = &.{
120097 .{ .src = .{ .mut_mem, .none, .none } },
120098 .{ .src = .{ .to_mut_gpr, .none, .none } },
120099 },
120100 .dst_temps = .{ .{ .ref = .src0 }, .unused },
120101 .each = .{ .once = &.{} },
120102 }, .{120035 }, .{
120103 .required_features = .{ .avx, null, null, null },120036 .required_features = .{ .avx, null, null, null },
120104 .dst_constraints = .{ .{ .int = .word }, .any },120037 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -120573,7 +120506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120573,7 +120506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120573 .unused,120506 .unused,
120574 .unused,120507 .unused,
120575 },120508 },
120576 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },120509 .dst_temps = .{ .{ .rc = .sse }, .unused },
120577 .each = .{ .once = &.{120510 .each = .{ .once = &.{
120578 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },120511 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
120579 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },120512 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -120613,7 +120546,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120613,7 +120546,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120613 .unused,120546 .unused,
120614 .unused,120547 .unused,
120615 },120548 },
120616 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },120549 .dst_temps = .{ .{ .rc = .sse }, .unused },
120617 .each = .{ .once = &.{120550 .each = .{ .once = &.{
120618 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },120551 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120619 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },120552 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -120659,6 +120592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120659,6 +120592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120659 .unused,120592 .unused,
120660 },120593 },
120661 .dst_temps = .{ .{ .rc = .sse }, .unused },120594 .dst_temps = .{ .{ .rc = .sse }, .unused },
120595 .clobbers = .{ .eflags = true },
120662 .each = .{ .once = &.{120596 .each = .{ .once = &.{
120663 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },120597 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
120664 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },120598 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -120695,6 +120629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120695,6 +120629,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120695 .unused,120629 .unused,
120696 },120630 },
120697 .dst_temps = .{ .{ .rc = .sse }, .unused },120631 .dst_temps = .{ .{ .rc = .sse }, .unused },
120632 .clobbers = .{ .eflags = true },
120698 .each = .{ .once = &.{120633 .each = .{ .once = &.{
120699 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },120634 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
120700 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },120635 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -120731,6 +120666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120731,6 +120666,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120731 .unused,120666 .unused,
120732 },120667 },
120733 .dst_temps = .{ .{ .rc = .sse }, .unused },120668 .dst_temps = .{ .{ .rc = .sse }, .unused },
120669 .clobbers = .{ .eflags = true },
120734 .each = .{ .once = &.{120670 .each = .{ .once = &.{
120735 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },120671 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
120736 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },120672 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -120773,6 +120709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120773,6 +120709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120773 .unused,120709 .unused,
120774 },120710 },
120775 .dst_temps = .{ .{ .rc = .sse }, .unused },120711 .dst_temps = .{ .{ .rc = .sse }, .unused },
120712 .clobbers = .{ .eflags = true },
120776 .each = .{ .once = &.{120713 .each = .{ .once = &.{
120777 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },120714 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120778 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },120715 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -120830,6 +120767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120830,6 +120767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120830 .unused,120767 .unused,
120831 },120768 },
120832 .dst_temps = .{ .{ .rc = .sse }, .unused },120769 .dst_temps = .{ .{ .rc = .sse }, .unused },
120770 .clobbers = .{ .eflags = true },
120833 .each = .{ .once = &.{120771 .each = .{ .once = &.{
120834 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },120772 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120835 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },120773 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -120879,6 +120817,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120879,6 +120817,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120879 .unused,120817 .unused,
120880 },120818 },
120881 .dst_temps = .{ .{ .rc = .sse }, .unused },120819 .dst_temps = .{ .{ .rc = .sse }, .unused },
120820 .clobbers = .{ .eflags = true },
120882 .each = .{ .once = &.{120821 .each = .{ .once = &.{
120883 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },120822 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120884 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },120823 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -120928,6 +120867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120928,6 +120867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120928 .unused,120867 .unused,
120929 },120868 },
120930 .dst_temps = .{ .{ .rc = .sse }, .unused },120869 .dst_temps = .{ .{ .rc = .sse }, .unused },
120870 .clobbers = .{ .eflags = true },
120931 .each = .{ .once = &.{120871 .each = .{ .once = &.{
120932 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },120872 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120933 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },120873 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -120950,7 +120890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120950,7 +120890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120950 } },120890 } },
120951 }, .{120891 }, .{
120952 .dst_constraints = .{ .{ .int = .word }, .any },120892 .dst_constraints = .{ .{ .int = .word }, .any },
120953 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },120893 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
120954 .patterns = &.{120894 .patterns = &.{
120955 .{ .src = .{ .to_mem, .none, .none } },120895 .{ .src = .{ .to_mem, .none, .none } },
120956 },120896 },
...@@ -120976,26 +120916,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -120976,26 +120916,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120976 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },120916 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120977 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },120917 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
120978 } },120918 } },
120979 }, .{
120980 .required_features = .{ .sse, null, null, null },
120981 .dst_constraints = .{ .{ .int = .dword }, .any },
120982 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
120983 .patterns = &.{
120984 .{ .src = .{ .mut_mem, .none, .none } },
120985 .{ .src = .{ .mut_gpr, .none, .none } },
120986 .{ .src = .{ .to_mut_sse, .none, .none } },
120987 },
120988 .dst_temps = .{ .{ .ref = .src0 }, .unused },
120989 .each = .{ .once = &.{} },
120990 }, .{
120991 .dst_constraints = .{ .{ .int = .dword }, .any },
120992 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
120993 .patterns = &.{
120994 .{ .src = .{ .mut_mem, .none, .none } },
120995 .{ .src = .{ .to_mut_gpr, .none, .none } },
120996 },
120997 .dst_temps = .{ .{ .ref = .src0 }, .unused },
120998 .each = .{ .once = &.{} },
120999 }, .{120919 }, .{
121000 .required_features = .{ .avx, null, null, null },120920 .required_features = .{ .avx, null, null, null },
121001 .dst_constraints = .{ .{ .int = .dword }, .any },120921 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -121316,7 +121236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121316,7 +121236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121316 .unused,121236 .unused,
121317 .unused,121237 .unused,
121318 },121238 },
121319 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },121239 .dst_temps = .{ .{ .rc = .sse }, .unused },
121320 .each = .{ .once = &.{121240 .each = .{ .once = &.{
121321 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },121241 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
121322 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },121242 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -121354,7 +121274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121354,7 +121274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121354 .unused,121274 .unused,
121355 .unused,121275 .unused,
121356 },121276 },
121357 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },121277 .dst_temps = .{ .{ .rc = .sse }, .unused },
121358 .each = .{ .once = &.{121278 .each = .{ .once = &.{
121359 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121279 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121360 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },121280 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -121398,6 +121318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121398,6 +121318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121398 .unused,121318 .unused,
121399 },121319 },
121400 .dst_temps = .{ .{ .rc = .sse }, .unused },121320 .dst_temps = .{ .{ .rc = .sse }, .unused },
121321 .clobbers = .{ .eflags = true },
121401 .each = .{ .once = &.{121322 .each = .{ .once = &.{
121402 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },121323 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
121403 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },121324 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -121432,6 +121353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121432,6 +121353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121432 .unused,121353 .unused,
121433 },121354 },
121434 .dst_temps = .{ .{ .rc = .sse }, .unused },121355 .dst_temps = .{ .{ .rc = .sse }, .unused },
121356 .clobbers = .{ .eflags = true },
121435 .each = .{ .once = &.{121357 .each = .{ .once = &.{
121436 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },121358 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
121437 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },121359 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -121466,6 +121388,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121466,6 +121388,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121466 .unused,121388 .unused,
121467 },121389 },
121468 .dst_temps = .{ .{ .rc = .sse }, .unused },121390 .dst_temps = .{ .{ .rc = .sse }, .unused },
121391 .clobbers = .{ .eflags = true },
121469 .each = .{ .once = &.{121392 .each = .{ .once = &.{
121470 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },121393 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
121471 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },121394 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -121505,6 +121428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121505,6 +121428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121505 .unused,121428 .unused,
121506 },121429 },
121507 .dst_temps = .{ .{ .rc = .sse }, .unused },121430 .dst_temps = .{ .{ .rc = .sse }, .unused },
121431 .clobbers = .{ .eflags = true },
121508 .each = .{ .once = &.{121432 .each = .{ .once = &.{
121509 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121433 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121510 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },121434 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -121560,6 +121484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121560,6 +121484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121560 .unused,121484 .unused,
121561 },121485 },
121562 .dst_temps = .{ .{ .rc = .sse }, .unused },121486 .dst_temps = .{ .{ .rc = .sse }, .unused },
121487 .clobbers = .{ .eflags = true },
121563 .each = .{ .once = &.{121488 .each = .{ .once = &.{
121564 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121489 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121565 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },121490 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -121607,6 +121532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121607,6 +121532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121607 .unused,121532 .unused,
121608 },121533 },
121609 .dst_temps = .{ .{ .rc = .sse }, .unused },121534 .dst_temps = .{ .{ .rc = .sse }, .unused },
121535 .clobbers = .{ .eflags = true },
121610 .each = .{ .once = &.{121536 .each = .{ .once = &.{
121611 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121537 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121612 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },121538 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -121654,6 +121580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121654,6 +121580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121654 .unused,121580 .unused,
121655 },121581 },
121656 .dst_temps = .{ .{ .rc = .sse }, .unused },121582 .dst_temps = .{ .{ .rc = .sse }, .unused },
121583 .clobbers = .{ .eflags = true },
121657 .each = .{ .once = &.{121584 .each = .{ .once = &.{
121658 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121585 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121659 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },121586 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -121673,7 +121600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121673,7 +121600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121673 } },121600 } },
121674 }, .{121601 }, .{
121675 .dst_constraints = .{ .{ .int = .dword }, .any },121602 .dst_constraints = .{ .{ .int = .dword }, .any },
121676 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },121603 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
121677 .patterns = &.{121604 .patterns = &.{
121678 .{ .src = .{ .to_mem, .none, .none } },121605 .{ .src = .{ .to_mem, .none, .none } },
121679 },121606 },
...@@ -121699,27 +121626,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121699,27 +121626,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121699 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },121626 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
121700 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },121627 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
121701 } },121628 } },
121702 }, .{
121703 .required_features = .{ .sse, null, null, null },
121704 .dst_constraints = .{ .{ .int = .qword }, .any },
121705 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
121706 .patterns = &.{
121707 .{ .src = .{ .mut_mem, .none, .none } },
121708 .{ .src = .{ .mut_gpr, .none, .none } },
121709 .{ .src = .{ .to_mut_sse, .none, .none } },
121710 },
121711 .dst_temps = .{ .{ .ref = .src0 }, .unused },
121712 .each = .{ .once = &.{} },
121713 }, .{
121714 .required_features = .{ .@"64bit", null, null, null },
121715 .dst_constraints = .{ .{ .int = .qword }, .any },
121716 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
121717 .patterns = &.{
121718 .{ .src = .{ .mut_mem, .none, .none } },
121719 .{ .src = .{ .to_mut_gpr, .none, .none } },
121720 },
121721 .dst_temps = .{ .{ .ref = .src0 }, .unused },
121722 .each = .{ .once = &.{} },
121723 }, .{121629 }, .{
121724 .required_features = .{ .avx, null, null, null },121630 .required_features = .{ .avx, null, null, null },
121725 .dst_constraints = .{ .{ .int = .qword }, .any },121631 .dst_constraints = .{ .{ .int = .qword }, .any },
...@@ -121898,7 +121804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121898,7 +121804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121898 .unused,121804 .unused,
121899 .unused,121805 .unused,
121900 },121806 },
121901 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },121807 .dst_temps = .{ .{ .rc = .sse }, .unused },
121902 .each = .{ .once = &.{121808 .each = .{ .once = &.{
121903 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },121809 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
121904 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },121810 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -121934,7 +121840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121934,7 +121840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121934 .unused,121840 .unused,
121935 .unused,121841 .unused,
121936 },121842 },
121937 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },121843 .dst_temps = .{ .{ .rc = .sse }, .unused },
121938 .each = .{ .once = &.{121844 .each = .{ .once = &.{
121939 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121845 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121940 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },121846 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -121976,6 +121882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -121976,6 +121882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121976 .unused,121882 .unused,
121977 },121883 },
121978 .dst_temps = .{ .{ .rc = .sse }, .unused },121884 .dst_temps = .{ .{ .rc = .sse }, .unused },
121885 .clobbers = .{ .eflags = true },
121979 .each = .{ .once = &.{121886 .each = .{ .once = &.{
121980 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },121887 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
121981 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },121888 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -122008,6 +121915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122008,6 +121915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122008 .unused,121915 .unused,
122009 },121916 },
122010 .dst_temps = .{ .{ .rc = .sse }, .unused },121917 .dst_temps = .{ .{ .rc = .sse }, .unused },
121918 .clobbers = .{ .eflags = true },
122011 .each = .{ .once = &.{121919 .each = .{ .once = &.{
122012 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },121920 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122013 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },121921 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -122040,6 +121948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122040,6 +121948,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122040 .unused,121948 .unused,
122041 },121949 },
122042 .dst_temps = .{ .{ .rc = .sse }, .unused },121950 .dst_temps = .{ .{ .rc = .sse }, .unused },
121951 .clobbers = .{ .eflags = true },
122043 .each = .{ .once = &.{121952 .each = .{ .once = &.{
122044 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },121953 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
122045 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },121954 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -122077,6 +121986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122077,6 +121986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122077 .unused,121986 .unused,
122078 },121987 },
122079 .dst_temps = .{ .{ .rc = .sse }, .unused },121988 .dst_temps = .{ .{ .rc = .sse }, .unused },
121989 .clobbers = .{ .eflags = true },
122080 .each = .{ .once = &.{121990 .each = .{ .once = &.{
122081 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },121991 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122082 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },121992 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122130,6 +122040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122130,6 +122040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122130 .unused,122040 .unused,
122131 },122041 },
122132 .dst_temps = .{ .{ .rc = .sse }, .unused },122042 .dst_temps = .{ .{ .rc = .sse }, .unused },
122043 .clobbers = .{ .eflags = true },
122133 .each = .{ .once = &.{122044 .each = .{ .once = &.{
122134 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122045 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122135 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },122046 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122175,6 +122086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122175,6 +122086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122175 .unused,122086 .unused,
122176 },122087 },
122177 .dst_temps = .{ .{ .rc = .sse }, .unused },122088 .dst_temps = .{ .{ .rc = .sse }, .unused },
122089 .clobbers = .{ .eflags = true },
122178 .each = .{ .once = &.{122090 .each = .{ .once = &.{
122179 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122180 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },122092 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122220,6 +122132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122220,6 +122132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122220 .unused,122132 .unused,
122221 },122133 },
122222 .dst_temps = .{ .{ .rc = .sse }, .unused },122134 .dst_temps = .{ .{ .rc = .sse }, .unused },
122135 .clobbers = .{ .eflags = true },
122223 .each = .{ .once = &.{122136 .each = .{ .once = &.{
122224 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122137 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122225 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },122138 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -122238,7 +122151,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122238,7 +122151,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122238 }, .{122151 }, .{
122239 .required_features = .{ .@"64bit", null, null, null },122152 .required_features = .{ .@"64bit", null, null, null },
122240 .dst_constraints = .{ .{ .int = .qword }, .any },122153 .dst_constraints = .{ .{ .int = .qword }, .any },
122241 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },122154 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
122242 .patterns = &.{122155 .patterns = &.{
122243 .{ .src = .{ .to_mem, .none, .none } },122156 .{ .src = .{ .to_mem, .none, .none } },
122244 },122157 },
...@@ -122264,25 +122177,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122264,25 +122177,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122264 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },122177 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122265 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },122178 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
122266 } },122179 } },
122267 }, .{
122268 .required_features = .{ .sse, null, null, null },
122269 .dst_constraints = .{ .{ .int = .xword }, .any },
122270 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122271 .patterns = &.{
122272 .{ .src = .{ .mut_mem, .none, .none } },
122273 .{ .src = .{ .mut_gpr, .none, .none } },
122274 .{ .src = .{ .to_mut_sse, .none, .none } },
122275 },
122276 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122277 .each = .{ .once = &.{} },
122278 }, .{
122279 .dst_constraints = .{ .{ .int = .xword }, .any },
122280 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122281 .patterns = &.{
122282 .{ .src = .{ .to_mut_mem, .none, .none } },
122283 },
122284 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122285 .each = .{ .once = &.{} },
122286 }, .{122180 }, .{
122287 .required_features = .{ .avx2, null, null, null },122181 .required_features = .{ .avx2, null, null, null },
122288 .dst_constraints = .{ .{ .int = .xword }, .any },122182 .dst_constraints = .{ .{ .int = .xword }, .any },
...@@ -122353,7 +122247,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122353,7 +122247,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122353 .unused,122247 .unused,
122354 .unused,122248 .unused,
122355 },122249 },
122356 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },122250 .dst_temps = .{ .{ .rc = .sse }, .unused },
122357 .each = .{ .once = &.{122251 .each = .{ .once = &.{
122358 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },122252 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
122359 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },122253 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -122408,6 +122302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122408,6 +122302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122408 .unused,122302 .unused,
122409 },122303 },
122410 .dst_temps = .{ .{ .rc = .sse }, .unused },122304 .dst_temps = .{ .{ .rc = .sse }, .unused },
122305 .clobbers = .{ .eflags = true },
122411 .each = .{ .once = &.{122306 .each = .{ .once = &.{
122412 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },122307 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122413 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },122308 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -122438,6 +122333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122438,6 +122333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122438 .unused,122333 .unused,
122439 },122334 },
122440 .dst_temps = .{ .{ .rc = .sse }, .unused },122335 .dst_temps = .{ .{ .rc = .sse }, .unused },
122336 .clobbers = .{ .eflags = true },
122441 .each = .{ .once = &.{122337 .each = .{ .once = &.{
122442 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },122338 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122443 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },122339 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -122450,7 +122346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122450,7 +122346,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122450 }, .{122346 }, .{
122451 .required_features = .{ .sse2, null, null, null },122347 .required_features = .{ .sse2, null, null, null },
122452 .dst_constraints = .{ .{ .int = .xword }, .any },122348 .dst_constraints = .{ .{ .int = .xword }, .any },
122453 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },122349 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .xword } }, .any, .any },
122454 .patterns = &.{122350 .patterns = &.{
122455 .{ .src = .{ .to_mem, .none, .none } },122351 .{ .src = .{ .to_mem, .none, .none } },
122456 },122352 },
...@@ -122468,6 +122364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122468,6 +122364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122468 .unused,122364 .unused,
122469 },122365 },
122470 .dst_temps = .{ .{ .rc = .sse }, .unused },122366 .dst_temps = .{ .{ .rc = .sse }, .unused },
122367 .clobbers = .{ .eflags = true },
122471 .each = .{ .once = &.{122368 .each = .{ .once = &.{
122472 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },122369 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
122473 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },122370 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -122503,6 +122400,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122503,6 +122400,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122503 .unused,122400 .unused,
122504 },122401 },
122505 .dst_temps = .{ .{ .rc = .sse }, .unused },122402 .dst_temps = .{ .{ .rc = .sse }, .unused },
122403 .clobbers = .{ .eflags = true },
122506 .each = .{ .once = &.{122404 .each = .{ .once = &.{
122507 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122405 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122508 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },122406 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122554,6 +122452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122554,6 +122452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122554 .unused,122452 .unused,
122555 },122453 },
122556 .dst_temps = .{ .{ .rc = .sse }, .unused },122454 .dst_temps = .{ .{ .rc = .sse }, .unused },
122455 .clobbers = .{ .eflags = true },
122557 .each = .{ .once = &.{122456 .each = .{ .once = &.{
122558 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122457 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122559 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },122458 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122597,6 +122496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122597,6 +122496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122597 .unused,122496 .unused,
122598 },122497 },
122599 .dst_temps = .{ .{ .rc = .sse }, .unused },122498 .dst_temps = .{ .{ .rc = .sse }, .unused },
122499 .clobbers = .{ .eflags = true },
122600 .each = .{ .once = &.{122500 .each = .{ .once = &.{
122601 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122501 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122602 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },122502 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122640,6 +122540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122640,6 +122540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122640 .unused,122540 .unused,
122641 },122541 },
122642 .dst_temps = .{ .{ .rc = .sse }, .unused },122542 .dst_temps = .{ .{ .rc = .sse }, .unused },
122543 .clobbers = .{ .eflags = true },
122643 .each = .{ .once = &.{122544 .each = .{ .once = &.{
122644 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122545 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122645 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },122546 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -122653,25 +122554,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122653,25 +122554,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122653 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },122554 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
122654 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },122555 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
122655 } },122556 } },
122656 }, .{
122657 .required_features = .{ .avx, null, null, null },
122658 .dst_constraints = .{ .{ .int = .yword }, .any },
122659 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122660 .patterns = &.{
122661 .{ .src = .{ .mut_mem, .none, .none } },
122662 .{ .src = .{ .mut_gpr, .none, .none } },
122663 .{ .src = .{ .to_mut_sse, .none, .none } },
122664 },
122665 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122666 .each = .{ .once = &.{} },
122667 }, .{
122668 .dst_constraints = .{ .{ .int = .yword }, .any },
122669 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122670 .patterns = &.{
122671 .{ .src = .{ .to_mut_mem, .none, .none } },
122672 },
122673 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122674 .each = .{ .once = &.{} },
122675 }, .{122557 }, .{
122676 .required_features = .{ .avx512f, null, null, null },122558 .required_features = .{ .avx512f, null, null, null },
122677 .dst_constraints = .{ .{ .int = .yword }, .any },122559 .dst_constraints = .{ .{ .int = .yword }, .any },
...@@ -122679,7 +122561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122679,7 +122561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122679 .patterns = &.{122561 .patterns = &.{
122680 .{ .src = .{ .to_mem, .none, .none } },122562 .{ .src = .{ .to_mem, .none, .none } },
122681 },122563 },
122682 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },122564 .dst_temps = .{ .{ .rc = .sse }, .unused },
122683 .each = .{ .once = &.{122565 .each = .{ .once = &.{
122684 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },122566 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
122685 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },122567 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -122687,7 +122569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122687,7 +122569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122687 }, .{122569 }, .{
122688 .required_features = .{ .avx2, null, null, null },122570 .required_features = .{ .avx2, null, null, null },
122689 .dst_constraints = .{ .{ .int = .yword }, .any },122571 .dst_constraints = .{ .{ .int = .yword }, .any },
122690 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },122572 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
122691 .patterns = &.{122573 .patterns = &.{
122692 .{ .src = .{ .to_mem, .none, .none } },122574 .{ .src = .{ .to_mem, .none, .none } },
122693 },122575 },
...@@ -122705,6 +122587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122705,6 +122587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122705 .unused,122587 .unused,
122706 },122588 },
122707 .dst_temps = .{ .{ .rc = .sse }, .unused },122589 .dst_temps = .{ .{ .rc = .sse }, .unused },
122590 .clobbers = .{ .eflags = true },
122708 .each = .{ .once = &.{122591 .each = .{ .once = &.{
122709 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },122592 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122710 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },122593 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -122715,7 +122598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122715,7 +122598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122715 }, .{122598 }, .{
122716 .required_features = .{ .avx, null, null, null },122599 .required_features = .{ .avx, null, null, null },
122717 .dst_constraints = .{ .{ .int = .yword }, .any },122600 .dst_constraints = .{ .{ .int = .yword }, .any },
122718 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },122601 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .yword } }, .any, .any },
122719 .patterns = &.{122602 .patterns = &.{
122720 .{ .src = .{ .to_mem, .none, .none } },122603 .{ .src = .{ .to_mem, .none, .none } },
122721 },122604 },
...@@ -122733,6 +122616,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122733,6 +122616,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122733 .unused,122616 .unused,
122734 },122617 },
122735 .dst_temps = .{ .{ .rc = .sse }, .unused },122618 .dst_temps = .{ .{ .rc = .sse }, .unused },
122619 .clobbers = .{ .eflags = true },
122736 .each = .{ .once = &.{122620 .each = .{ .once = &.{
122737 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },122621 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122738 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },122622 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -122768,6 +122652,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122768,6 +122652,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122768 .unused,122652 .unused,
122769 },122653 },
122770 .dst_temps = .{ .{ .rc = .sse }, .unused },122654 .dst_temps = .{ .{ .rc = .sse }, .unused },
122655 .clobbers = .{ .eflags = true },
122771 .each = .{ .once = &.{122656 .each = .{ .once = &.{
122772 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122657 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122773 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },122658 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122817,6 +122702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122817,6 +122702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122817 .unused,122702 .unused,
122818 },122703 },
122819 .dst_temps = .{ .{ .rc = .sse }, .unused },122704 .dst_temps = .{ .{ .rc = .sse }, .unused },
122705 .clobbers = .{ .eflags = true },
122820 .each = .{ .once = &.{122706 .each = .{ .once = &.{
122821 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122707 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122822 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },122708 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122858,6 +122744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122858,6 +122744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122858 .unused,122744 .unused,
122859 },122745 },
122860 .dst_temps = .{ .{ .rc = .sse }, .unused },122746 .dst_temps = .{ .{ .rc = .sse }, .unused },
122747 .clobbers = .{ .eflags = true },
122861 .each = .{ .once = &.{122748 .each = .{ .once = &.{
122862 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },122749 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122863 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },122750 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -122871,14 +122758,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122871,14 +122758,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122871 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },122758 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
122872 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },122759 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
122873 } },122760 } },
122874 }, .{
122875 .dst_constraints = .{ .any_int, .any },
122876 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122877 .patterns = &.{
122878 .{ .src = .{ .to_mut_mem, .none, .none } },
122879 },
122880 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122881 .each = .{ .once = &.{} },
122882 }, .{122761 }, .{
122883 .required_features = .{ .@"64bit", null, null, null },122762 .required_features = .{ .@"64bit", null, null, null },
122884 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },122763 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
...@@ -122920,26 +122799,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -122920,26 +122799,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122920 },122799 },
122921 .Min, .Max => unreachable,122800 .Min, .Max => unreachable,
122922 .Add => comptime &.{ .{122801 .Add => comptime &.{ .{
122923 .required_features = .{ .sse, null, null, null },
122924 .dst_constraints = .{ .{ .int = .byte }, .any },
122925 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122926 .patterns = &.{
122927 .{ .src = .{ .mut_mem, .none, .none } },
122928 .{ .src = .{ .mut_gpr, .none, .none } },
122929 .{ .src = .{ .to_mut_sse, .none, .none } },
122930 },
122931 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122932 .each = .{ .once = &.{} },
122933 }, .{
122934 .dst_constraints = .{ .{ .int = .byte }, .any },
122935 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
122936 .patterns = &.{
122937 .{ .src = .{ .mut_mem, .none, .none } },
122938 .{ .src = .{ .to_mut_gpr, .none, .none } },
122939 },
122940 .dst_temps = .{ .{ .ref = .src0 }, .unused },
122941 .each = .{ .once = &.{} },
122942 }, .{
122943 .required_features = .{ .avx, null, null, null },122802 .required_features = .{ .avx, null, null, null },
122944 .dst_constraints = .{ .{ .int = .byte }, .any },122803 .dst_constraints = .{ .{ .int = .byte }, .any },
122945 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },122804 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
...@@ -123513,7 +123372,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123513,7 +123372,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123513 .unused,123372 .unused,
123514 .unused,123373 .unused,
123515 },123374 },
123516 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },123375 .dst_temps = .{ .{ .rc = .sse }, .unused },
123517 .each = .{ .once = &.{123376 .each = .{ .once = &.{
123518 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },123377 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
123519 .{ ._, .vp_b, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },123378 .{ ._, .vp_b, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -123548,7 +123407,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123548,7 +123407,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123548 .unused,123407 .unused,
123549 .unused,123408 .unused,
123550 },123409 },
123551 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },123410 .dst_temps = .{ .{ .rc = .sse }, .unused },
123552 .each = .{ .once = &.{123411 .each = .{ .once = &.{
123553 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },123412 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123554 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },123413 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -123588,6 +123447,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123588,6 +123447,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123588 .unused,123447 .unused,
123589 },123448 },
123590 .dst_temps = .{ .{ .rc = .sse }, .unused },123449 .dst_temps = .{ .{ .rc = .sse }, .unused },
123450 .clobbers = .{ .eflags = true },
123591 .each = .{ .once = &.{123451 .each = .{ .once = &.{
123592 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },123452 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
123593 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },123453 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -123626,6 +123486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123626,6 +123486,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123626 .unused,123486 .unused,
123627 },123487 },
123628 .dst_temps = .{ .{ .rc = .sse }, .unused },123488 .dst_temps = .{ .{ .rc = .sse }, .unused },
123489 .clobbers = .{ .eflags = true },
123629 .each = .{ .once = &.{123490 .each = .{ .once = &.{
123630 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },123491 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
123631 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },123492 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -123662,6 +123523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123662,6 +123523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123662 .unused,123523 .unused,
123663 },123524 },
123664 .dst_temps = .{ .{ .rc = .sse }, .unused },123525 .dst_temps = .{ .{ .rc = .sse }, .unused },
123526 .clobbers = .{ .eflags = true },
123665 .each = .{ .once = &.{123527 .each = .{ .once = &.{
123666 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },123528 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
123667 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },123529 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -123700,6 +123562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123700,6 +123562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123700 .unused,123562 .unused,
123701 },123563 },
123702 .dst_temps = .{ .{ .rc = .sse }, .unused },123564 .dst_temps = .{ .{ .rc = .sse }, .unused },
123565 .clobbers = .{ .eflags = true },
123703 .each = .{ .once = &.{123566 .each = .{ .once = &.{
123704 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },123567 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123705 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },123568 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -123744,6 +123607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123744,6 +123607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123744 .unused,123607 .unused,
123745 },123608 },
123746 .dst_temps = .{ .{ .rc = .sse }, .unused },123609 .dst_temps = .{ .{ .rc = .sse }, .unused },
123610 .clobbers = .{ .eflags = true },
123747 .each = .{ .once = &.{123611 .each = .{ .once = &.{
123748 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },123612 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123749 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },123613 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -123784,6 +123648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123784,6 +123648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123784 .unused,123648 .unused,
123785 },123649 },
123786 .dst_temps = .{ .{ .rc = .sse }, .unused },123650 .dst_temps = .{ .{ .rc = .sse }, .unused },
123651 .clobbers = .{ .eflags = true },
123787 .each = .{ .once = &.{123652 .each = .{ .once = &.{
123788 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },123653 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123789 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },123654 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -123824,6 +123689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123824,6 +123689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123824 .unused,123689 .unused,
123825 },123690 },
123826 .dst_temps = .{ .{ .rc = .sse }, .unused },123691 .dst_temps = .{ .{ .rc = .sse }, .unused },
123692 .clobbers = .{ .eflags = true },
123827 .each = .{ .once = &.{123693 .each = .{ .once = &.{
123828 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },123694 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123829 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },123695 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -123846,7 +123712,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123846,7 +123712,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123846 }, .{123712 }, .{
123847 .required_features = .{ .slow_incdec, null, null, null },123713 .required_features = .{ .slow_incdec, null, null, null },
123848 .dst_constraints = .{ .{ .int = .byte }, .any },123714 .dst_constraints = .{ .{ .int = .byte }, .any },
123849 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },123715 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
123850 .patterns = &.{123716 .patterns = &.{
123851 .{ .src = .{ .to_mem, .none, .none } },123717 .{ .src = .{ .to_mem, .none, .none } },
123852 },123718 },
...@@ -123874,7 +123740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123874,7 +123740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123874 } },123740 } },
123875 }, .{123741 }, .{
123876 .dst_constraints = .{ .{ .int = .byte }, .any },123742 .dst_constraints = .{ .{ .int = .byte }, .any },
123877 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },123743 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
123878 .patterns = &.{123744 .patterns = &.{
123879 .{ .src = .{ .to_mem, .none, .none } },123745 .{ .src = .{ .to_mem, .none, .none } },
123880 },123746 },
...@@ -123901,25 +123767,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123901,25 +123767,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123901 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },123767 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
123902 } },123768 } },
123903 }, .{123769 }, .{
123904 .required_features = .{ .sse, null, null, null },123770 .required_features = .{ .avx, .fast_hops, null, null },
123905 .dst_constraints = .{ .{ .int = .word }, .any },
123906 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
123907 .patterns = &.{
123908 .{ .src = .{ .mut_mem, .none, .none } },
123909 .{ .src = .{ .mut_gpr, .none, .none } },
123910 .{ .src = .{ .to_mut_sse, .none, .none } },
123911 },
123912 .dst_temps = .{ .{ .ref = .src0 }, .unused },
123913 .each = .{ .once = &.{} },
123914 }, .{
123915 .dst_constraints = .{ .{ .int = .word }, .any },123771 .dst_constraints = .{ .{ .int = .word }, .any },
123916 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },123772 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
123917 .patterns = &.{123773 .patterns = &.{
123918 .{ .src = .{ .mut_mem, .none, .none } },123774 .{ .src = .{ .to_sse, .none, .none } },
123919 .{ .src = .{ .to_mut_gpr, .none, .none } },
123920 },123775 },
123921 .dst_temps = .{ .{ .ref = .src0 }, .unused },123776 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
123922 .each = .{ .once = &.{} },123777 .each = .{ .once = &.{
123778 .{ ._, .vph_w, .add, .dst0x, .src0x, .src0x, ._ },
123779 } },
123923 }, .{123780 }, .{
123924 .required_features = .{ .avx, null, null, null },123781 .required_features = .{ .avx, null, null, null },
123925 .dst_constraints = .{ .{ .int = .word }, .any },123782 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -123945,6 +123802,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123945,6 +123802,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123945 .{ ._, .vp_d, .srl, .tmp0x, .src0x, .ui(16), ._ },123802 .{ ._, .vp_d, .srl, .tmp0x, .src0x, .ui(16), ._ },
123946 .{ ._, .vp_w, .add, .dst0x, .src0x, .tmp0x, ._ },123803 .{ ._, .vp_w, .add, .dst0x, .src0x, .tmp0x, ._ },
123947 } },123804 } },
123805 }, .{
123806 .required_features = .{ .ssse3, .fast_hops, null, null },
123807 .dst_constraints = .{ .{ .int = .word }, .any },
123808 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
123809 .patterns = &.{
123810 .{ .src = .{ .to_mut_sse, .none, .none } },
123811 },
123812 .dst_temps = .{ .{ .ref = .src0 }, .unused },
123813 .each = .{ .once = &.{
123814 .{ ._, .ph_w, .add, .dst0x, .src0x, ._, ._ },
123815 } },
123948 }, .{123816 }, .{
123949 .required_features = .{ .sse2, null, null, null },123817 .required_features = .{ .sse2, null, null, null },
123950 .dst_constraints = .{ .{ .int = .word }, .any },123818 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -123971,6 +123839,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123971,6 +123839,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123971 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },123839 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },
123972 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },123840 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
123973 } },123841 } },
123842 }, .{
123843 .required_features = .{ .avx, .fast_hops, null, null },
123844 .dst_constraints = .{ .{ .int = .word }, .any },
123845 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
123846 .patterns = &.{
123847 .{ .src = .{ .to_sse, .none, .none } },
123848 },
123849 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
123850 .each = .{ .once = &.{
123851 .{ ._, .vph_w, .add, .dst0x, .src0x, .src0x, ._ },
123852 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
123853 } },
123974 }, .{123854 }, .{
123975 .required_features = .{ .avx, null, null, null },123855 .required_features = .{ .avx, null, null, null },
123976 .dst_constraints = .{ .{ .int = .word }, .any },123856 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -123998,6 +123878,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -123998,6 +123878,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123998 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },123878 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
123999 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },123879 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124000 } },123880 } },
123881 }, .{
123882 .required_features = .{ .ssse3, .fast_hops, null, null },
123883 .dst_constraints = .{ .{ .int = .word }, .any },
123884 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
123885 .patterns = &.{
123886 .{ .src = .{ .to_mut_sse, .none, .none } },
123887 },
123888 .dst_temps = .{ .{ .ref = .src0 }, .unused },
123889 .each = .{ .once = &.{
123890 .{ ._, .ph_w, .add, .dst0x, .src0x, ._, ._ },
123891 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
123892 } },
124001 }, .{123893 }, .{
124002 .required_features = .{ .sse2, null, null, null },123894 .required_features = .{ .sse2, null, null, null },
124003 .dst_constraints = .{ .{ .int = .word }, .any },123895 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124026,6 +123918,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124026,6 +123918,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124026 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },123918 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },
124027 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },123919 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
124028 } },123920 } },
123921 }, .{
123922 .required_features = .{ .avx, .fast_hops, null, null },
123923 .dst_constraints = .{ .{ .int = .word }, .any },
123924 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
123925 .patterns = &.{
123926 .{ .src = .{ .to_sse, .none, .none } },
123927 },
123928 .extra_temps = .{
123929 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
123930 .unused,
123931 .unused,
123932 .unused,
123933 .unused,
123934 .unused,
123935 .unused,
123936 .unused,
123937 .unused,
123938 .unused,
123939 .unused,
123940 },
123941 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
123942 .each = .{ .once = &.{
123943 .{ ._, .vph_w, .add, .tmp0x, .src0x, .src0x, ._ },
123944 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
123945 .{ ._, .vp_w, .add, .dst0x, .tmp0x, .dst0x, ._ },
123946 } },
124029 }, .{123947 }, .{
124030 .required_features = .{ .avx, null, null, null },123948 .required_features = .{ .avx, null, null, null },
124031 .dst_constraints = .{ .{ .int = .word }, .any },123949 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124053,6 +123971,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124053,6 +123971,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124053 .{ ._, .vp_d, .srl, .dst0x, .src0x, .ui(16), ._ },123971 .{ ._, .vp_d, .srl, .dst0x, .src0x, .ui(16), ._ },
124054 .{ ._, .vp_w, .add, .dst0x, .tmp0x, .dst0x, ._ },123972 .{ ._, .vp_w, .add, .dst0x, .tmp0x, .dst0x, ._ },
124055 } },123973 } },
123974 }, .{
123975 .required_features = .{ .ssse3, .fast_hops, null, null },
123976 .dst_constraints = .{ .{ .int = .word }, .any },
123977 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .word } }, .any, .any },
123978 .patterns = &.{
123979 .{ .src = .{ .to_mut_sse, .none, .none } },
123980 },
123981 .extra_temps = .{
123982 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
123983 .unused,
123984 .unused,
123985 .unused,
123986 .unused,
123987 .unused,
123988 .unused,
123989 .unused,
123990 .unused,
123991 .unused,
123992 .unused,
123993 },
123994 .dst_temps = .{ .{ .ref = .src0 }, .unused },
123995 .each = .{ .once = &.{
123996 .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },
123997 .{ ._, .ph_w, .add, .dst0x, .src0x, ._, ._ },
123998 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
123999 } },
124056 }, .{124000 }, .{
124057 .required_features = .{ .sse2, null, null, null },124001 .required_features = .{ .sse2, null, null, null },
124058 .dst_constraints = .{ .{ .int = .word }, .any },124002 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124080,6 +124024,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124080,6 +124024,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124080 .{ ._, .p_d, .srl, .dst0x, .ui(16), ._, ._ },124024 .{ ._, .p_d, .srl, .dst0x, .ui(16), ._, ._ },
124081 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },124025 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
124082 } },124026 } },
124027 }, .{
124028 .required_features = .{ .avx, .fast_hops, null, null },
124029 .dst_constraints = .{ .{ .int = .word }, .any },
124030 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124031 .patterns = &.{
124032 .{ .src = .{ .to_sse, .none, .none } },
124033 },
124034 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124035 .each = .{ .once = &.{
124036 .{ ._, .vph_w, .add, .dst0x, .src0x, .src0x, ._ },
124037 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124038 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124039 } },
124083 }, .{124040 }, .{
124084 .required_features = .{ .avx, null, null, null },124041 .required_features = .{ .avx, null, null, null },
124085 .dst_constraints = .{ .{ .int = .word }, .any },124042 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124109,6 +124066,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124109,6 +124066,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124109 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },124066 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
124110 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },124067 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124111 } },124068 } },
124069 }, .{
124070 .required_features = .{ .ssse3, .fast_hops, null, null },
124071 .dst_constraints = .{ .{ .int = .word }, .any },
124072 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124073 .patterns = &.{
124074 .{ .src = .{ .to_mut_sse, .none, .none } },
124075 },
124076 .dst_temps = .{ .{ .ref = .src0 }, .unused },
124077 .each = .{ .once = &.{
124078 .{ ._, .ph_w, .add, .dst0x, .src0x, ._, ._ },
124079 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124080 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124081 } },
124112 }, .{124082 }, .{
124113 .required_features = .{ .sse2, null, null, null },124083 .required_features = .{ .sse2, null, null, null },
124114 .dst_constraints = .{ .{ .int = .word }, .any },124084 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124139,6 +124109,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124139,6 +124109,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124139 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },124109 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },
124140 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },124110 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
124141 } },124111 } },
124112 }, .{
124113 .required_features = .{ .avx, .fast_hops, null, null },
124114 .dst_constraints = .{ .{ .int = .word }, .any },
124115 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124116 .patterns = &.{
124117 .{ .src = .{ .to_sse, .none, .none } },
124118 },
124119 .extra_temps = .{
124120 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
124121 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124122 .unused,
124123 .unused,
124124 .unused,
124125 .unused,
124126 .unused,
124127 .unused,
124128 .unused,
124129 .unused,
124130 .unused,
124131 },
124132 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124133 .each = .{ .once = &.{
124134 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124135 .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
124136 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124137 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124138 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124139 } },
124142 }, .{124140 }, .{
124143 .required_features = .{ .avx, null, null, null },124141 .required_features = .{ .avx, null, null, null },
124144 .dst_constraints = .{ .{ .int = .word }, .any },124142 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124170,6 +124168,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124170,6 +124168,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124170 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },124168 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124171 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },124169 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124172 } },124170 } },
124171 }, .{
124172 .required_features = .{ .ssse3, .fast_hops, null, null },
124173 .dst_constraints = .{ .{ .int = .word }, .any },
124174 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124175 .patterns = &.{
124176 .{ .src = .{ .to_mut_sse, .none, .none } },
124177 },
124178 .extra_temps = .{
124179 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
124180 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124181 .unused,
124182 .unused,
124183 .unused,
124184 .unused,
124185 .unused,
124186 .unused,
124187 .unused,
124188 .unused,
124189 .unused,
124190 },
124191 .dst_temps = .{ .{ .ref = .src0 }, .unused },
124192 .each = .{ .once = &.{
124193 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124194 .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
124195 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124196 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124197 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124198 } },
124173 }, .{124199 }, .{
124174 .required_features = .{ .sse2, null, null, null },124200 .required_features = .{ .sse2, null, null, null },
124175 .dst_constraints = .{ .{ .int = .word }, .any },124201 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124202,6 +124228,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124202,6 +124228,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124202 .{ ._, .p_d, .srl, .tmp2x, .ui(16), ._, ._ },124228 .{ ._, .p_d, .srl, .tmp2x, .ui(16), ._, ._ },
124203 .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ },124229 .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ },
124204 } },124230 } },
124231 }, .{
124232 .required_features = .{ .avx2, .fast_hops, null, null },
124233 .dst_constraints = .{ .{ .int = .word }, .any },
124234 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124235 .patterns = &.{
124236 .{ .src = .{ .to_sse, .none, .none } },
124237 },
124238 .dst_temps = .{ .{ .rc = .sse }, .unused },
124239 .each = .{ .once = &.{
124240 .{ ._, .v_i128, .extract, .dst0x, .src0y, .ui(1), ._ },
124241 .{ ._, .vp_w, .add, .dst0x, .src0x, .dst0x, ._ },
124242 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124243 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124244 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124245 } },
124205 }, .{124246 }, .{
124206 .required_features = .{ .avx2, null, null, null },124247 .required_features = .{ .avx2, null, null, null },
124207 .dst_constraints = .{ .{ .int = .word }, .any },124248 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124233,6 +124274,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124233,6 +124274,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124233 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },124274 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
124234 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },124275 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124235 } },124276 } },
124277 }, .{
124278 .required_features = .{ .avx, .fast_hops, null, null },
124279 .dst_constraints = .{ .{ .int = .word }, .any },
124280 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124281 .patterns = &.{
124282 .{ .src = .{ .to_sse, .none, .none } },
124283 },
124284 .dst_temps = .{ .{ .rc = .sse }, .unused },
124285 .each = .{ .once = &.{
124286 .{ ._, .v_f128, .extract, .dst0x, .src0y, .ui(1), ._ },
124287 .{ ._, .vp_w, .add, .dst0x, .src0x, .dst0x, ._ },
124288 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124289 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124290 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124291 } },
124236 }, .{124292 }, .{
124237 .required_features = .{ .avx, null, null, null },124293 .required_features = .{ .avx, null, null, null },
124238 .dst_constraints = .{ .{ .int = .word }, .any },124294 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124264,6 +124320,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124264,6 +124320,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124264 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },124320 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
124265 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },124321 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124266 } },124322 } },
124323 }, .{
124324 .required_features = .{ .avx2, .fast_hops, null, null },
124325 .dst_constraints = .{ .{ .int = .word }, .any },
124326 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124327 .patterns = &.{
124328 .{ .src = .{ .to_sse, .none, .none } },
124329 },
124330 .extra_temps = .{
124331 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
124332 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124333 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
124334 .unused,
124335 .unused,
124336 .unused,
124337 .unused,
124338 .unused,
124339 .unused,
124340 .unused,
124341 .unused,
124342 },
124343 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124344 .each = .{ .once = &.{
124345 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124346 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
124347 .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
124348 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124349 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124350 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124351 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124352 } },
124267 }, .{124353 }, .{
124268 .required_features = .{ .avx2, null, null, null },124354 .required_features = .{ .avx2, null, null, null },
124269 .dst_constraints = .{ .{ .int = .word }, .any },124355 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124297,6 +124383,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124297,6 +124383,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124297 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },124383 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124298 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },124384 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124299 } },124385 } },
124386 }, .{
124387 .required_features = .{ .avx, .fast_hops, null, null },
124388 .dst_constraints = .{ .{ .int = .word }, .any },
124389 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124390 .patterns = &.{
124391 .{ .src = .{ .to_sse, .none, .none } },
124392 },
124393 .extra_temps = .{
124394 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
124395 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124396 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
124397 .unused,
124398 .unused,
124399 .unused,
124400 .unused,
124401 .unused,
124402 .unused,
124403 .unused,
124404 .unused,
124405 },
124406 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124407 .each = .{ .once = &.{
124408 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124409 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
124410 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
124411 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124412 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124413 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124414 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124415 } },
124300 }, .{124416 }, .{
124301 .required_features = .{ .avx, null, null, null },124417 .required_features = .{ .avx, null, null, null },
124302 .dst_constraints = .{ .{ .int = .word }, .any },124418 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124350,7 +124466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124350,7 +124466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124350 .unused,124466 .unused,
124351 .unused,124467 .unused,
124352 },124468 },
124353 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },124469 .dst_temps = .{ .{ .rc = .sse }, .unused },
124354 .each = .{ .once = &.{124470 .each = .{ .once = &.{
124355 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },124471 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
124356 .{ ._, .vp_w, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },124472 .{ ._, .vp_w, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -124383,7 +124499,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124383,7 +124499,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124383 .unused,124499 .unused,
124384 .unused,124500 .unused,
124385 },124501 },
124386 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },124502 .dst_temps = .{ .{ .rc = .sse }, .unused },
124387 .each = .{ .once = &.{124503 .each = .{ .once = &.{
124388 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },124504 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124389 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },124505 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -124400,6 +124516,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124400,6 +124516,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124400 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },124516 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124401 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },124517 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124402 } },124518 } },
124519 }, .{
124520 .required_features = .{ .avx2, .fast_hops, null, null },
124521 .dst_constraints = .{ .{ .int = .word }, .any },
124522 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124523 .patterns = &.{
124524 .{ .src = .{ .to_mem, .none, .none } },
124525 },
124526 .extra_temps = .{
124527 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
124528 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
124529 .unused,
124530 .unused,
124531 .unused,
124532 .unused,
124533 .unused,
124534 .unused,
124535 .unused,
124536 .unused,
124537 .unused,
124538 },
124539 .dst_temps = .{ .{ .rc = .sse }, .unused },
124540 .clobbers = .{ .eflags = true },
124541 .each = .{ .once = &.{
124542 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
124543 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
124544 .{ .@"0:", .vp_w, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
124545 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
124546 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124547 .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
124548 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },
124549 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124550 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124551 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124552 } },
124403 }, .{124553 }, .{
124404 .required_features = .{ .avx2, null, null, null },124554 .required_features = .{ .avx2, null, null, null },
124405 .dst_constraints = .{ .{ .int = .word }, .any },124555 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124421,6 +124571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124421,6 +124571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124421 .unused,124571 .unused,
124422 },124572 },
124423 .dst_temps = .{ .{ .rc = .sse }, .unused },124573 .dst_temps = .{ .{ .rc = .sse }, .unused },
124574 .clobbers = .{ .eflags = true },
124424 .each = .{ .once = &.{124575 .each = .{ .once = &.{
124425 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },124576 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
124426 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },124577 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -124436,6 +124587,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124436,6 +124587,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124436 .{ ._, .vp_d, .srl, .tmp1x, .dst0x, .ui(16), ._ },124587 .{ ._, .vp_d, .srl, .tmp1x, .dst0x, .ui(16), ._ },
124437 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },124588 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },
124438 } },124589 } },
124590 }, .{
124591 .required_features = .{ .avx, .fast_hops, null, null },
124592 .dst_constraints = .{ .{ .int = .word }, .any },
124593 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124594 .patterns = &.{
124595 .{ .src = .{ .to_mem, .none, .none } },
124596 },
124597 .extra_temps = .{
124598 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
124599 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
124600 .unused,
124601 .unused,
124602 .unused,
124603 .unused,
124604 .unused,
124605 .unused,
124606 .unused,
124607 .unused,
124608 .unused,
124609 },
124610 .dst_temps = .{ .{ .rc = .sse }, .unused },
124611 .clobbers = .{ .eflags = true },
124612 .each = .{ .once = &.{
124613 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
124614 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
124615 .{ .@"0:", .vp_w, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
124616 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
124617 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124618 .{ ._, .vph_w, .add, .dst0x, .dst0x, .tmp1x, ._ },
124619 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124620 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124621 } },
124439 }, .{124622 }, .{
124440 .required_features = .{ .avx, null, null, null },124623 .required_features = .{ .avx, null, null, null },
124441 .dst_constraints = .{ .{ .int = .word }, .any },124624 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124457,6 +124640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124457,6 +124640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124457 .unused,124640 .unused,
124458 },124641 },
124459 .dst_temps = .{ .{ .rc = .sse }, .unused },124642 .dst_temps = .{ .{ .rc = .sse }, .unused },
124643 .clobbers = .{ .eflags = true },
124460 .each = .{ .once = &.{124644 .each = .{ .once = &.{
124461 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },124645 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
124462 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },124646 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -124470,6 +124654,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124470,6 +124654,38 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124470 .{ ._, .vp_d, .srl, .tmp1x, .dst0x, .ui(16), ._ },124654 .{ ._, .vp_d, .srl, .tmp1x, .dst0x, .ui(16), ._ },
124471 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },124655 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },
124472 } },124656 } },
124657 }, .{
124658 .required_features = .{ .ssse3, .fast_hops, null, null },
124659 .dst_constraints = .{ .{ .int = .word }, .any },
124660 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124661 .patterns = &.{
124662 .{ .src = .{ .to_mem, .none, .none } },
124663 },
124664 .extra_temps = .{
124665 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
124666 .unused,
124667 .unused,
124668 .unused,
124669 .unused,
124670 .unused,
124671 .unused,
124672 .unused,
124673 .unused,
124674 .unused,
124675 .unused,
124676 },
124677 .dst_temps = .{ .{ .rc = .sse }, .unused },
124678 .clobbers = .{ .eflags = true },
124679 .each = .{ .once = &.{
124680 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
124681 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
124682 .{ .@"0:", .p_w, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
124683 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
124684 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124685 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124686 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124687 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124688 } },
124473 }, .{124689 }, .{
124474 .required_features = .{ .sse2, null, null, null },124690 .required_features = .{ .sse2, null, null, null },
124475 .dst_constraints = .{ .{ .int = .word }, .any },124691 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124491,6 +124707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124491,6 +124707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124491 .unused,124707 .unused,
124492 },124708 },
124493 .dst_temps = .{ .{ .rc = .sse }, .unused },124709 .dst_temps = .{ .{ .rc = .sse }, .unused },
124710 .clobbers = .{ .eflags = true },
124494 .each = .{ .once = &.{124711 .each = .{ .once = &.{
124495 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },124712 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
124496 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },124713 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -124526,6 +124743,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124526,6 +124743,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124526 .unused,124743 .unused,
124527 },124744 },
124528 .dst_temps = .{ .{ .rc = .sse }, .unused },124745 .dst_temps = .{ .{ .rc = .sse }, .unused },
124746 .clobbers = .{ .eflags = true },
124529 .each = .{ .once = &.{124747 .each = .{ .once = &.{
124530 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },124748 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124531 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },124749 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -124547,6 +124765,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124547,6 +124765,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124547 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },124765 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124548 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },124766 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124549 } },124767 } },
124768 }, .{
124769 .required_features = .{ .avx2, .fast_hops, null, null },
124770 .dst_constraints = .{ .{ .int = .word }, .any },
124771 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124772 .patterns = &.{
124773 .{ .src = .{ .to_mem, .none, .none } },
124774 },
124775 .extra_temps = .{
124776 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
124777 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124778 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
124779 .unused,
124780 .unused,
124781 .unused,
124782 .unused,
124783 .unused,
124784 .unused,
124785 .unused,
124786 .unused,
124787 },
124788 .dst_temps = .{ .{ .rc = .sse }, .unused },
124789 .clobbers = .{ .eflags = true },
124790 .each = .{ .once = &.{
124791 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124792 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
124793 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ },
124794 .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
124795 .{ .@"0:", .vp_w, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
124796 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
124797 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124798 .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
124799 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124800 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124801 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124802 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124803 } },
124550 }, .{124804 }, .{
124551 .required_features = .{ .avx2, null, null, null },124805 .required_features = .{ .avx2, null, null, null },
124552 .dst_constraints = .{ .{ .int = .word }, .any },124806 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124568,6 +124822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124568,6 +124822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124568 .unused,124822 .unused,
124569 },124823 },
124570 .dst_temps = .{ .{ .rc = .sse }, .unused },124824 .dst_temps = .{ .{ .rc = .sse }, .unused },
124825 .clobbers = .{ .eflags = true },
124571 .each = .{ .once = &.{124826 .each = .{ .once = &.{
124572 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },124827 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124573 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },124828 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -124585,6 +124840,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124585,6 +124840,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124585 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },124840 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124586 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },124841 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124587 } },124842 } },
124843 }, .{
124844 .required_features = .{ .avx, .fast_hops, null, null },
124845 .dst_constraints = .{ .{ .int = .word }, .any },
124846 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .word } }, .any, .any },
124847 .patterns = &.{
124848 .{ .src = .{ .to_mem, .none, .none } },
124849 },
124850 .extra_temps = .{
124851 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
124852 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124853 .{ .type = .vector_8_u16, .kind = .{ .rc = .sse } },
124854 .unused,
124855 .unused,
124856 .unused,
124857 .unused,
124858 .unused,
124859 .unused,
124860 .unused,
124861 .unused,
124862 },
124863 .dst_temps = .{ .{ .rc = .sse }, .unused },
124864 .clobbers = .{ .eflags = true },
124865 .each = .{ .once = &.{
124866 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124867 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
124868 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
124869 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
124870 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
124871 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124872 .{ .@"0:", .vp_w, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
124873 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
124874 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124875 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124876 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124877 .{ ._, .vph_w, .add, .dst0x, .dst0x, .dst0x, ._ },
124878 } },
124588 }, .{124879 }, .{
124589 .required_features = .{ .avx, null, null, null },124880 .required_features = .{ .avx, null, null, null },
124590 .dst_constraints = .{ .{ .int = .word }, .any },124881 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124606,6 +124897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124606,6 +124897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124606 .unused,124897 .unused,
124607 },124898 },
124608 .dst_temps = .{ .{ .rc = .sse }, .unused },124899 .dst_temps = .{ .{ .rc = .sse }, .unused },
124900 .clobbers = .{ .eflags = true },
124609 .each = .{ .once = &.{124901 .each = .{ .once = &.{
124610 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },124902 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124611 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },124903 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -124623,6 +124915,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124623,6 +124915,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124623 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },124915 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124624 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },124916 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124625 } },124917 } },
124918 }, .{
124919 .required_features = .{ .ssse3, .fast_hops, null, null },
124920 .dst_constraints = .{ .{ .int = .word }, .any },
124921 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .word } }, .any, .any },
124922 .patterns = &.{
124923 .{ .src = .{ .to_mem, .none, .none } },
124924 },
124925 .extra_temps = .{
124926 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
124927 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
124928 .unused,
124929 .unused,
124930 .unused,
124931 .unused,
124932 .unused,
124933 .unused,
124934 .unused,
124935 .unused,
124936 .unused,
124937 },
124938 .dst_temps = .{ .{ .rc = .sse }, .unused },
124939 .clobbers = .{ .eflags = true },
124940 .each = .{ .once = &.{
124941 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124942 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
124943 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
124944 .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
124945 .{ .@"0:", .p_w, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
124946 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
124947 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124948 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124949 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124950 .{ ._, .ph_w, .add, .dst0x, .dst0x, ._, ._ },
124951 } },
124626 }, .{124952 }, .{
124627 .required_features = .{ .sse2, null, null, null },124953 .required_features = .{ .sse2, null, null, null },
124628 .dst_constraints = .{ .{ .int = .word }, .any },124954 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -124644,6 +124970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124644,6 +124970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124644 .unused,124970 .unused,
124645 },124971 },
124646 .dst_temps = .{ .{ .rc = .sse }, .unused },124972 .dst_temps = .{ .{ .rc = .sse }, .unused },
124973 .clobbers = .{ .eflags = true },
124647 .each = .{ .once = &.{124974 .each = .{ .once = &.{
124648 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },124975 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124649 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },124976 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -124662,7 +124989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124662,7 +124989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124662 } },124989 } },
124663 }, .{124990 }, .{
124664 .dst_constraints = .{ .{ .int = .word }, .any },124991 .dst_constraints = .{ .{ .int = .word }, .any },
124665 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },124992 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
124666 .patterns = &.{124993 .patterns = &.{
124667 .{ .src = .{ .to_mem, .none, .none } },124994 .{ .src = .{ .to_mem, .none, .none } },
124668 },124995 },
...@@ -124689,25 +125016,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124689,25 +125016,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124689 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },125016 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124690 } },125017 } },
124691 }, .{125018 }, .{
124692 .required_features = .{ .sse, null, null, null },125019 .required_features = .{ .avx, .fast_hops, null, null },
124693 .dst_constraints = .{ .{ .int = .dword }, .any },125020 .dst_constraints = .{ .{ .int = .dword }, .any },
124694 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },125021 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
124695 .patterns = &.{
124696 .{ .src = .{ .mut_mem, .none, .none } },
124697 .{ .src = .{ .mut_gpr, .none, .none } },
124698 .{ .src = .{ .to_mut_sse, .none, .none } },
124699 },
124700 .dst_temps = .{ .{ .ref = .src0 }, .unused },
124701 .each = .{ .once = &.{} },
124702 }, .{
124703 .dst_constraints = .{ .{ .int = .dword }, .any },
124704 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
124705 .patterns = &.{125022 .patterns = &.{
124706 .{ .src = .{ .mut_mem, .none, .none } },125023 .{ .src = .{ .to_sse, .none, .none } },
124707 .{ .src = .{ .to_mut_gpr, .none, .none } },
124708 },125024 },
124709 .dst_temps = .{ .{ .ref = .src0 }, .unused },125025 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124710 .each = .{ .once = &.{} },125026 .each = .{ .once = &.{
125027 .{ ._, .vph_d, .add, .dst0x, .src0x, .src0x, ._ },
125028 } },
124711 }, .{125029 }, .{
124712 .required_features = .{ .avx, null, null, null },125030 .required_features = .{ .avx, null, null, null },
124713 .dst_constraints = .{ .{ .int = .dword }, .any },125031 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124733,6 +125051,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124733,6 +125051,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124733 .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },125051 .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },
124734 .{ ._, .vp_d, .add, .dst0x, .src0x, .tmp0x, ._ },125052 .{ ._, .vp_d, .add, .dst0x, .src0x, .tmp0x, ._ },
124735 } },125053 } },
125054 }, .{
125055 .required_features = .{ .ssse3, .fast_hops, null, null },
125056 .dst_constraints = .{ .{ .int = .dword }, .any },
125057 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
125058 .patterns = &.{
125059 .{ .src = .{ .to_mut_sse, .none, .none } },
125060 },
125061 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125062 .each = .{ .once = &.{
125063 .{ ._, .ph_d, .add, .dst0x, .src0x, ._, ._ },
125064 } },
124736 }, .{125065 }, .{
124737 .required_features = .{ .sse2, null, null, null },125066 .required_features = .{ .sse2, null, null, null },
124738 .dst_constraints = .{ .{ .int = .dword }, .any },125067 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124758,6 +125087,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124758,6 +125087,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124758 .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },125087 .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },
124759 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },125088 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
124760 } },125089 } },
125090 }, .{
125091 .required_features = .{ .avx, .fast_hops, null, null },
125092 .dst_constraints = .{ .{ .int = .dword }, .any },
125093 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125094 .patterns = &.{
125095 .{ .src = .{ .to_sse, .none, .none } },
125096 },
125097 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125098 .each = .{ .once = &.{
125099 .{ ._, .vph_d, .add, .dst0x, .src0x, .src0x, ._ },
125100 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125101 } },
124761 }, .{125102 }, .{
124762 .required_features = .{ .avx, null, null, null },125103 .required_features = .{ .avx, null, null, null },
124763 .dst_constraints = .{ .{ .int = .dword }, .any },125104 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124785,6 +125126,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124785,6 +125126,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124785 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },125126 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124786 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },125127 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },
124787 } },125128 } },
125129 }, .{
125130 .required_features = .{ .ssse3, .fast_hops, null, null },
125131 .dst_constraints = .{ .{ .int = .dword }, .any },
125132 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125133 .patterns = &.{
125134 .{ .src = .{ .to_mut_sse, .none, .none } },
125135 },
125136 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125137 .each = .{ .once = &.{
125138 .{ ._, .ph_d, .add, .dst0x, .src0x, ._, ._ },
125139 .{ ._, .ph_d, .add, .dst0x, .dst0x, ._, ._ },
125140 } },
124788 }, .{125141 }, .{
124789 .required_features = .{ .sse2, null, null, null },125142 .required_features = .{ .sse2, null, null, null },
124790 .dst_constraints = .{ .{ .int = .dword }, .any },125143 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124812,6 +125165,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124812,6 +125165,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124812 .{ ._, .p_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },125165 .{ ._, .p_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124813 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },125166 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
124814 } },125167 } },
125168 }, .{
125169 .required_features = .{ .avx, .fast_hops, null, null },
125170 .dst_constraints = .{ .{ .int = .dword }, .any },
125171 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125172 .patterns = &.{
125173 .{ .src = .{ .to_sse, .none, .none } },
125174 },
125175 .extra_temps = .{
125176 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125177 .unused,
125178 .unused,
125179 .unused,
125180 .unused,
125181 .unused,
125182 .unused,
125183 .unused,
125184 .unused,
125185 .unused,
125186 .unused,
125187 },
125188 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125189 .each = .{ .once = &.{
125190 .{ ._, .vph_d, .add, .tmp0x, .src0x, .src0x, ._ },
125191 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b11_10_11_10), ._ },
125192 .{ ._, .vp_d, .add, .dst0x, .tmp0x, .dst0x, ._ },
125193 } },
124815 }, .{125194 }, .{
124816 .required_features = .{ .avx, null, null, null },125195 .required_features = .{ .avx, null, null, null },
124817 .dst_constraints = .{ .{ .int = .dword }, .any },125196 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124839,6 +125218,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124839,6 +125218,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124839 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },125218 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
124840 .{ ._, .vp_d, .add, .dst0x, .tmp0x, .dst0x, ._ },125219 .{ ._, .vp_d, .add, .dst0x, .tmp0x, .dst0x, ._ },
124841 } },125220 } },
125221 }, .{
125222 .required_features = .{ .ssse3, .fast_hops, null, null },
125223 .dst_constraints = .{ .{ .int = .dword }, .any },
125224 .src_constraints = .{ .{ .scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125225 .patterns = &.{
125226 .{ .src = .{ .to_mut_sse, .none, .none } },
125227 },
125228 .extra_temps = .{
125229 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125230 .unused,
125231 .unused,
125232 .unused,
125233 .unused,
125234 .unused,
125235 .unused,
125236 .unused,
125237 .unused,
125238 .unused,
125239 .unused,
125240 },
125241 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125242 .each = .{ .once = &.{
125243 .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b11_10_11_10), ._ },
125244 .{ ._, .ph_d, .add, .dst0x, .src0x, ._, ._ },
125245 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
125246 } },
124842 }, .{125247 }, .{
124843 .required_features = .{ .sse2, null, null, null },125248 .required_features = .{ .sse2, null, null, null },
124844 .dst_constraints = .{ .{ .int = .dword }, .any },125249 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124866,6 +125271,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124866,6 +125271,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124866 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },125271 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
124867 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },125272 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
124868 } },125273 } },
125274 }, .{
125275 .required_features = .{ .avx2, .fast_hops, null, null },
125276 .dst_constraints = .{ .{ .int = .dword }, .any },
125277 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125278 .patterns = &.{
125279 .{ .src = .{ .to_sse, .none, .none } },
125280 },
125281 .dst_temps = .{ .{ .rc = .sse }, .unused },
125282 .each = .{ .once = &.{
125283 .{ ._, .v_i128, .extract, .dst0x, .src0y, .ui(1), ._ },
125284 .{ ._, .vp_d, .add, .dst0x, .src0x, .dst0x, ._ },
125285 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125286 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125287 } },
124869 }, .{125288 }, .{
124870 .required_features = .{ .avx2, null, null, null },125289 .required_features = .{ .avx2, null, null, null },
124871 .dst_constraints = .{ .{ .int = .dword }, .any },125290 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124895,6 +125314,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124895,6 +125314,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124895 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },125314 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124896 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },125315 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },
124897 } },125316 } },
125317 }, .{
125318 .required_features = .{ .avx, .fast_hops, null, null },
125319 .dst_constraints = .{ .{ .int = .dword }, .any },
125320 .src_constraints = .{ .{ .exact_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125321 .patterns = &.{
125322 .{ .src = .{ .to_sse, .none, .none } },
125323 },
125324 .dst_temps = .{ .{ .rc = .sse }, .unused },
125325 .each = .{ .once = &.{
125326 .{ ._, .v_f128, .extract, .dst0x, .src0y, .ui(1), ._ },
125327 .{ ._, .vp_d, .add, .dst0x, .src0x, .dst0x, ._ },
125328 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125329 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125330 } },
124898 }, .{125331 }, .{
124899 .required_features = .{ .avx, null, null, null },125332 .required_features = .{ .avx, null, null, null },
124900 .dst_constraints = .{ .{ .int = .dword }, .any },125333 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124924,6 +125357,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124924,6 +125357,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124924 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },125357 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124925 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },125358 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },
124926 } },125359 } },
125360 }, .{
125361 .required_features = .{ .avx2, .fast_hops, null, null },
125362 .dst_constraints = .{ .{ .int = .dword }, .any },
125363 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125364 .patterns = &.{
125365 .{ .src = .{ .to_sse, .none, .none } },
125366 },
125367 .extra_temps = .{
125368 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
125369 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
125370 .{ .type = .vector_8_u32, .kind = .{ .rc = .sse } },
125371 .unused,
125372 .unused,
125373 .unused,
125374 .unused,
125375 .unused,
125376 .unused,
125377 .unused,
125378 .unused,
125379 },
125380 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125381 .each = .{ .once = &.{
125382 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125383 .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
125384 .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
125385 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125386 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125387 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125388 } },
124927 }, .{125389 }, .{
124928 .required_features = .{ .avx2, null, null, null },125390 .required_features = .{ .avx2, null, null, null },
124929 .dst_constraints = .{ .{ .int = .dword }, .any },125391 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -124955,6 +125417,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -124955,6 +125417,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124955 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },125417 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
124956 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },125418 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
124957 } },125419 } },
125420 }, .{
125421 .required_features = .{ .avx, .fast_hops, null, null },
125422 .dst_constraints = .{ .{ .int = .dword }, .any },
125423 .src_constraints = .{ .{ .scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125424 .patterns = &.{
125425 .{ .src = .{ .to_sse, .none, .none } },
125426 },
125427 .extra_temps = .{
125428 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
125429 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
125430 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125431 .unused,
125432 .unused,
125433 .unused,
125434 .unused,
125435 .unused,
125436 .unused,
125437 .unused,
125438 .unused,
125439 },
125440 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125441 .each = .{ .once = &.{
125442 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125443 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
125444 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
125445 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125446 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125447 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125448 } },
124958 }, .{125449 }, .{
124959 .required_features = .{ .avx, null, null, null },125450 .required_features = .{ .avx, null, null, null },
124960 .dst_constraints = .{ .{ .int = .dword }, .any },125451 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125006,7 +125497,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125006,7 +125497,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125006 .unused,125497 .unused,
125007 .unused,125498 .unused,
125008 },125499 },
125009 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },125500 .dst_temps = .{ .{ .rc = .sse }, .unused },
125501 .clobbers = .{ .eflags = true },
125010 .each = .{ .once = &.{125502 .each = .{ .once = &.{
125011 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },125503 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
125012 .{ ._, .vp_d, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },125504 .{ ._, .vp_d, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -125037,7 +125529,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125037,7 +125529,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125037 .unused,125529 .unused,
125038 .unused,125530 .unused,
125039 },125531 },
125040 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },125532 .dst_temps = .{ .{ .rc = .sse }, .unused },
125533 .clobbers = .{ .eflags = true },
125041 .each = .{ .once = &.{125534 .each = .{ .once = &.{
125042 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },125535 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125043 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },125536 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -125052,6 +125545,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125052,6 +125545,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125052 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },125545 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125053 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },125546 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125054 } },125547 } },
125548 }, .{
125549 .required_features = .{ .avx2, .fast_hops, null, null },
125550 .dst_constraints = .{ .{ .int = .dword }, .any },
125551 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125552 .patterns = &.{
125553 .{ .src = .{ .to_mem, .none, .none } },
125554 },
125555 .extra_temps = .{
125556 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
125557 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125558 .unused,
125559 .unused,
125560 .unused,
125561 .unused,
125562 .unused,
125563 .unused,
125564 .unused,
125565 .unused,
125566 .unused,
125567 },
125568 .dst_temps = .{ .{ .rc = .sse }, .unused },
125569 .clobbers = .{ .eflags = true },
125570 .each = .{ .once = &.{
125571 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
125572 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
125573 .{ .@"0:", .vp_d, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
125574 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
125575 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125576 .{ ._, .v_i128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
125577 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },
125578 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125579 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125580 } },
125055 }, .{125581 }, .{
125056 .required_features = .{ .avx2, null, null, null },125582 .required_features = .{ .avx2, null, null, null },
125057 .dst_constraints = .{ .{ .int = .dword }, .any },125583 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125073,6 +125599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125073,6 +125599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125073 .unused,125599 .unused,
125074 },125600 },
125075 .dst_temps = .{ .{ .rc = .sse }, .unused },125601 .dst_temps = .{ .{ .rc = .sse }, .unused },
125602 .clobbers = .{ .eflags = true },
125076 .each = .{ .once = &.{125603 .each = .{ .once = &.{
125077 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },125604 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
125078 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },125605 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -125086,6 +125613,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125086,6 +125613,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125086 .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b01_01_01_01), ._ },125613 .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b01_01_01_01), ._ },
125087 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },125614 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },
125088 } },125615 } },
125616 }, .{
125617 .required_features = .{ .avx, .fast_hops, null, null },
125618 .dst_constraints = .{ .{ .int = .dword }, .any },
125619 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125620 .patterns = &.{
125621 .{ .src = .{ .to_mem, .none, .none } },
125622 },
125623 .extra_temps = .{
125624 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
125625 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125626 .unused,
125627 .unused,
125628 .unused,
125629 .unused,
125630 .unused,
125631 .unused,
125632 .unused,
125633 .unused,
125634 .unused,
125635 },
125636 .dst_temps = .{ .{ .rc = .sse }, .unused },
125637 .clobbers = .{ .eflags = true },
125638 .each = .{ .once = &.{
125639 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125640 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
125641 .{ .@"0:", .vp_d, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
125642 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
125643 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125644 .{ ._, .vph_d, .add, .dst0x, .dst0x, .tmp1x, ._ },
125645 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125646 } },
125089 }, .{125647 }, .{
125090 .required_features = .{ .avx, null, null, null },125648 .required_features = .{ .avx, null, null, null },
125091 .dst_constraints = .{ .{ .int = .dword }, .any },125649 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125107,6 +125665,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125107,6 +125665,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125107 .unused,125665 .unused,
125108 },125666 },
125109 .dst_temps = .{ .{ .rc = .sse }, .unused },125667 .dst_temps = .{ .{ .rc = .sse }, .unused },
125668 .clobbers = .{ .eflags = true },
125110 .each = .{ .once = &.{125669 .each = .{ .once = &.{
125111 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },125670 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125112 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },125671 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -125118,6 +125677,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125118,6 +125677,37 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125118 .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b01_01_01_01), ._ },125677 .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b01_01_01_01), ._ },
125119 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },125678 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },
125120 } },125679 } },
125680 }, .{
125681 .required_features = .{ .ssse3, .fast_hops, null, null },
125682 .dst_constraints = .{ .{ .int = .dword }, .any },
125683 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125684 .patterns = &.{
125685 .{ .src = .{ .to_mem, .none, .none } },
125686 },
125687 .extra_temps = .{
125688 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
125689 .unused,
125690 .unused,
125691 .unused,
125692 .unused,
125693 .unused,
125694 .unused,
125695 .unused,
125696 .unused,
125697 .unused,
125698 .unused,
125699 },
125700 .dst_temps = .{ .{ .rc = .sse }, .unused },
125701 .clobbers = .{ .eflags = true },
125702 .each = .{ .once = &.{
125703 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125704 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
125705 .{ .@"0:", .p_d, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
125706 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
125707 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125708 .{ ._, .ph_d, .add, .dst0x, .dst0x, ._, ._ },
125709 .{ ._, .ph_d, .add, .dst0x, .dst0x, ._, ._ },
125710 } },
125121 }, .{125711 }, .{
125122 .required_features = .{ .sse2, null, null, null },125712 .required_features = .{ .sse2, null, null, null },
125123 .dst_constraints = .{ .{ .int = .dword }, .any },125713 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125139,6 +125729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125139,6 +125729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125139 .unused,125729 .unused,
125140 },125730 },
125141 .dst_temps = .{ .{ .rc = .sse }, .unused },125731 .dst_temps = .{ .{ .rc = .sse }, .unused },
125732 .clobbers = .{ .eflags = true },
125142 .each = .{ .once = &.{125733 .each = .{ .once = &.{
125143 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },125734 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125144 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },125735 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -125171,6 +125762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125171,6 +125762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125171 .unused,125762 .unused,
125172 },125763 },
125173 .dst_temps = .{ .{ .rc = .sse }, .unused },125764 .dst_temps = .{ .{ .rc = .sse }, .unused },
125765 .clobbers = .{ .eflags = true },
125174 .each = .{ .once = &.{125766 .each = .{ .once = &.{
125175 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },125767 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125176 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },125768 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -125190,6 +125782,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125190,6 +125782,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125190 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },125782 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125191 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },125783 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125192 } },125784 } },
125785 }, .{
125786 .required_features = .{ .avx2, .fast_hops, null, null },
125787 .dst_constraints = .{ .{ .int = .dword }, .any },
125788 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125789 .patterns = &.{
125790 .{ .src = .{ .to_mem, .none, .none } },
125791 },
125792 .extra_temps = .{
125793 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
125794 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
125795 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125796 .unused,
125797 .unused,
125798 .unused,
125799 .unused,
125800 .unused,
125801 .unused,
125802 .unused,
125803 .unused,
125804 },
125805 .dst_temps = .{ .{ .rc = .sse }, .unused },
125806 .clobbers = .{ .eflags = true },
125807 .each = .{ .once = &.{
125808 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125809 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
125810 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_size), ._, ._ },
125811 .{ ._, .vp_, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
125812 .{ .@"0:", .vp_d, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
125813 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
125814 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125815 .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
125816 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125817 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125818 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125819 } },
125193 }, .{125820 }, .{
125194 .required_features = .{ .avx2, null, null, null },125821 .required_features = .{ .avx2, null, null, null },
125195 .dst_constraints = .{ .{ .int = .dword }, .any },125822 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125211,6 +125838,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125211,6 +125838,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125211 .unused,125838 .unused,
125212 },125839 },
125213 .dst_temps = .{ .{ .rc = .sse }, .unused },125840 .dst_temps = .{ .{ .rc = .sse }, .unused },
125841 .clobbers = .{ .eflags = true },
125214 .each = .{ .once = &.{125842 .each = .{ .once = &.{
125215 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },125843 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125216 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },125844 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -125226,6 +125854,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125226,6 +125854,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125226 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },125854 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125227 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },125855 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125228 } },125856 } },
125857 }, .{
125858 .required_features = .{ .avx, .fast_hops, null, null },
125859 .dst_constraints = .{ .{ .int = .dword }, .any },
125860 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .yword, .is = .dword } }, .any, .any },
125861 .patterns = &.{
125862 .{ .src = .{ .to_mem, .none, .none } },
125863 },
125864 .extra_temps = .{
125865 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
125866 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
125867 .{ .type = .vector_4_u32, .kind = .{ .rc = .sse } },
125868 .unused,
125869 .unused,
125870 .unused,
125871 .unused,
125872 .unused,
125873 .unused,
125874 .unused,
125875 .unused,
125876 },
125877 .dst_temps = .{ .{ .rc = .sse }, .unused },
125878 .clobbers = .{ .eflags = true },
125879 .each = .{ .once = &.{
125880 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125881 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
125882 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
125883 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
125884 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
125885 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125886 .{ .@"0:", .vp_d, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
125887 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
125888 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125889 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125890 .{ ._, .vph_d, .add, .dst0x, .dst0x, .dst0x, ._ },
125891 } },
125229 }, .{125892 }, .{
125230 .required_features = .{ .avx, null, null, null },125893 .required_features = .{ .avx, null, null, null },
125231 .dst_constraints = .{ .{ .int = .dword }, .any },125894 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125262,6 +125925,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125262,6 +125925,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125262 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },125925 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125263 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },125926 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125264 } },125927 } },
125928 }, .{
125929 .required_features = .{ .ssse3, .fast_hops, null, null },
125930 .dst_constraints = .{ .{ .int = .dword }, .any },
125931 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .xword, .is = .dword } }, .any, .any },
125932 .patterns = &.{
125933 .{ .src = .{ .to_mem, .none, .none } },
125934 },
125935 .extra_temps = .{
125936 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
125937 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
125938 .unused,
125939 .unused,
125940 .unused,
125941 .unused,
125942 .unused,
125943 .unused,
125944 .unused,
125945 .unused,
125946 .unused,
125947 },
125948 .dst_temps = .{ .{ .rc = .sse }, .unused },
125949 .clobbers = .{ .eflags = true },
125950 .each = .{ .once = &.{
125951 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125952 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
125953 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
125954 .{ ._, .p_, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
125955 .{ .@"0:", .p_d, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
125956 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
125957 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125958 .{ ._, .ph_d, .add, .dst0x, .dst0x, ._, ._ },
125959 .{ ._, .ph_d, .add, .dst0x, .dst0x, ._, ._ },
125960 } },
125265 }, .{125961 }, .{
125266 .required_features = .{ .sse2, null, null, null },125962 .required_features = .{ .sse2, null, null, null },
125267 .dst_constraints = .{ .{ .int = .dword }, .any },125963 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -125283,6 +125979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125283,6 +125979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125283 .unused,125979 .unused,
125284 },125980 },
125285 .dst_temps = .{ .{ .rc = .sse }, .unused },125981 .dst_temps = .{ .{ .rc = .sse }, .unused },
125982 .clobbers = .{ .eflags = true },
125286 .each = .{ .once = &.{125983 .each = .{ .once = &.{
125287 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },125984 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125288 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },125985 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -125298,7 +125995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125298,7 +125995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125298 } },125995 } },
125299 }, .{125996 }, .{
125300 .dst_constraints = .{ .{ .int = .dword }, .any },125997 .dst_constraints = .{ .{ .int = .dword }, .any },
125301 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },125998 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
125302 .patterns = &.{125999 .patterns = &.{
125303 .{ .src = .{ .to_mem, .none, .none } },126000 .{ .src = .{ .to_mem, .none, .none } },
125304 },126001 },
...@@ -125324,27 +126021,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125324,27 +126021,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125324 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },126021 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
125325 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },126022 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125326 } },126023 } },
125327 }, .{
125328 .required_features = .{ .sse, null, null, null },
125329 .dst_constraints = .{ .{ .int = .qword }, .any },
125330 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125331 .patterns = &.{
125332 .{ .src = .{ .mut_mem, .none, .none } },
125333 .{ .src = .{ .mut_gpr, .none, .none } },
125334 .{ .src = .{ .to_mut_sse, .none, .none } },
125335 },
125336 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125337 .each = .{ .once = &.{} },
125338 }, .{
125339 .required_features = .{ .@"64bit", null, null, null },
125340 .dst_constraints = .{ .{ .int = .qword }, .any },
125341 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125342 .patterns = &.{
125343 .{ .src = .{ .mut_mem, .none, .none } },
125344 .{ .src = .{ .to_mut_gpr, .none, .none } },
125345 },
125346 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125347 .each = .{ .once = &.{} },
125348 }, .{126024 }, .{
125349 .required_features = .{ .avx, null, null, null },126025 .required_features = .{ .avx, null, null, null },
125350 .dst_constraints = .{ .{ .int = .qword }, .any },126026 .dst_constraints = .{ .{ .int = .qword }, .any },
...@@ -125523,7 +126199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125523,7 +126199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125523 .unused,126199 .unused,
125524 .unused,126200 .unused,
125525 },126201 },
125526 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },126202 .dst_temps = .{ .{ .rc = .sse }, .unused },
125527 .each = .{ .once = &.{126203 .each = .{ .once = &.{
125528 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },126204 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
125529 .{ ._, .vp_q, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },126205 .{ ._, .vp_q, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -125552,7 +126228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125552,7 +126228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125552 .unused,126228 .unused,
125553 .unused,126229 .unused,
125554 },126230 },
125555 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },126231 .dst_temps = .{ .{ .rc = .sse }, .unused },
125556 .each = .{ .once = &.{126232 .each = .{ .once = &.{
125557 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },126233 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125558 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },126234 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
...@@ -125586,6 +126262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125586,6 +126262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125586 .unused,126262 .unused,
125587 },126263 },
125588 .dst_temps = .{ .{ .rc = .sse }, .unused },126264 .dst_temps = .{ .{ .rc = .sse }, .unused },
126265 .clobbers = .{ .eflags = true },
125589 .each = .{ .once = &.{126266 .each = .{ .once = &.{
125590 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },126267 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
125591 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },126268 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -125618,6 +126295,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125618,6 +126295,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125618 .unused,126295 .unused,
125619 },126296 },
125620 .dst_temps = .{ .{ .rc = .sse }, .unused },126297 .dst_temps = .{ .{ .rc = .sse }, .unused },
126298 .clobbers = .{ .eflags = true },
125621 .each = .{ .once = &.{126299 .each = .{ .once = &.{
125622 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },126300 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125623 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },126301 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -125648,6 +126326,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125648,6 +126326,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125648 .unused,126326 .unused,
125649 },126327 },
125650 .dst_temps = .{ .{ .rc = .sse }, .unused },126328 .dst_temps = .{ .{ .rc = .sse }, .unused },
126329 .clobbers = .{ .eflags = true },
125651 .each = .{ .once = &.{126330 .each = .{ .once = &.{
125652 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },126331 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125653 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },126332 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -125678,6 +126357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125678,6 +126357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125678 .unused,126357 .unused,
125679 },126358 },
125680 .dst_temps = .{ .{ .rc = .sse }, .unused },126359 .dst_temps = .{ .{ .rc = .sse }, .unused },
126360 .clobbers = .{ .eflags = true },
125681 .each = .{ .once = &.{126361 .each = .{ .once = &.{
125682 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },126362 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125683 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },126363 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -125716,6 +126396,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125716,6 +126396,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125716 .unused,126396 .unused,
125717 },126397 },
125718 .dst_temps = .{ .{ .rc = .sse }, .unused },126398 .dst_temps = .{ .{ .rc = .sse }, .unused },
126399 .clobbers = .{ .eflags = true },
125719 .each = .{ .once = &.{126400 .each = .{ .once = &.{
125720 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },126401 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125721 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },126402 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -125750,6 +126431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125750,6 +126431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125750 .unused,126431 .unused,
125751 },126432 },
125752 .dst_temps = .{ .{ .rc = .sse }, .unused },126433 .dst_temps = .{ .{ .rc = .sse }, .unused },
126434 .clobbers = .{ .eflags = true },
125753 .each = .{ .once = &.{126435 .each = .{ .once = &.{
125754 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },126436 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125755 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },126437 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -125784,6 +126466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125784,6 +126466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125784 .unused,126466 .unused,
125785 },126467 },
125786 .dst_temps = .{ .{ .rc = .sse }, .unused },126468 .dst_temps = .{ .{ .rc = .sse }, .unused },
126469 .clobbers = .{ .eflags = true },
125787 .each = .{ .once = &.{126470 .each = .{ .once = &.{
125788 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },126471 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125789 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },126472 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
...@@ -125798,7 +126481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125798,7 +126481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125798 }, .{126481 }, .{
125799 .required_features = .{ .@"64bit", null, null, null },126482 .required_features = .{ .@"64bit", null, null, null },
125800 .dst_constraints = .{ .{ .int = .qword }, .any },126483 .dst_constraints = .{ .{ .int = .qword }, .any },
125801 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },126484 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
125802 .patterns = &.{126485 .patterns = &.{
125803 .{ .src = .{ .to_mem, .none, .none } },126486 .{ .src = .{ .to_mem, .none, .none } },
125804 },126487 },
...@@ -125824,52 +126507,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125824,52 +126507,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125824 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },126507 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
125825 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },126508 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125826 } },126509 } },
125827 }, .{
125828 .required_features = .{ .sse, null, null, null },
125829 .dst_constraints = .{ .{ .int = .xword }, .any },
125830 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125831 .patterns = &.{
125832 .{ .src = .{ .mut_mem, .none, .none } },
125833 .{ .src = .{ .mut_gpr, .none, .none } },
125834 .{ .src = .{ .to_mut_sse, .none, .none } },
125835 },
125836 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125837 .each = .{ .once = &.{} },
125838 }, .{
125839 .dst_constraints = .{ .{ .int = .xword }, .any },
125840 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125841 .patterns = &.{
125842 .{ .src = .{ .to_mut_mem, .none, .none } },
125843 },
125844 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125845 .each = .{ .once = &.{} },
125846 }, .{
125847 .required_features = .{ .avx, null, null, null },
125848 .dst_constraints = .{ .{ .int = .yword }, .any },
125849 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125850 .patterns = &.{
125851 .{ .src = .{ .mut_mem, .none, .none } },
125852 .{ .src = .{ .mut_gpr, .none, .none } },
125853 .{ .src = .{ .to_mut_sse, .none, .none } },
125854 },
125855 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125856 .each = .{ .once = &.{} },
125857 }, .{
125858 .dst_constraints = .{ .{ .int = .yword }, .any },
125859 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125860 .patterns = &.{
125861 .{ .src = .{ .to_mut_mem, .none, .none } },
125862 },
125863 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125864 .each = .{ .once = &.{} },
125865 }, .{
125866 .dst_constraints = .{ .any_int, .any },
125867 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125868 .patterns = &.{
125869 .{ .src = .{ .to_mut_mem, .none, .none } },
125870 },
125871 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125872 .each = .{ .once = &.{} },
125873 }, .{126510 }, .{
125874 .required_features = .{ .@"64bit", null, null, null },126511 .required_features = .{ .@"64bit", null, null, null },
125875 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },126512 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
...@@ -125910,26 +126547,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -125910,26 +126547,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125910 } },126547 } },
125911 } },126548 } },
125912 .Mul => comptime &.{ .{126549 .Mul => comptime &.{ .{
125913 .required_features = .{ .sse, null, null, null },
125914 .dst_constraints = .{ .{ .int = .byte }, .any },
125915 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125916 .patterns = &.{
125917 .{ .src = .{ .mut_mem, .none, .none } },
125918 .{ .src = .{ .mut_gpr, .none, .none } },
125919 .{ .src = .{ .to_mut_sse, .none, .none } },
125920 },
125921 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125922 .each = .{ .once = &.{} },
125923 }, .{
125924 .dst_constraints = .{ .{ .int = .byte }, .any },
125925 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
125926 .patterns = &.{
125927 .{ .src = .{ .mut_mem, .none, .none } },
125928 .{ .src = .{ .to_mut_gpr, .none, .none } },
125929 },
125930 .dst_temps = .{ .{ .ref = .src0 }, .unused },
125931 .each = .{ .once = &.{} },
125932 }, .{
125933 .required_features = .{ .avx, null, null, null },126550 .required_features = .{ .avx, null, null, null },
125934 .dst_constraints = .{ .{ .int = .byte }, .any },126551 .dst_constraints = .{ .{ .int = .byte }, .any },
125935 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },126552 .src_constraints = .{ .{ .scalar_int = .{ .of = .word, .is = .byte } }, .any, .any },
...@@ -126528,7 +127145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126528,7 +127145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126528 .unused,127145 .unused,
126529 .unused,127146 .unused,
126530 },127147 },
126531 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },127148 .dst_temps = .{ .{ .rc = .sse }, .unused },
126532 .each = .{ .once = &.{127149 .each = .{ .once = &.{
126533 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },127150 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
126534 .{ ._, .v_dqa, .mov, .tmp0y, .memd(.src0y, 32), ._, ._ },127151 .{ ._, .v_dqa, .mov, .tmp0y, .memd(.src0y, 32), ._, ._ },
...@@ -126566,7 +127183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126566,7 +127183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126566 .unused,127183 .unused,
126567 .unused,127184 .unused,
126568 },127185 },
126569 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },127186 .dst_temps = .{ .{ .rc = .sse }, .unused },
126570 .each = .{ .once = &.{127187 .each = .{ .once = &.{
126571 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },127188 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126572 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },127189 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -126610,6 +127227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126610,6 +127227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126610 .unused,127227 .unused,
126611 },127228 },
126612 .dst_temps = .{ .{ .rc = .sse }, .unused },127229 .dst_temps = .{ .{ .rc = .sse }, .unused },
127230 .clobbers = .{ .eflags = true },
126613 .each = .{ .once = &.{127231 .each = .{ .once = &.{
126614 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_unaligned_size), ._, ._ },127232 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_unaligned_size), ._, ._ },
126615 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },127233 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -126649,6 +127267,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126649,6 +127267,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126649 .unused,127267 .unused,
126650 },127268 },
126651 .dst_temps = .{ .{ .rc = .sse }, .unused },127269 .dst_temps = .{ .{ .rc = .sse }, .unused },
127270 .clobbers = .{ .eflags = true },
126652 .each = .{ .once = &.{127271 .each = .{ .once = &.{
126653 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },127272 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },
126654 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },127273 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -126686,6 +127305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126686,6 +127305,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126686 .unused,127305 .unused,
126687 },127306 },
126688 .dst_temps = .{ .{ .rc = .sse }, .unused },127307 .dst_temps = .{ .{ .rc = .sse }, .unused },
127308 .clobbers = .{ .eflags = true },
126689 .each = .{ .once = &.{127309 .each = .{ .once = &.{
126690 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },127310 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },
126691 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },127311 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -126725,6 +127345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126725,6 +127345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126725 .unused,127345 .unused,
126726 },127346 },
126727 .dst_temps = .{ .{ .rc = .sse }, .unused },127347 .dst_temps = .{ .{ .rc = .sse }, .unused },
127348 .clobbers = .{ .eflags = true },
126728 .each = .{ .once = &.{127349 .each = .{ .once = &.{
126729 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },127350 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },
126730 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },127351 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -126765,6 +127386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126765,6 +127386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126765 .unused,127386 .unused,
126766 },127387 },
126767 .dst_temps = .{ .{ .rc = .sse }, .unused },127388 .dst_temps = .{ .{ .rc = .sse }, .unused },
127389 .clobbers = .{ .eflags = true },
126768 .each = .{ .once = &.{127390 .each = .{ .once = &.{
126769 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },127391 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126770 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },127392 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -126815,6 +127437,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126815,6 +127437,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126815 .unused,127437 .unused,
126816 },127438 },
126817 .dst_temps = .{ .{ .rc = .sse }, .unused },127439 .dst_temps = .{ .{ .rc = .sse }, .unused },
127440 .clobbers = .{ .eflags = true },
126818 .each = .{ .once = &.{127441 .each = .{ .once = &.{
126819 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },127442 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126820 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },127443 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
...@@ -126857,6 +127480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126857,6 +127480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126857 .unused,127480 .unused,
126858 },127481 },
126859 .dst_temps = .{ .{ .rc = .sse }, .unused },127482 .dst_temps = .{ .{ .rc = .sse }, .unused },
127483 .clobbers = .{ .eflags = true },
126860 .each = .{ .once = &.{127484 .each = .{ .once = &.{
126861 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },127485 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126862 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },127486 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
...@@ -126903,6 +127527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126903,6 +127527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126903 .unused,127527 .unused,
126904 },127528 },
126905 .dst_temps = .{ .{ .rc = .sse }, .unused },127529 .dst_temps = .{ .{ .rc = .sse }, .unused },
127530 .clobbers = .{ .eflags = true },
126906 .each = .{ .once = &.{127531 .each = .{ .once = &.{
126907 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },127532 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126908 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },127533 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
...@@ -126946,6 +127571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126946,6 +127571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126946 .unused,127571 .unused,
126947 },127572 },
126948 .dst_temps = .{ .{ .rc = .sse }, .unused },127573 .dst_temps = .{ .{ .rc = .sse }, .unused },
127574 .clobbers = .{ .eflags = true },
126949 .each = .{ .once = &.{127575 .each = .{ .once = &.{
126950 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },127576 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126951 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },127577 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
...@@ -126972,7 +127598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -126972,7 +127598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126972 }, .{127598 }, .{
126973 .required_features = .{ .slow_incdec, null, null, null },127599 .required_features = .{ .slow_incdec, null, null, null },
126974 .dst_constraints = .{ .{ .int = .byte }, .any },127600 .dst_constraints = .{ .{ .int = .byte }, .any },
126975 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },127601 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
126976 .patterns = &.{127602 .patterns = &.{
126977 .{ .src = .{ .to_mem, .none, .none } },127603 .{ .src = .{ .to_mem, .none, .none } },
126978 },127604 },
...@@ -127000,7 +127626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127000,7 +127626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127000 } },127626 } },
127001 }, .{127627 }, .{
127002 .dst_constraints = .{ .{ .int = .byte }, .any },127628 .dst_constraints = .{ .{ .int = .byte }, .any },
127003 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },127629 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .byte, .is = .byte } }, .any, .any },
127004 .patterns = &.{127630 .patterns = &.{
127005 .{ .src = .{ .to_mem, .none, .none } },127631 .{ .src = .{ .to_mem, .none, .none } },
127006 },127632 },
...@@ -127026,26 +127652,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127026,26 +127652,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127026 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },127652 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
127027 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },127653 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
127028 } },127654 } },
127029 }, .{
127030 .required_features = .{ .sse, null, null, null },
127031 .dst_constraints = .{ .{ .int = .word }, .any },
127032 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
127033 .patterns = &.{
127034 .{ .src = .{ .mut_mem, .none, .none } },
127035 .{ .src = .{ .mut_gpr, .none, .none } },
127036 .{ .src = .{ .to_mut_sse, .none, .none } },
127037 },
127038 .dst_temps = .{ .{ .ref = .src0 }, .unused },
127039 .each = .{ .once = &.{} },
127040 }, .{
127041 .dst_constraints = .{ .{ .int = .word }, .any },
127042 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
127043 .patterns = &.{
127044 .{ .src = .{ .mut_mem, .none, .none } },
127045 .{ .src = .{ .to_mut_gpr, .none, .none } },
127046 },
127047 .dst_temps = .{ .{ .ref = .src0 }, .unused },
127048 .each = .{ .once = &.{} },
127049 }, .{127655 }, .{
127050 .required_features = .{ .avx, null, null, null },127656 .required_features = .{ .avx, null, null, null },
127051 .dst_constraints = .{ .{ .int = .word }, .any },127657 .dst_constraints = .{ .{ .int = .word }, .any },
...@@ -127489,7 +128095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127489,7 +128095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127489 .unused,128095 .unused,
127490 .unused,128096 .unused,
127491 },128097 },
127492 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },128098 .dst_temps = .{ .{ .rc = .sse }, .unused },
127493 .each = .{ .once = &.{128099 .each = .{ .once = &.{
127494 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },128100 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
127495 .{ ._, .vp_w, .mull, .dst0y, .dst0y, .memd(.src0y, 32), ._ },128101 .{ ._, .vp_w, .mull, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -127522,7 +128128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127522,7 +128128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127522 .unused,128128 .unused,
127523 .unused,128129 .unused,
127524 },128130 },
127525 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },128131 .dst_temps = .{ .{ .rc = .sse }, .unused },
127526 .each = .{ .once = &.{128132 .each = .{ .once = &.{
127527 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128133 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127528 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },128134 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -127562,6 +128168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127562,6 +128168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127562 .unused,128168 .unused,
127563 },128169 },
127564 .dst_temps = .{ .{ .rc = .sse }, .unused },128170 .dst_temps = .{ .{ .rc = .sse }, .unused },
128171 .clobbers = .{ .eflags = true },
127565 .each = .{ .once = &.{128172 .each = .{ .once = &.{
127566 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },128173 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
127567 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },128174 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -127598,6 +128205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127598,6 +128205,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127598 .unused,128205 .unused,
127599 },128206 },
127600 .dst_temps = .{ .{ .rc = .sse }, .unused },128207 .dst_temps = .{ .{ .rc = .sse }, .unused },
128208 .clobbers = .{ .eflags = true },
127601 .each = .{ .once = &.{128209 .each = .{ .once = &.{
127602 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },128210 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
127603 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },128211 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -127632,6 +128240,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127632,6 +128240,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127632 .unused,128240 .unused,
127633 },128241 },
127634 .dst_temps = .{ .{ .rc = .sse }, .unused },128242 .dst_temps = .{ .{ .rc = .sse }, .unused },
128243 .clobbers = .{ .eflags = true },
127635 .each = .{ .once = &.{128244 .each = .{ .once = &.{
127636 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },128245 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
127637 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },128246 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -127667,6 +128276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127667,6 +128276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127667 .unused,128276 .unused,
127668 },128277 },
127669 .dst_temps = .{ .{ .rc = .sse }, .unused },128278 .dst_temps = .{ .{ .rc = .sse }, .unused },
128279 .clobbers = .{ .eflags = true },
127670 .each = .{ .once = &.{128280 .each = .{ .once = &.{
127671 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128281 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127672 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },128282 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -127711,6 +128321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127711,6 +128321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127711 .unused,128321 .unused,
127712 },128322 },
127713 .dst_temps = .{ .{ .rc = .sse }, .unused },128323 .dst_temps = .{ .{ .rc = .sse }, .unused },
128324 .clobbers = .{ .eflags = true },
127714 .each = .{ .once = &.{128325 .each = .{ .once = &.{
127715 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128326 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127716 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },128327 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
...@@ -127750,6 +128361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127750,6 +128361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127750 .unused,128361 .unused,
127751 },128362 },
127752 .dst_temps = .{ .{ .rc = .sse }, .unused },128363 .dst_temps = .{ .{ .rc = .sse }, .unused },
128364 .clobbers = .{ .eflags = true },
127753 .each = .{ .once = &.{128365 .each = .{ .once = &.{
127754 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128366 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127755 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },128367 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
...@@ -127791,6 +128403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127791,6 +128403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127791 .unused,128403 .unused,
127792 },128404 },
127793 .dst_temps = .{ .{ .rc = .sse }, .unused },128405 .dst_temps = .{ .{ .rc = .sse }, .unused },
128406 .clobbers = .{ .eflags = true },
127794 .each = .{ .once = &.{128407 .each = .{ .once = &.{
127795 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128408 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127796 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },128409 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
...@@ -127811,7 +128424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127811,7 +128424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127811 } },128424 } },
127812 }, .{128425 }, .{
127813 .dst_constraints = .{ .{ .int = .word }, .any },128426 .dst_constraints = .{ .{ .int = .word }, .any },
127814 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },128427 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .word, .is = .word } }, .any, .any },
127815 .patterns = &.{128428 .patterns = &.{
127816 .{ .src = .{ .to_mem, .none, .none } },128429 .{ .src = .{ .to_mem, .none, .none } },
127817 },128430 },
...@@ -127837,26 +128450,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -127837,26 +128450,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127837 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },128450 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
127838 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },128451 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
127839 } },128452 } },
127840 }, .{
127841 .required_features = .{ .sse, null, null, null },
127842 .dst_constraints = .{ .{ .int = .dword }, .any },
127843 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
127844 .patterns = &.{
127845 .{ .src = .{ .mut_mem, .none, .none } },
127846 .{ .src = .{ .mut_gpr, .none, .none } },
127847 .{ .src = .{ .to_mut_sse, .none, .none } },
127848 },
127849 .dst_temps = .{ .{ .ref = .src0 }, .unused },
127850 .each = .{ .once = &.{} },
127851 }, .{
127852 .dst_constraints = .{ .{ .int = .dword }, .any },
127853 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
127854 .patterns = &.{
127855 .{ .src = .{ .mut_mem, .none, .none } },
127856 .{ .src = .{ .to_mut_gpr, .none, .none } },
127857 },
127858 .dst_temps = .{ .{ .ref = .src0 }, .unused },
127859 .each = .{ .once = &.{} },
127860 }, .{128453 }, .{
127861 .required_features = .{ .avx, null, null, null },128454 .required_features = .{ .avx, null, null, null },
127862 .dst_constraints = .{ .{ .int = .dword }, .any },128455 .dst_constraints = .{ .{ .int = .dword }, .any },
...@@ -128163,7 +128756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128163,7 +128756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128163 .unused,128756 .unused,
128164 .unused,128757 .unused,
128165 },128758 },
128166 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },128759 .dst_temps = .{ .{ .rc = .sse }, .unused },
128167 .each = .{ .once = &.{128760 .each = .{ .once = &.{
128168 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },128761 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
128169 .{ ._, .vp_d, .mull, .dst0y, .dst0y, .memd(.src0y, 32), ._ },128762 .{ ._, .vp_d, .mull, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
...@@ -128194,7 +128787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128194,7 +128787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128194 .unused,128787 .unused,
128195 .unused,128788 .unused,
128196 },128789 },
128197 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },128790 .dst_temps = .{ .{ .rc = .sse }, .unused },
128198 .each = .{ .once = &.{128791 .each = .{ .once = &.{
128199 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128792 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128200 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },128793 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -128232,6 +128825,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128232,6 +128825,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128232 .unused,128825 .unused,
128233 },128826 },
128234 .dst_temps = .{ .{ .rc = .sse }, .unused },128827 .dst_temps = .{ .{ .rc = .sse }, .unused },
128828 .clobbers = .{ .eflags = true },
128235 .each = .{ .once = &.{128829 .each = .{ .once = &.{
128236 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },128830 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
128237 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },128831 .{ ._, .v_dqa, .mov, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
...@@ -128266,6 +128860,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128266,6 +128860,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128266 .unused,128860 .unused,
128267 },128861 },
128268 .dst_temps = .{ .{ .rc = .sse }, .unused },128862 .dst_temps = .{ .{ .rc = .sse }, .unused },
128863 .clobbers = .{ .eflags = true },
128269 .each = .{ .once = &.{128864 .each = .{ .once = &.{
128270 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },128865 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
128271 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },128866 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -128298,6 +128893,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128298,6 +128893,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128298 .unused,128893 .unused,
128299 },128894 },
128300 .dst_temps = .{ .{ .rc = .sse }, .unused },128895 .dst_temps = .{ .{ .rc = .sse }, .unused },
128896 .clobbers = .{ .eflags = true },
128301 .each = .{ .once = &.{128897 .each = .{ .once = &.{
128302 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },128898 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
128303 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },128899 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -128330,6 +128926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128330,6 +128926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128330 .unused,128926 .unused,
128331 },128927 },
128332 .dst_temps = .{ .{ .rc = .sse }, .unused },128928 .dst_temps = .{ .{ .rc = .sse }, .unused },
128929 .clobbers = .{ .eflags = true },
128333 .each = .{ .once = &.{128930 .each = .{ .once = &.{
128334 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },128931 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
128335 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },128932 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
...@@ -128365,6 +128962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128365,6 +128962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128365 .unused,128962 .unused,
128366 },128963 },
128367 .dst_temps = .{ .{ .rc = .sse }, .unused },128964 .dst_temps = .{ .{ .rc = .sse }, .unused },
128965 .clobbers = .{ .eflags = true },
128368 .each = .{ .once = &.{128966 .each = .{ .once = &.{
128369 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },128967 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128370 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },128968 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
...@@ -128407,6 +129005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128407,6 +129005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128407 .unused,129005 .unused,
128408 },129006 },
128409 .dst_temps = .{ .{ .rc = .sse }, .unused },129007 .dst_temps = .{ .{ .rc = .sse }, .unused },
129008 .clobbers = .{ .eflags = true },
128410 .each = .{ .once = &.{129009 .each = .{ .once = &.{
128411 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },129010 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128412 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },129011 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
...@@ -128444,6 +129043,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128444,6 +129043,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128444 .unused,129043 .unused,
128445 },129044 },
128446 .dst_temps = .{ .{ .rc = .sse }, .unused },129045 .dst_temps = .{ .{ .rc = .sse }, .unused },
129046 .clobbers = .{ .eflags = true },
128447 .each = .{ .once = &.{129047 .each = .{ .once = &.{
128448 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },129048 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128449 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },129049 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
...@@ -128483,6 +129083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128483,6 +129083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128483 .unused,129083 .unused,
128484 },129084 },
128485 .dst_temps = .{ .{ .rc = .sse }, .unused },129085 .dst_temps = .{ .{ .rc = .sse }, .unused },
129086 .clobbers = .{ .eflags = true },
128486 .each = .{ .once = &.{129087 .each = .{ .once = &.{
128487 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },129088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128488 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },129089 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
...@@ -128519,6 +129120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128519,6 +129120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128519 .unused,129120 .unused,
128520 },129121 },
128521 .dst_temps = .{ .{ .rc = .sse }, .unused },129122 .dst_temps = .{ .{ .rc = .sse }, .unused },
129123 .clobbers = .{ .eflags = true },
128522 .each = .{ .once = &.{129124 .each = .{ .once = &.{
128523 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },129125 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128524 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },129126 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
...@@ -128539,7 +129141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128539,7 +129141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128539 } },129141 } },
128540 }, .{129142 }, .{
128541 .dst_constraints = .{ .{ .int = .dword }, .any },129143 .dst_constraints = .{ .{ .int = .dword }, .any },
128542 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },129144 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .dword, .is = .dword } }, .any, .any },
128543 .patterns = &.{129145 .patterns = &.{
128544 .{ .src = .{ .to_mem, .none, .none } },129146 .{ .src = .{ .to_mem, .none, .none } },
128545 },129147 },
...@@ -128565,31 +129167,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128565,31 +129167,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128565 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },129167 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
128566 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },129168 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
128567 } },129169 } },
128568 }, .{
128569 .required_features = .{ .sse, null, null, null },
128570 .dst_constraints = .{ .{ .int = .qword }, .any },
128571 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128572 .patterns = &.{
128573 .{ .src = .{ .mut_mem, .none, .none } },
128574 .{ .src = .{ .mut_gpr, .none, .none } },
128575 .{ .src = .{ .to_mut_sse, .none, .none } },
128576 },
128577 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128578 .each = .{ .once = &.{} },
128579 }, .{
128580 .required_features = .{ .@"64bit", null, null, null },
128581 .dst_constraints = .{ .{ .int = .qword }, .any },
128582 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128583 .patterns = &.{
128584 .{ .src = .{ .mut_mem, .none, .none } },
128585 .{ .src = .{ .to_mut_gpr, .none, .none } },
128586 },
128587 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128588 .each = .{ .once = &.{} },
128589 }, .{129170 }, .{
128590 .required_features = .{ .@"64bit", null, null, null },129171 .required_features = .{ .@"64bit", null, null, null },
128591 .dst_constraints = .{ .{ .int = .qword }, .any },129172 .dst_constraints = .{ .{ .int = .qword }, .any },
128592 .src_constraints = .{ .{ .unaligned_multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },129173 .src_constraints = .{ .{ .multiple_scalar_int = .{ .of = .qword, .is = .qword } }, .any, .any },
128593 .patterns = &.{129174 .patterns = &.{
128594 .{ .src = .{ .to_mem, .none, .none } },129175 .{ .src = .{ .to_mem, .none, .none } },
128595 },129176 },
...@@ -128615,52 +129196,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128615,52 +129196,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128615 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },129196 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
128616 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },129197 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
128617 } },129198 } },
128618 }, .{
128619 .required_features = .{ .sse, null, null, null },
128620 .dst_constraints = .{ .{ .int = .xword }, .any },
128621 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128622 .patterns = &.{
128623 .{ .src = .{ .mut_mem, .none, .none } },
128624 .{ .src = .{ .mut_gpr, .none, .none } },
128625 .{ .src = .{ .to_mut_sse, .none, .none } },
128626 },
128627 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128628 .each = .{ .once = &.{} },
128629 }, .{
128630 .dst_constraints = .{ .{ .int = .xword }, .any },
128631 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128632 .patterns = &.{
128633 .{ .src = .{ .to_mut_mem, .none, .none } },
128634 },
128635 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128636 .each = .{ .once = &.{} },
128637 }, .{
128638 .required_features = .{ .avx, null, null, null },
128639 .dst_constraints = .{ .{ .int = .yword }, .any },
128640 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128641 .patterns = &.{
128642 .{ .src = .{ .mut_mem, .none, .none } },
128643 .{ .src = .{ .mut_gpr, .none, .none } },
128644 .{ .src = .{ .to_mut_sse, .none, .none } },
128645 },
128646 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128647 .each = .{ .once = &.{} },
128648 }, .{
128649 .dst_constraints = .{ .{ .int = .yword }, .any },
128650 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128651 .patterns = &.{
128652 .{ .src = .{ .to_mut_mem, .none, .none } },
128653 },
128654 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128655 .each = .{ .once = &.{} },
128656 }, .{
128657 .dst_constraints = .{ .any_int, .any },
128658 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
128659 .patterns = &.{
128660 .{ .src = .{ .to_mut_mem, .none, .none } },
128661 },
128662 .dst_temps = .{ .{ .ref = .src0 }, .unused },
128663 .each = .{ .once = &.{} },
128664 }, .{129199 }, .{
128665 .required_features = .{ .@"64bit", .bmi2, .adx, null },129200 .required_features = .{ .@"64bit", .bmi2, .adx, null },
128666 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },129201 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
...@@ -128937,6 +129472,2289 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {...@@ -128937,6 +129472,2289 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128937 }129472 }
128938 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);129473 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
128939 },129474 },
129475 .reduce_optimized => |air_tag| if (use_old) try cg.airReduce(inst) else fallback: {
129476 const reduce = air_datas[@intFromEnum(inst)].reduce;
129477 switch (reduce.operation) {
129478 .And, .Or, .Xor => unreachable,
129479 .Min, .Max => break :fallback try cg.airReduce(inst),
129480 .Add => {},
129481 .Mul => break :fallback try cg.airReduce(inst),
129482 }
129483 var ops = try cg.tempsFromOperands(inst, .{reduce.operand});
129484 var res: [1]Temp = undefined;
129485 cg.select(&res, &.{cg.typeOfIndex(inst)}, &ops, switch (reduce.operation) {
129486 .And, .Or, .Xor => unreachable,
129487 .Min, .Max => unreachable,
129488 .Add => comptime &.{ .{
129489 .required_features = .{ .f16c, .fast_hops, null, null },
129490 .dst_constraints = .{ .{ .float = .word }, .any },
129491 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
129492 .patterns = &.{
129493 .{ .src = .{ .mem, .none, .none } },
129494 .{ .src = .{ .to_sse, .none, .none } },
129495 },
129496 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129497 .each = .{ .once = &.{
129498 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
129499 .{ ._, .vh_ps, .add, .dst0x, .dst0x, .dst0x, ._ },
129500 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129501 } },
129502 }, .{
129503 .required_features = .{ .f16c, null, null, null },
129504 .dst_constraints = .{ .{ .float = .word }, .any },
129505 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .dword, .is = .word } }, .any, .any },
129506 .patterns = &.{
129507 .{ .src = .{ .mem, .none, .none } },
129508 .{ .src = .{ .to_sse, .none, .none } },
129509 },
129510 .extra_temps = .{
129511 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
129512 .unused,
129513 .unused,
129514 .unused,
129515 .unused,
129516 .unused,
129517 .unused,
129518 .unused,
129519 .unused,
129520 .unused,
129521 .unused,
129522 },
129523 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129524 .each = .{ .once = &.{
129525 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
129526 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129527 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129528 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129529 } },
129530 }, .{
129531 .required_features = .{ .f16c, .fast_hops, null, null },
129532 .dst_constraints = .{ .{ .float = .word }, .any },
129533 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
129534 .patterns = &.{
129535 .{ .src = .{ .mem, .none, .none } },
129536 .{ .src = .{ .to_sse, .none, .none } },
129537 },
129538 .extra_temps = .{
129539 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
129540 .unused,
129541 .unused,
129542 .unused,
129543 .unused,
129544 .unused,
129545 .unused,
129546 .unused,
129547 .unused,
129548 .unused,
129549 .unused,
129550 },
129551 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129552 .each = .{ .once = &.{
129553 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
129554 .{ ._, .vh_ps, .add, .tmp0x, .dst0x, .dst0x, ._ },
129555 .{ ._, .v_ps, .shuf, .dst0x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129556 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },
129557 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129558 } },
129559 }, .{
129560 .required_features = .{ .f16c, null, null, null },
129561 .dst_constraints = .{ .{ .float = .word }, .any },
129562 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
129563 .patterns = &.{
129564 .{ .src = .{ .mem, .none, .none } },
129565 .{ .src = .{ .to_sse, .none, .none } },
129566 },
129567 .extra_temps = .{
129568 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
129569 .unused,
129570 .unused,
129571 .unused,
129572 .unused,
129573 .unused,
129574 .unused,
129575 .unused,
129576 .unused,
129577 .unused,
129578 .unused,
129579 },
129580 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129581 .each = .{ .once = &.{
129582 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
129583 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129584 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129585 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129586 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129587 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129588 } },
129589 }, .{
129590 .required_features = .{ .f16c, .fast_hops, null, null },
129591 .dst_constraints = .{ .{ .float = .word }, .any },
129592 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
129593 .patterns = &.{
129594 .{ .src = .{ .mem, .none, .none } },
129595 .{ .src = .{ .to_sse, .none, .none } },
129596 },
129597 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129598 .each = .{ .once = &.{
129599 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
129600 .{ ._, .vh_ps, .add, .dst0x, .dst0x, .dst0x, ._ },
129601 .{ ._, .vh_ps, .add, .dst0x, .dst0x, .dst0x, ._ },
129602 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129603 } },
129604 }, .{
129605 .required_features = .{ .f16c, null, null, null },
129606 .dst_constraints = .{ .{ .float = .word }, .any },
129607 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .word } }, .any, .any },
129608 .patterns = &.{
129609 .{ .src = .{ .mem, .none, .none } },
129610 .{ .src = .{ .to_sse, .none, .none } },
129611 },
129612 .extra_temps = .{
129613 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
129614 .unused,
129615 .unused,
129616 .unused,
129617 .unused,
129618 .unused,
129619 .unused,
129620 .unused,
129621 .unused,
129622 .unused,
129623 .unused,
129624 },
129625 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129626 .each = .{ .once = &.{
129627 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
129628 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129629 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
129630 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129631 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129632 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129633 } },
129634 }, .{
129635 .required_features = .{ .f16c, .fast_hops, null, null },
129636 .dst_constraints = .{ .{ .float = .word }, .any },
129637 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
129638 .patterns = &.{
129639 .{ .src = .{ .to_sse, .none, .none } },
129640 },
129641 .extra_temps = .{
129642 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
129643 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
129644 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129645 .unused,
129646 .unused,
129647 .unused,
129648 .unused,
129649 .unused,
129650 .unused,
129651 .unused,
129652 .unused,
129653 },
129654 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129655 .each = .{ .once = &.{
129656 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
129657 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
129658 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
129659 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129660 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129661 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129662 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
129663 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129664 } },
129665 }, .{
129666 .required_features = .{ .f16c, null, null, null },
129667 .dst_constraints = .{ .{ .float = .word }, .any },
129668 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
129669 .patterns = &.{
129670 .{ .src = .{ .to_sse, .none, .none } },
129671 },
129672 .extra_temps = .{
129673 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
129674 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
129675 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129676 .unused,
129677 .unused,
129678 .unused,
129679 .unused,
129680 .unused,
129681 .unused,
129682 .unused,
129683 .unused,
129684 },
129685 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129686 .each = .{ .once = &.{
129687 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
129688 .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
129689 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
129690 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129691 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
129692 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129693 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
129694 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129695 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
129696 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129697 } },
129698 }, .{
129699 .required_features = .{ .f16c, .fast_hops, null, null },
129700 .dst_constraints = .{ .{ .float = .word }, .any },
129701 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
129702 .patterns = &.{
129703 .{ .src = .{ .mem, .none, .none } },
129704 .{ .src = .{ .to_sse, .none, .none } },
129705 },
129706 .extra_temps = .{
129707 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129708 .unused,
129709 .unused,
129710 .unused,
129711 .unused,
129712 .unused,
129713 .unused,
129714 .unused,
129715 .unused,
129716 .unused,
129717 .unused,
129718 },
129719 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129720 .each = .{ .once = &.{
129721 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
129722 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129723 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129724 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
129725 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129726 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129727 } },
129728 }, .{
129729 .required_features = .{ .f16c, null, null, null },
129730 .dst_constraints = .{ .{ .float = .word }, .any },
129731 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
129732 .patterns = &.{
129733 .{ .src = .{ .mem, .none, .none } },
129734 .{ .src = .{ .to_sse, .none, .none } },
129735 },
129736 .extra_temps = .{
129737 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129738 .unused,
129739 .unused,
129740 .unused,
129741 .unused,
129742 .unused,
129743 .unused,
129744 .unused,
129745 .unused,
129746 .unused,
129747 .unused,
129748 },
129749 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129750 .each = .{ .once = &.{
129751 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
129752 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
129753 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
129754 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129755 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
129756 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129757 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129758 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129759 } },
129760 }, .{
129761 .required_features = .{ .f16c, .fast_hops, null, null },
129762 .dst_constraints = .{ .{ .float = .word }, .any },
129763 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
129764 .patterns = &.{
129765 .{ .src = .{ .to_sse, .none, .none } },
129766 },
129767 .extra_temps = .{
129768 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
129769 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
129770 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129771 .unused,
129772 .unused,
129773 .unused,
129774 .unused,
129775 .unused,
129776 .unused,
129777 .unused,
129778 .unused,
129779 },
129780 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129781 .each = .{ .once = &.{
129782 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
129783 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
129784 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129785 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
129786 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
129787 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
129788 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129789 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129790 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129791 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
129792 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129793 } },
129794 }, .{
129795 .required_features = .{ .f16c, null, null, null },
129796 .dst_constraints = .{ .{ .float = .word }, .any },
129797 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
129798 .patterns = &.{
129799 .{ .src = .{ .to_sse, .none, .none } },
129800 },
129801 .extra_temps = .{
129802 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
129803 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
129804 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129805 .unused,
129806 .unused,
129807 .unused,
129808 .unused,
129809 .unused,
129810 .unused,
129811 .unused,
129812 .unused,
129813 },
129814 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129815 .each = .{ .once = &.{
129816 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
129817 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
129818 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129819 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
129820 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
129821 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
129822 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129823 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
129824 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129825 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
129826 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129827 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
129828 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129829 } },
129830 }, .{
129831 .required_features = .{ .f16c, .fast_hops, null, null },
129832 .dst_constraints = .{ .{ .float = .word }, .any },
129833 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
129834 .patterns = &.{
129835 .{ .src = .{ .to_sse, .none, .none } },
129836 },
129837 .extra_temps = .{
129838 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129839 .unused,
129840 .unused,
129841 .unused,
129842 .unused,
129843 .unused,
129844 .unused,
129845 .unused,
129846 .unused,
129847 .unused,
129848 .unused,
129849 },
129850 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129851 .each = .{ .once = &.{
129852 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
129853 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
129854 .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ },
129855 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ },
129856 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129857 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
129858 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
129859 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129860 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129861 } },
129862 }, .{
129863 .required_features = .{ .f16c, null, null, null },
129864 .dst_constraints = .{ .{ .float = .word }, .any },
129865 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
129866 .patterns = &.{
129867 .{ .src = .{ .to_sse, .none, .none } },
129868 },
129869 .extra_temps = .{
129870 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129871 .unused,
129872 .unused,
129873 .unused,
129874 .unused,
129875 .unused,
129876 .unused,
129877 .unused,
129878 .unused,
129879 .unused,
129880 .unused,
129881 },
129882 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
129883 .each = .{ .once = &.{
129884 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
129885 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
129886 .{ ._, .v_ps, .cvtph2, .tmp0y, .tmp0x, ._, ._ },
129887 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ },
129888 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
129889 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
129890 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129891 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
129892 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129893 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
129894 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129895 } },
129896 }, .{
129897 .required_features = .{ .avx512f, .f16c, null, null },
129898 .dst_constraints = .{ .{ .float = .word }, .any },
129899 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any },
129900 .patterns = &.{
129901 .{ .src = .{ .to_mem, .none, .none } },
129902 },
129903 .extra_temps = .{
129904 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
129905 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
129906 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129907 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129908 .unused,
129909 .unused,
129910 .unused,
129911 .unused,
129912 .unused,
129913 .unused,
129914 .unused,
129915 },
129916 .dst_temps = .{ .{ .rc = .sse }, .unused },
129917 .each = .{ .once = &.{
129918 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
129919 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
129920 .{ ._, .v_ps, .mova, .tmp2y, .lead(.tmp0y, 32), ._, ._ },
129921 .{ ._, .v_ps, .@"and", .tmp2y, .tmp2y, .memd(.src0y, 32), ._ },
129922 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .mem(.src0y), ._ },
129923 .{ ._, .v_f128, .extract, .tmp3x, .tmp2y, .ui(1), ._ },
129924 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
129925 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
129926 .{ ._, .v_ps, .add, .tmp2y, .tmp2y, .tmp3y, ._ },
129927 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
129928 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
129929 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
129930 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp3y, ._ },
129931 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
129932 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129933 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
129934 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129935 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
129936 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129937 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
129938 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129939 } },
129940 }, .{
129941 .required_features = .{ .avx512f, .f16c, null, null },
129942 .dst_constraints = .{ .{ .float = .word }, .any },
129943 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any },
129944 .patterns = &.{
129945 .{ .src = .{ .to_mem, .none, .none } },
129946 },
129947 .extra_temps = .{
129948 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
129949 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129950 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129951 .unused,
129952 .unused,
129953 .unused,
129954 .unused,
129955 .unused,
129956 .unused,
129957 .unused,
129958 .unused,
129959 },
129960 .dst_temps = .{ .{ .rc = .sse }, .unused },
129961 .each = .{ .once = &.{
129962 .{ ._, .v_ps, .mova, .tmp1y, .memd(.src0y, 32), ._, ._ },
129963 .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ },
129964 .{ ._, .v_f128, .extract, .tmp2x, .tmp1y, .ui(1), ._ },
129965 .{ ._, .v_ps, .cvtph2, .tmp1y, .tmp1x, ._, ._ },
129966 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
129967 .{ ._, .v_ps, .add, .tmp1y, .tmp1y, .tmp2y, ._ },
129968 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
129969 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
129970 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
129971 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
129972 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp1y, ._ },
129973 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
129974 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
129975 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
129976 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
129977 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
129978 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ },
129979 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
129980 } },
129981 }, .{
129982 .required_features = .{ .f16c, .fast_hops, null, null },
129983 .dst_constraints = .{ .{ .float = .word }, .any },
129984 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
129985 .patterns = &.{
129986 .{ .src = .{ .to_mem, .none, .none } },
129987 },
129988 .extra_temps = .{
129989 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
129990 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
129991 .unused,
129992 .unused,
129993 .unused,
129994 .unused,
129995 .unused,
129996 .unused,
129997 .unused,
129998 .unused,
129999 .unused,
130000 },
130001 .dst_temps = .{ .{ .rc = .sse }, .unused },
130002 .clobbers = .{ .eflags = true },
130003 .each = .{ .once = &.{
130004 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
130005 .{ ._, .v_ps, .cvtph2, .dst0y, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
130006 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
130007 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp1y, ._ },
130008 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130009 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130010 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130011 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130012 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
130013 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ },
130014 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130015 } },
130016 }, .{
130017 .required_features = .{ .f16c, null, null, null },
130018 .dst_constraints = .{ .{ .float = .word }, .any },
130019 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .word } }, .any, .any },
130020 .patterns = &.{
130021 .{ .src = .{ .to_mem, .none, .none } },
130022 },
130023 .extra_temps = .{
130024 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130025 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130026 .unused,
130027 .unused,
130028 .unused,
130029 .unused,
130030 .unused,
130031 .unused,
130032 .unused,
130033 .unused,
130034 .unused,
130035 },
130036 .dst_temps = .{ .{ .rc = .sse }, .unused },
130037 .clobbers = .{ .eflags = true },
130038 .each = .{ .once = &.{
130039 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
130040 .{ ._, .v_ps, .cvtph2, .dst0y, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
130041 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memi(.src0x, .tmp0), ._, ._ },
130042 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp1y, ._ },
130043 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130044 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130045 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
130046 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
130047 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
130048 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
130049 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130050 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ },
130051 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130052 } },
130053 }, .{
130054 .required_features = .{ .avx512f, .f16c, null, null },
130055 .dst_constraints = .{ .{ .float = .word }, .any },
130056 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .word } }, .any, .any },
130057 .patterns = &.{
130058 .{ .src = .{ .to_mem, .none, .none } },
130059 },
130060 .extra_temps = .{
130061 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130062 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130063 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130064 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130065 .unused,
130066 .unused,
130067 .unused,
130068 .unused,
130069 .unused,
130070 .unused,
130071 .unused,
130072 },
130073 .dst_temps = .{ .{ .rc = .sse }, .unused },
130074 .clobbers = .{ .eflags = true },
130075 .each = .{ .once = &.{
130076 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130077 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
130078 .{ ._, .v_ps, .mova, .tmp2y, .lead(.tmp0y, 32), ._, ._ },
130079 .{ ._, ._, .mov, .tmp0d, .sia(-80, .src0, .add_size), ._, ._ },
130080 .{ ._, .v_ps, .@"and", .tmp2y, .tmp2y, .memad(.src0y, .add_size, -32), ._ },
130081 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ },
130082 .{ ._, .v_f128, .extract, .tmp3x, .tmp2y, .ui(1), ._ },
130083 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
130084 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
130085 .{ ._, .v_ps, .add, .tmp2y, .tmp2y, .tmp3y, ._ },
130086 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
130087 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
130088 .{ ._, .v_ps, .cvtph2, .tmp3y, .tmp3x, ._, ._ },
130089 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp3y, ._ },
130090 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130091 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memi(.src0x, .tmp0), ._, ._ },
130092 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130093 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130094 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130095 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130096 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130097 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
130098 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130099 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130100 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130101 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130102 } },
130103 }, .{
130104 .required_features = .{ .f16c, .fast_hops, null, null },
130105 .dst_constraints = .{ .{ .float = .word }, .any },
130106 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
130107 .patterns = &.{
130108 .{ .src = .{ .to_mem, .none, .none } },
130109 },
130110 .extra_temps = .{
130111 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130112 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130113 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130114 .unused,
130115 .unused,
130116 .unused,
130117 .unused,
130118 .unused,
130119 .unused,
130120 .unused,
130121 .unused,
130122 },
130123 .dst_temps = .{ .{ .rc = .sse }, .unused },
130124 .clobbers = .{ .eflags = true },
130125 .each = .{ .once = &.{
130126 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130127 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
130128 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
130129 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
130130 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130131 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
130132 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
130133 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130134 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memi(.src0x, .tmp0), ._, ._ },
130135 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130136 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130137 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130138 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130139 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130140 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130141 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130142 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130143 } },
130144 }, .{
130145 .required_features = .{ .f16c, null, null, null },
130146 .dst_constraints = .{ .{ .float = .word }, .any },
130147 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .word } }, .any, .any },
130148 .patterns = &.{
130149 .{ .src = .{ .to_mem, .none, .none } },
130150 },
130151 .extra_temps = .{
130152 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130153 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130154 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130155 .unused,
130156 .unused,
130157 .unused,
130158 .unused,
130159 .unused,
130160 .unused,
130161 .unused,
130162 .unused,
130163 },
130164 .dst_temps = .{ .{ .rc = .sse }, .unused },
130165 .clobbers = .{ .eflags = true },
130166 .each = .{ .once = &.{
130167 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130168 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
130169 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
130170 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
130171 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130172 .{ ._, .v_ps, .cvtph2, .dst0y, .dst0x, ._, ._ },
130173 .{ ._, .v_ps, .cvtph2, .tmp2y, .tmp2x, ._, ._ },
130174 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130175 .{ .@"0:", .v_ps, .cvtph2, .tmp2y, .memi(.src0x, .tmp0), ._, ._ },
130176 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130177 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130178 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130179 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130180 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130181 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b11_10_11_10) },
130182 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130183 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130184 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130185 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
130186 } },
130187 }, .{
130188 .required_features = .{ .avx, null, null, null },
130189 .dst_constraints = .{ .{ .float = .word }, .any },
130190 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130191 .patterns = &.{
130192 .{ .src = .{ .to_mem, .none, .none } },
130193 },
130194 .call_frame = .{ .alignment = .@"16" },
130195 .extra_temps = .{
130196 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130197 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
130198 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
130199 .unused,
130200 .unused,
130201 .unused,
130202 .unused,
130203 .unused,
130204 .unused,
130205 .unused,
130206 .unused,
130207 },
130208 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130209 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130210 .each = .{ .once = &.{
130211 .{ ._, .vp_, .xor, .dst0x, .dst0x, .dst0x, ._ },
130212 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
130213 .{ ._, .vp_w, .insr, .dst0x, .dst0x, .memad(.src0w, .add_unaligned_size, -2), .ui(0) },
130214 .{ .@"0:", .vp_, .xor, .tmp1x, .tmp1x, .tmp1x, ._ },
130215 .{ ._, .vp_w, .insr, .tmp1x, .tmp1x, .memi(.src0w, .tmp0), .ui(0) },
130216 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130217 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
130218 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130219 } },
130220 }, .{
130221 .required_features = .{ .sse2, null, null, null },
130222 .dst_constraints = .{ .{ .float = .word }, .any },
130223 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130224 .patterns = &.{
130225 .{ .src = .{ .to_mem, .none, .none } },
130226 },
130227 .call_frame = .{ .alignment = .@"16" },
130228 .extra_temps = .{
130229 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130230 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
130231 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
130232 .unused,
130233 .unused,
130234 .unused,
130235 .unused,
130236 .unused,
130237 .unused,
130238 .unused,
130239 .unused,
130240 },
130241 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130242 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130243 .each = .{ .once = &.{
130244 .{ ._, .p_, .xor, .dst0x, .dst0x, ._, ._ },
130245 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
130246 .{ ._, .p_w, .insr, .dst0x, .memad(.src0w, .add_unaligned_size, -2), .ui(0), ._ },
130247 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
130248 .{ ._, .p_w, .insr, .tmp1x, .memi(.src0w, .tmp0), .ui(0), ._ },
130249 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
130250 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
130251 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130252 } },
130253 }, .{
130254 .required_features = .{ .sse, null, null, null },
130255 .dst_constraints = .{ .{ .float = .word }, .any },
130256 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .word, .is = .word } }, .any, .any },
130257 .patterns = &.{
130258 .{ .src = .{ .to_mem, .none, .none } },
130259 },
130260 .call_frame = .{ .alignment = .@"16" },
130261 .extra_temps = .{
130262 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130263 .{ .type = .f16, .kind = .{ .reg = .ax } },
130264 .{ .type = .f32, .kind = .mem },
130265 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
130266 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addhf3" } } },
130267 .unused,
130268 .unused,
130269 .unused,
130270 .unused,
130271 .unused,
130272 .unused,
130273 },
130274 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
130275 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
130276 .each = .{ .once = &.{
130277 .{ ._, ._ps, .xor, .dst0x, .dst0x, ._, ._ },
130278 .{ ._, ._, .mov, .tmp0d, .sia(-4, .src0, .add_unaligned_size), ._, ._ },
130279 .{ ._, ._, .movzx, .tmp1d, .memad(.src0w, .add_unaligned_size, -2), ._, ._ },
130280 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
130281 .{ ._, ._ss, .mov, .dst0x, .mem(.tmp2d), ._, ._ },
130282 .{ .@"0:", ._ps, .xor, .tmp3x, .tmp3x, ._, ._ },
130283 .{ ._, ._ss, .mov, .tmp3x, .memi(.src0d, .tmp0), ._, ._ },
130284 .{ ._, ._, .call, .tmp4d, ._, ._, ._ },
130285 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
130286 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130287 } },
130288 }, .{
130289 .required_features = .{ .avx, .fast_hops, null, null },
130290 .dst_constraints = .{ .{ .float = .dword }, .any },
130291 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
130292 .patterns = &.{
130293 .{ .src = .{ .to_sse, .none, .none } },
130294 },
130295 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130296 .each = .{ .once = &.{
130297 .{ ._, .vh_ps, .add, .dst0x, .src0x, .src0x, ._ },
130298 } },
130299 }, .{
130300 .required_features = .{ .avx, null, null, null },
130301 .dst_constraints = .{ .{ .float = .dword }, .any },
130302 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
130303 .patterns = &.{
130304 .{ .src = .{ .to_sse, .none, .none } },
130305 },
130306 .extra_temps = .{
130307 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130308 .unused,
130309 .unused,
130310 .unused,
130311 .unused,
130312 .unused,
130313 .unused,
130314 .unused,
130315 .unused,
130316 .unused,
130317 .unused,
130318 },
130319 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130320 .each = .{ .once = &.{
130321 .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01_01_01_01) },
130322 .{ ._, .v_ss, .add, .dst0x, .src0x, .tmp0x, ._ },
130323 } },
130324 }, .{
130325 .required_features = .{ .sse3, .fast_hops, null, null },
130326 .dst_constraints = .{ .{ .float = .dword }, .any },
130327 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
130328 .patterns = &.{
130329 .{ .src = .{ .to_mut_sse, .none, .none } },
130330 },
130331 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130332 .each = .{ .once = &.{
130333 .{ ._, .h_ps, .add, .dst0x, .src0x, ._, ._ },
130334 } },
130335 }, .{
130336 .required_features = .{ .sse, null, null, null },
130337 .dst_constraints = .{ .{ .float = .dword }, .any },
130338 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .qword, .is = .dword } }, .any, .any },
130339 .patterns = &.{
130340 .{ .src = .{ .to_mut_sse, .none, .none } },
130341 },
130342 .extra_temps = .{
130343 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130344 .unused,
130345 .unused,
130346 .unused,
130347 .unused,
130348 .unused,
130349 .unused,
130350 .unused,
130351 .unused,
130352 .unused,
130353 .unused,
130354 },
130355 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130356 .each = .{ .once = &.{
130357 .{ ._, ._ps, .mova, .tmp0x, .src0x, ._, ._ },
130358 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01_01_01_01), ._ },
130359 .{ ._, ._ss, .add, .dst0x, .tmp0x, ._, ._ },
130360 } },
130361 }, .{
130362 .required_features = .{ .avx, .fast_hops, null, null },
130363 .dst_constraints = .{ .{ .float = .dword }, .any },
130364 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130365 .patterns = &.{
130366 .{ .src = .{ .to_sse, .none, .none } },
130367 },
130368 .extra_temps = .{
130369 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130370 .unused,
130371 .unused,
130372 .unused,
130373 .unused,
130374 .unused,
130375 .unused,
130376 .unused,
130377 .unused,
130378 .unused,
130379 .unused,
130380 },
130381 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130382 .each = .{ .once = &.{
130383 .{ ._, .vh_ps, .add, .tmp0x, .src0x, .src0x, ._ },
130384 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
130385 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },
130386 } },
130387 }, .{
130388 .required_features = .{ .avx, null, null, null },
130389 .dst_constraints = .{ .{ .float = .dword }, .any },
130390 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130391 .patterns = &.{
130392 .{ .src = .{ .to_sse, .none, .none } },
130393 },
130394 .extra_temps = .{
130395 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130396 .unused,
130397 .unused,
130398 .unused,
130399 .unused,
130400 .unused,
130401 .unused,
130402 .unused,
130403 .unused,
130404 .unused,
130405 .unused,
130406 },
130407 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130408 .each = .{ .once = &.{
130409 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
130410 .{ ._, .v_ps, .add, .tmp0x, .src0x, .tmp0x, ._ },
130411 .{ ._, .v_ps, .shuf, .dst0x, .src0x, .src0x, .ui(0b01_01_01_01) },
130412 .{ ._, .v_ss, .add, .dst0x, .tmp0x, .dst0x, ._ },
130413 } },
130414 }, .{
130415 .required_features = .{ .sse3, .fast_hops, null, null },
130416 .dst_constraints = .{ .{ .float = .dword }, .any },
130417 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130418 .patterns = &.{
130419 .{ .src = .{ .to_mut_sse, .none, .none } },
130420 },
130421 .extra_temps = .{
130422 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130423 .unused,
130424 .unused,
130425 .unused,
130426 .unused,
130427 .unused,
130428 .unused,
130429 .unused,
130430 .unused,
130431 .unused,
130432 .unused,
130433 },
130434 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130435 .each = .{ .once = &.{
130436 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
130437 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
130438 .{ ._, .h_ps, .add, .dst0x, .src0x, ._, ._ },
130439 .{ ._, ._ss, .add, .dst0x, .tmp0x, ._, ._ },
130440 } },
130441 }, .{
130442 .required_features = .{ .sse, null, null, null },
130443 .dst_constraints = .{ .{ .float = .dword }, .any },
130444 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130445 .patterns = &.{
130446 .{ .src = .{ .to_mut_sse, .none, .none } },
130447 },
130448 .extra_temps = .{
130449 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130450 .unused,
130451 .unused,
130452 .unused,
130453 .unused,
130454 .unused,
130455 .unused,
130456 .unused,
130457 .unused,
130458 .unused,
130459 .unused,
130460 },
130461 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130462 .each = .{ .once = &.{
130463 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
130464 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
130465 .{ ._, ._ss, .add, .tmp0x, .src0x, ._, ._ },
130466 .{ ._, ._ps, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
130467 .{ ._, ._ss, .add, .dst0x, .tmp0x, ._, ._ },
130468 } },
130469 }, .{
130470 .required_features = .{ .avx, .fast_hops, null, null },
130471 .dst_constraints = .{ .{ .float = .dword }, .any },
130472 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130473 .patterns = &.{
130474 .{ .src = .{ .to_sse, .none, .none } },
130475 },
130476 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130477 .each = .{ .once = &.{
130478 .{ ._, .vh_ps, .add, .dst0x, .src0x, .src0x, ._ },
130479 .{ ._, .vh_ps, .add, .dst0x, .dst0x, .dst0x, ._ },
130480 } },
130481 }, .{
130482 .required_features = .{ .avx, null, null, null },
130483 .dst_constraints = .{ .{ .float = .dword }, .any },
130484 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130485 .patterns = &.{
130486 .{ .src = .{ .to_sse, .none, .none } },
130487 },
130488 .extra_temps = .{
130489 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130490 .unused,
130491 .unused,
130492 .unused,
130493 .unused,
130494 .unused,
130495 .unused,
130496 .unused,
130497 .unused,
130498 .unused,
130499 .unused,
130500 },
130501 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130502 .each = .{ .once = &.{
130503 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
130504 .{ ._, .v_ps, .add, .dst0x, .src0x, .tmp0x, ._ },
130505 .{ ._, .v_ps, .shuf, .tmp0x, .src0x, .src0x, .ui(0b01_01_01_01) },
130506 .{ ._, .v_ss, .add, .dst0x, .src0x, .tmp0x, ._ },
130507 } },
130508 }, .{
130509 .required_features = .{ .sse3, .fast_hops, null, null },
130510 .dst_constraints = .{ .{ .float = .dword }, .any },
130511 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130512 .patterns = &.{
130513 .{ .src = .{ .to_mut_sse, .none, .none } },
130514 },
130515 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130516 .each = .{ .once = &.{
130517 .{ ._, .h_ps, .add, .dst0x, .src0x, ._, ._ },
130518 .{ ._, .h_ps, .add, .dst0x, .dst0x, ._, ._ },
130519 } },
130520 }, .{
130521 .required_features = .{ .sse, null, null, null },
130522 .dst_constraints = .{ .{ .float = .dword }, .any },
130523 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130524 .patterns = &.{
130525 .{ .src = .{ .to_mut_sse, .none, .none } },
130526 },
130527 .extra_temps = .{
130528 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130529 .unused,
130530 .unused,
130531 .unused,
130532 .unused,
130533 .unused,
130534 .unused,
130535 .unused,
130536 .unused,
130537 .unused,
130538 .unused,
130539 },
130540 .dst_temps = .{ .{ .ref = .src0 }, .unused },
130541 .each = .{ .once = &.{
130542 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
130543 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
130544 .{ ._, ._ps, .add, .dst0x, .tmp0x, ._, ._ },
130545 .{ ._, ._ps, .mova, .tmp0x, .dst0x, ._, ._ },
130546 .{ ._, ._ps, .shuf, .tmp0x, .tmp0x, .ui(0b01_01_01_01), ._ },
130547 .{ ._, ._ss, .add, .dst0x, .tmp0x, ._, ._ },
130548 } },
130549 }, .{
130550 .required_features = .{ .avx, .fast_hops, null, null },
130551 .dst_constraints = .{ .{ .float = .dword }, .any },
130552 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130553 .patterns = &.{
130554 .{ .src = .{ .to_sse, .none, .none } },
130555 },
130556 .extra_temps = .{
130557 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
130558 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130559 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130560 .unused,
130561 .unused,
130562 .unused,
130563 .unused,
130564 .unused,
130565 .unused,
130566 .unused,
130567 .unused,
130568 },
130569 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130570 .each = .{ .once = &.{
130571 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130572 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
130573 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130574 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130575 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130576 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130577 } },
130578 }, .{
130579 .required_features = .{ .avx, null, null, null },
130580 .dst_constraints = .{ .{ .float = .dword }, .any },
130581 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130582 .patterns = &.{
130583 .{ .src = .{ .to_sse, .none, .none } },
130584 },
130585 .extra_temps = .{
130586 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
130587 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130588 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130589 .unused,
130590 .unused,
130591 .unused,
130592 .unused,
130593 .unused,
130594 .unused,
130595 .unused,
130596 .unused,
130597 },
130598 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130599 .each = .{ .once = &.{
130600 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130601 .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
130602 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130603 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130604 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
130605 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130606 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130607 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130608 } },
130609 }, .{
130610 .required_features = .{ .avx, .fast_hops, null, null },
130611 .dst_constraints = .{ .{ .float = .dword }, .any },
130612 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130613 .patterns = &.{
130614 .{ .src = .{ .to_sse, .none, .none } },
130615 },
130616 .extra_temps = .{
130617 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
130618 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130619 .unused,
130620 .unused,
130621 .unused,
130622 .unused,
130623 .unused,
130624 .unused,
130625 .unused,
130626 .unused,
130627 .unused,
130628 },
130629 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130630 .each = .{ .once = &.{
130631 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130632 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130633 .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ },
130634 .{ ._, .v_ss, .add, .dst0x, .src0x, .tmp1x, ._ },
130635 } },
130636 }, .{
130637 .required_features = .{ .avx, null, null, null },
130638 .dst_constraints = .{ .{ .float = .dword }, .any },
130639 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130640 .patterns = &.{
130641 .{ .src = .{ .to_sse, .none, .none } },
130642 },
130643 .extra_temps = .{
130644 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
130645 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130646 .unused,
130647 .unused,
130648 .unused,
130649 .unused,
130650 .unused,
130651 .unused,
130652 .unused,
130653 .unused,
130654 .unused,
130655 },
130656 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
130657 .each = .{ .once = &.{
130658 .{ ._, .v_f128, .extract, .tmp1x, .src0y, .ui(1), ._ },
130659 .{ ._, .v_ps, .add, .dst0x, .src0x, .tmp1x, ._ },
130660 .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ },
130661 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
130662 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130663 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ },
130664 } },
130665 }, .{
130666 .required_features = .{ .avx512f, null, null, null },
130667 .dst_constraints = .{ .{ .float = .dword }, .any },
130668 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any },
130669 .patterns = &.{
130670 .{ .src = .{ .to_mem, .none, .none } },
130671 },
130672 .extra_temps = .{
130673 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
130674 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130675 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130676 .unused,
130677 .unused,
130678 .unused,
130679 .unused,
130680 .unused,
130681 .unused,
130682 .unused,
130683 .unused,
130684 },
130685 .dst_temps = .{ .{ .rc = .sse }, .unused },
130686 .each = .{ .once = &.{
130687 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130688 .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ },
130689 .{ ._, .v_ps, .mova, .tmp2y, .memd(.src0y, 32), ._, ._ },
130690 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .lea(.tmp0y), ._ },
130691 .{ ._, .v_ps, .@"and", .tmp2y, .tmp2y, .lead(.tmp0y, 32), ._ },
130692 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130693 .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130694 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130695 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
130696 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130697 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130698 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130699 } },
130700 }, .{
130701 .required_features = .{ .avx512f, null, null, null },
130702 .dst_constraints = .{ .{ .float = .dword }, .any },
130703 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any },
130704 .patterns = &.{
130705 .{ .src = .{ .to_mem, .none, .none } },
130706 },
130707 .extra_temps = .{
130708 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130709 .unused,
130710 .unused,
130711 .unused,
130712 .unused,
130713 .unused,
130714 .unused,
130715 .unused,
130716 .unused,
130717 .unused,
130718 .unused,
130719 },
130720 .dst_temps = .{ .{ .rc = .sse }, .unused },
130721 .each = .{ .once = &.{
130722 .{ ._, .v_ps, .mova, .dst0y, .mem(.src0y), ._, ._ },
130723 .{ ._, .v_ps, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ },
130724 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp0y, ._ },
130725 .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
130726 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
130727 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
130728 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp0x, ._ },
130729 .{ ._, .v_ps, .shuf, .tmp0x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130730 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp0x, ._ },
130731 } },
130732 }, .{
130733 .required_features = .{ .avx, .fast_hops, null, null },
130734 .dst_constraints = .{ .{ .float = .dword }, .any },
130735 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130736 .patterns = &.{
130737 .{ .src = .{ .to_mem, .none, .none } },
130738 },
130739 .extra_temps = .{
130740 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130741 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130742 .unused,
130743 .unused,
130744 .unused,
130745 .unused,
130746 .unused,
130747 .unused,
130748 .unused,
130749 .unused,
130750 .unused,
130751 },
130752 .dst_temps = .{ .{ .rc = .sse }, .unused },
130753 .clobbers = .{ .eflags = true },
130754 .each = .{ .once = &.{
130755 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
130756 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
130757 .{ .@"0:", .v_ps, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
130758 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
130759 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130760 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130761 .{ ._, .vh_ps, .add, .dst0y, .dst0y, .dst0y, ._ },
130762 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
130763 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ },
130764 } },
130765 }, .{
130766 .required_features = .{ .avx, null, null, null },
130767 .dst_constraints = .{ .{ .float = .dword }, .any },
130768 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130769 .patterns = &.{
130770 .{ .src = .{ .to_mem, .none, .none } },
130771 },
130772 .extra_temps = .{
130773 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130774 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130775 .unused,
130776 .unused,
130777 .unused,
130778 .unused,
130779 .unused,
130780 .unused,
130781 .unused,
130782 .unused,
130783 .unused,
130784 },
130785 .dst_temps = .{ .{ .rc = .sse }, .unused },
130786 .clobbers = .{ .eflags = true },
130787 .each = .{ .once = &.{
130788 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
130789 .{ ._, .v_ps, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
130790 .{ .@"0:", .v_ps, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
130791 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
130792 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130793 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
130794 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
130795 .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ },
130796 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp1x, ._ },
130797 .{ ._, .v_ps, .shuf, .tmp1x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130798 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp1x, ._ },
130799 } },
130800 }, .{
130801 .required_features = .{ .sse3, .fast_hops, null, null },
130802 .dst_constraints = .{ .{ .float = .dword }, .any },
130803 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130804 .patterns = &.{
130805 .{ .src = .{ .to_mem, .none, .none } },
130806 },
130807 .extra_temps = .{
130808 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130809 .unused,
130810 .unused,
130811 .unused,
130812 .unused,
130813 .unused,
130814 .unused,
130815 .unused,
130816 .unused,
130817 .unused,
130818 .unused,
130819 },
130820 .dst_temps = .{ .{ .rc = .sse }, .unused },
130821 .clobbers = .{ .eflags = true },
130822 .each = .{ .once = &.{
130823 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
130824 .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
130825 .{ .@"0:", ._ps, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
130826 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130827 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130828 .{ ._, .h_ps, .add, .dst0x, .dst0x, ._, ._ },
130829 .{ ._, .h_ps, .add, .dst0x, .dst0x, ._, ._ },
130830 } },
130831 }, .{
130832 .required_features = .{ .sse, null, null, null },
130833 .dst_constraints = .{ .{ .float = .dword }, .any },
130834 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130835 .patterns = &.{
130836 .{ .src = .{ .to_mem, .none, .none } },
130837 },
130838 .extra_temps = .{
130839 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130840 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130841 .unused,
130842 .unused,
130843 .unused,
130844 .unused,
130845 .unused,
130846 .unused,
130847 .unused,
130848 .unused,
130849 .unused,
130850 },
130851 .dst_temps = .{ .{ .rc = .sse }, .unused },
130852 .clobbers = .{ .eflags = true },
130853 .each = .{ .once = &.{
130854 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
130855 .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
130856 .{ .@"0:", ._ps, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
130857 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130858 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130859 .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
130860 .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ },
130861 .{ ._, ._ps, .add, .dst0x, .tmp1x, ._, ._ },
130862 .{ ._, ._ps, .mova, .tmp1x, .dst0x, ._, ._ },
130863 .{ ._, ._ps, .shuf, .tmp1x, .tmp1x, .ui(0b01_01_01_01), ._ },
130864 .{ ._, ._ss, .add, .dst0x, .tmp1x, ._, ._ },
130865 } },
130866 }, .{
130867 .required_features = .{ .avx512f, null, null, null },
130868 .dst_constraints = .{ .{ .float = .dword }, .any },
130869 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .dword } }, .any, .any },
130870 .patterns = &.{
130871 .{ .src = .{ .to_mem, .none, .none } },
130872 },
130873 .extra_temps = .{
130874 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130875 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130876 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
130877 .unused,
130878 .unused,
130879 .unused,
130880 .unused,
130881 .unused,
130882 .unused,
130883 .unused,
130884 .unused,
130885 },
130886 .dst_temps = .{ .{ .rc = .sse }, .unused },
130887 .clobbers = .{ .eflags = true },
130888 .each = .{ .once = &.{
130889 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130890 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
130891 .{ ._, .v_ps, .mova, .tmp2y, .lead(.tmp0y, 32), ._, ._ },
130892 .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ },
130893 .{ ._, .v_ps, .@"and", .tmp2y, .tmp2y, .memad(.src0y, .add_size, -32), ._ },
130894 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ },
130895 .{ .@"0:", .v_ps, .add, .tmp2y, .tmp2y, .memid(.src0y, .tmp0, 32), ._ },
130896 .{ ._, .v_ps, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
130897 .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ },
130898 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130899 .{ ._, .v_ps, .add, .dst0y, .dst0y, .tmp2y, ._ },
130900 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130901 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130902 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
130903 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130904 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130905 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130906 } },
130907 }, .{
130908 .required_features = .{ .avx, .fast_hops, null, null },
130909 .dst_constraints = .{ .{ .float = .dword }, .any },
130910 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130911 .patterns = &.{
130912 .{ .src = .{ .to_mem, .none, .none } },
130913 },
130914 .extra_temps = .{
130915 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130916 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130917 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130918 .unused,
130919 .unused,
130920 .unused,
130921 .unused,
130922 .unused,
130923 .unused,
130924 .unused,
130925 .unused,
130926 },
130927 .dst_temps = .{ .{ .rc = .sse }, .unused },
130928 .clobbers = .{ .eflags = true },
130929 .each = .{ .once = &.{
130930 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130931 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
130932 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
130933 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
130934 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130935 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130936 .{ .@"0:", .v_ps, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
130937 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130938 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130939 .{ ._, .vh_ps, .add, .dst0x, .dst0x, .dst0x, ._ },
130940 .{ ._, .vh_ps, .add, .dst0x, .dst0x, .dst0x, ._ },
130941 } },
130942 }, .{
130943 .required_features = .{ .avx, null, null, null },
130944 .dst_constraints = .{ .{ .float = .dword }, .any },
130945 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } }, .any, .any },
130946 .patterns = &.{
130947 .{ .src = .{ .to_mem, .none, .none } },
130948 },
130949 .extra_temps = .{
130950 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130951 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130952 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
130953 .unused,
130954 .unused,
130955 .unused,
130956 .unused,
130957 .unused,
130958 .unused,
130959 .unused,
130960 .unused,
130961 },
130962 .dst_temps = .{ .{ .rc = .sse }, .unused },
130963 .clobbers = .{ .eflags = true },
130964 .each = .{ .once = &.{
130965 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
130966 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
130967 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
130968 .{ ._, .v_ps, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
130969 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
130970 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130971 .{ .@"0:", .v_ps, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
130972 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
130973 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
130974 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
130975 .{ ._, .v_ps, .add, .dst0x, .dst0x, .tmp2x, ._ },
130976 .{ ._, .v_ps, .shuf, .tmp2x, .dst0x, .dst0x, .ui(0b01_01_01_01) },
130977 .{ ._, .v_ss, .add, .dst0x, .dst0x, .tmp2x, ._ },
130978 } },
130979 }, .{
130980 .required_features = .{ .sse3, .fast_hops, null, null },
130981 .dst_constraints = .{ .{ .float = .dword }, .any },
130982 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
130983 .patterns = &.{
130984 .{ .src = .{ .to_mem, .none, .none } },
130985 },
130986 .extra_temps = .{
130987 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
130988 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
130989 .unused,
130990 .unused,
130991 .unused,
130992 .unused,
130993 .unused,
130994 .unused,
130995 .unused,
130996 .unused,
130997 .unused,
130998 },
130999 .dst_temps = .{ .{ .rc = .sse }, .unused },
131000 .clobbers = .{ .eflags = true },
131001 .each = .{ .once = &.{
131002 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131003 .{ ._, ._ps, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
131004 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
131005 .{ ._, ._ps, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
131006 .{ .@"0:", ._ps, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
131007 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131008 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131009 .{ ._, .h_ps, .add, .dst0x, .dst0x, ._, ._ },
131010 .{ ._, .h_ps, .add, .dst0x, .dst0x, ._, ._ },
131011 } },
131012 }, .{
131013 .required_features = .{ .sse, null, null, null },
131014 .dst_constraints = .{ .{ .float = .dword }, .any },
131015 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } }, .any, .any },
131016 .patterns = &.{
131017 .{ .src = .{ .to_mem, .none, .none } },
131018 },
131019 .extra_temps = .{
131020 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131021 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131022 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
131023 .unused,
131024 .unused,
131025 .unused,
131026 .unused,
131027 .unused,
131028 .unused,
131029 .unused,
131030 .unused,
131031 },
131032 .dst_temps = .{ .{ .rc = .sse }, .unused },
131033 .clobbers = .{ .eflags = true },
131034 .each = .{ .once = &.{
131035 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131036 .{ ._, ._ps, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
131037 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
131038 .{ ._, ._ps, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
131039 .{ .@"0:", ._ps, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
131040 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131041 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131042 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
131043 .{ ._, ._ps, .movhl, .tmp2x, .dst0x, ._, ._ },
131044 .{ ._, ._ps, .add, .dst0x, .tmp2x, ._, ._ },
131045 .{ ._, ._ps, .mova, .tmp2x, .dst0x, ._, ._ },
131046 .{ ._, ._ps, .shuf, .tmp2x, .tmp2x, .ui(0b01_01_01_01), ._ },
131047 .{ ._, ._ss, .add, .dst0x, .tmp2x, ._, ._ },
131048 } },
131049 }, .{
131050 .required_features = .{ .avx, .fast_hops, null, null },
131051 .dst_constraints = .{ .{ .float = .qword }, .any },
131052 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131053 .patterns = &.{
131054 .{ .src = .{ .to_sse, .none, .none } },
131055 },
131056 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131057 .each = .{ .once = &.{
131058 .{ ._, .vh_pd, .add, .dst0x, .src0x, .src0x, ._ },
131059 } },
131060 }, .{
131061 .required_features = .{ .avx, null, null, null },
131062 .dst_constraints = .{ .{ .float = .qword }, .any },
131063 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131064 .patterns = &.{
131065 .{ .src = .{ .to_sse, .none, .none } },
131066 },
131067 .extra_temps = .{
131068 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131069 .unused,
131070 .unused,
131071 .unused,
131072 .unused,
131073 .unused,
131074 .unused,
131075 .unused,
131076 .unused,
131077 .unused,
131078 .unused,
131079 },
131080 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131081 .each = .{ .once = &.{
131082 .{ ._, .v_ps, .movhl, .tmp0x, .src0x, .src0x, ._ },
131083 .{ ._, .v_sd, .add, .dst0x, .src0x, .tmp0x, ._ },
131084 } },
131085 }, .{
131086 .required_features = .{ .sse3, .fast_hops, null, null },
131087 .dst_constraints = .{ .{ .float = .qword }, .any },
131088 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131089 .patterns = &.{
131090 .{ .src = .{ .to_mut_sse, .none, .none } },
131091 },
131092 .dst_temps = .{ .{ .ref = .src0 }, .unused },
131093 .each = .{ .once = &.{
131094 .{ ._, .h_pd, .add, .dst0x, .src0x, ._, ._ },
131095 } },
131096 }, .{
131097 .required_features = .{ .sse2, null, null, null },
131098 .dst_constraints = .{ .{ .float = .qword }, .any },
131099 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131100 .patterns = &.{
131101 .{ .src = .{ .to_mut_sse, .none, .none } },
131102 },
131103 .extra_temps = .{
131104 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131105 .unused,
131106 .unused,
131107 .unused,
131108 .unused,
131109 .unused,
131110 .unused,
131111 .unused,
131112 .unused,
131113 .unused,
131114 .unused,
131115 },
131116 .dst_temps = .{ .{ .ref = .src0 }, .unused },
131117 .each = .{ .once = &.{
131118 .{ ._, ._ps, .xor, .tmp0x, .tmp0x, ._, ._ },
131119 .{ ._, ._ps, .movhl, .tmp0x, .src0x, ._, ._ },
131120 .{ ._, ._sd, .add, .dst0x, .tmp0x, ._, ._ },
131121 } },
131122 }, .{
131123 .required_features = .{ .avx, .fast_hops, null, null },
131124 .dst_constraints = .{ .{ .float = .qword }, .any },
131125 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131126 .patterns = &.{
131127 .{ .src = .{ .to_sse, .none, .none } },
131128 },
131129 .extra_temps = .{
131130 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131131 .unused,
131132 .unused,
131133 .unused,
131134 .unused,
131135 .unused,
131136 .unused,
131137 .unused,
131138 .unused,
131139 .unused,
131140 .unused,
131141 },
131142 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131143 .each = .{ .once = &.{
131144 .{ ._, .vh_pd, .add, .tmp0x, .src0x, .src0x, ._ },
131145 .{ ._, .v_f128, .extract, .dst0x, .src0y, .ui(1), ._ },
131146 .{ ._, .v_sd, .add, .dst0x, .tmp0x, .dst0x, ._ },
131147 } },
131148 }, .{
131149 .required_features = .{ .avx, null, null, null },
131150 .dst_constraints = .{ .{ .float = .qword }, .any },
131151 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131152 .patterns = &.{
131153 .{ .src = .{ .to_sse, .none, .none } },
131154 },
131155 .extra_temps = .{
131156 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131157 .unused,
131158 .unused,
131159 .unused,
131160 .unused,
131161 .unused,
131162 .unused,
131163 .unused,
131164 .unused,
131165 .unused,
131166 .unused,
131167 },
131168 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131169 .each = .{ .once = &.{
131170 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
131171 .{ ._, .v_pd, .add, .tmp0x, .src0x, .tmp0x, ._ },
131172 .{ ._, .v_ps, .movhl, .dst0x, .src0x, .src0x, ._ },
131173 .{ ._, .v_sd, .add, .dst0x, .tmp0x, .dst0x, ._ },
131174 } },
131175 }, .{
131176 .required_features = .{ .avx, .fast_hops, null, null },
131177 .dst_constraints = .{ .{ .float = .qword }, .any },
131178 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131179 .patterns = &.{
131180 .{ .src = .{ .to_sse, .none, .none } },
131181 },
131182 .extra_temps = .{
131183 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131184 .unused,
131185 .unused,
131186 .unused,
131187 .unused,
131188 .unused,
131189 .unused,
131190 .unused,
131191 .unused,
131192 .unused,
131193 .unused,
131194 },
131195 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131196 .each = .{ .once = &.{
131197 .{ ._, .vh_pd, .add, .dst0y, .src0y, .src0y, ._ },
131198 .{ ._, .v_f128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
131199 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
131200 } },
131201 }, .{
131202 .required_features = .{ .avx, null, null, null },
131203 .dst_constraints = .{ .{ .float = .qword }, .any },
131204 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131205 .patterns = &.{
131206 .{ .src = .{ .to_sse, .none, .none } },
131207 },
131208 .extra_temps = .{
131209 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131210 .unused,
131211 .unused,
131212 .unused,
131213 .unused,
131214 .unused,
131215 .unused,
131216 .unused,
131217 .unused,
131218 .unused,
131219 .unused,
131220 },
131221 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
131222 .each = .{ .once = &.{
131223 .{ ._, .v_f128, .extract, .tmp0x, .src0y, .ui(1), ._ },
131224 .{ ._, .v_pd, .add, .dst0x, .src0x, .tmp0x, ._ },
131225 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
131226 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
131227 } },
131228 }, .{
131229 .required_features = .{ .avx512f, null, null, null },
131230 .dst_constraints = .{ .{ .float = .qword }, .any },
131231 .src_constraints = .{ .{ .exclusive_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any },
131232 .patterns = &.{
131233 .{ .src = .{ .to_mem, .none, .none } },
131234 },
131235 .extra_temps = .{
131236 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
131237 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131238 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
131239 .unused,
131240 .unused,
131241 .unused,
131242 .unused,
131243 .unused,
131244 .unused,
131245 .unused,
131246 .unused,
131247 },
131248 .dst_temps = .{ .{ .rc = .sse }, .unused },
131249 .each = .{ .once = &.{
131250 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131251 .{ ._, .v_pd, .mova, .dst0y, .mem(.src0y), ._, ._ },
131252 .{ ._, .v_pd, .mova, .tmp2y, .memd(.src0y, 32), ._, ._ },
131253 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .lea(.tmp0y), ._ },
131254 .{ ._, .v_pd, .@"and", .tmp2y, .tmp2y, .lead(.tmp0y, 32), ._ },
131255 .{ ._, .v_pd, .add, .dst0y, .dst0y, .tmp2y, ._ },
131256 .{ ._, .v_i128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
131257 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131258 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
131259 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131260 } },
131261 }, .{
131262 .required_features = .{ .avx512f, null, null, null },
131263 .dst_constraints = .{ .{ .float = .qword }, .any },
131264 .src_constraints = .{ .{ .exact_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any },
131265 .patterns = &.{
131266 .{ .src = .{ .to_mem, .none, .none } },
131267 },
131268 .extra_temps = .{
131269 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
131270 .unused,
131271 .unused,
131272 .unused,
131273 .unused,
131274 .unused,
131275 .unused,
131276 .unused,
131277 .unused,
131278 .unused,
131279 .unused,
131280 },
131281 .dst_temps = .{ .{ .rc = .sse }, .unused },
131282 .each = .{ .once = &.{
131283 .{ ._, .v_pd, .mova, .dst0y, .mem(.src0y), ._, ._ },
131284 .{ ._, .v_pd, .mova, .tmp0y, .memd(.src0y, 32), ._, ._ },
131285 .{ ._, .v_pd, .add, .dst0y, .dst0y, .tmp0y, ._ },
131286 .{ ._, .v_i128, .extract, .tmp0x, .dst0y, .ui(1), ._ },
131287 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp0x, ._ },
131288 .{ ._, .v_ps, .movhl, .tmp0x, .dst0x, .dst0x, ._ },
131289 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp0x, ._ },
131290 } },
131291 }, .{
131292 .required_features = .{ .avx, .fast_hops, null, null },
131293 .dst_constraints = .{ .{ .float = .qword }, .any },
131294 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131295 .patterns = &.{
131296 .{ .src = .{ .to_mem, .none, .none } },
131297 },
131298 .extra_temps = .{
131299 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131300 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131301 .unused,
131302 .unused,
131303 .unused,
131304 .unused,
131305 .unused,
131306 .unused,
131307 .unused,
131308 .unused,
131309 .unused,
131310 },
131311 .dst_temps = .{ .{ .rc = .sse }, .unused },
131312 .clobbers = .{ .eflags = true },
131313 .each = .{ .once = &.{
131314 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
131315 .{ ._, .v_pd, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
131316 .{ .@"0:", .v_pd, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
131317 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
131318 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131319 .{ ._, .vh_pd, .add, .dst0y, .dst0y, .dst0y, ._ },
131320 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
131321 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp1x, ._ },
131322 } },
131323 }, .{
131324 .required_features = .{ .avx, null, null, null },
131325 .dst_constraints = .{ .{ .float = .qword }, .any },
131326 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131327 .patterns = &.{
131328 .{ .src = .{ .to_mem, .none, .none } },
131329 },
131330 .extra_temps = .{
131331 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131332 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
131333 .unused,
131334 .unused,
131335 .unused,
131336 .unused,
131337 .unused,
131338 .unused,
131339 .unused,
131340 .unused,
131341 .unused,
131342 },
131343 .dst_temps = .{ .{ .rc = .sse }, .unused },
131344 .clobbers = .{ .eflags = true },
131345 .each = .{ .once = &.{
131346 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
131347 .{ ._, .v_pd, .mova, .dst0y, .memad(.src0y, .add_unaligned_size, -32), ._, ._ },
131348 .{ .@"0:", .v_pd, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
131349 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
131350 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131351 .{ ._, .v_f128, .extract, .tmp1x, .dst0y, .ui(1), ._ },
131352 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp1x, ._ },
131353 .{ ._, .v_ps, .movhl, .tmp1x, .dst0x, .dst0x, ._ },
131354 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp1x, ._ },
131355 } },
131356 }, .{
131357 .required_features = .{ .sse3, .fast_hops, null, null },
131358 .dst_constraints = .{ .{ .float = .qword }, .any },
131359 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131360 .patterns = &.{
131361 .{ .src = .{ .to_mem, .none, .none } },
131362 },
131363 .extra_temps = .{
131364 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131365 .unused,
131366 .unused,
131367 .unused,
131368 .unused,
131369 .unused,
131370 .unused,
131371 .unused,
131372 .unused,
131373 .unused,
131374 .unused,
131375 },
131376 .dst_temps = .{ .{ .rc = .sse }, .unused },
131377 .clobbers = .{ .eflags = true },
131378 .each = .{ .once = &.{
131379 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
131380 .{ ._, ._pd, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
131381 .{ .@"0:", ._pd, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
131382 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131383 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131384 .{ ._, .h_pd, .add, .dst0x, .dst0x, ._, ._ },
131385 } },
131386 }, .{
131387 .required_features = .{ .sse2, null, null, null },
131388 .dst_constraints = .{ .{ .float = .qword }, .any },
131389 .src_constraints = .{ .{ .unaligned_multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131390 .patterns = &.{
131391 .{ .src = .{ .to_mem, .none, .none } },
131392 },
131393 .extra_temps = .{
131394 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131395 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131396 .unused,
131397 .unused,
131398 .unused,
131399 .unused,
131400 .unused,
131401 .unused,
131402 .unused,
131403 .unused,
131404 .unused,
131405 },
131406 .dst_temps = .{ .{ .rc = .sse }, .unused },
131407 .clobbers = .{ .eflags = true },
131408 .each = .{ .once = &.{
131409 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
131410 .{ ._, ._pd, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
131411 .{ .@"0:", ._pd, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
131412 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131413 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131414 .{ ._, ._ps, .xor, .tmp1x, .tmp1x, ._, ._ },
131415 .{ ._, ._ps, .movhl, .tmp1x, .dst0x, ._, ._ },
131416 .{ ._, ._sd, .add, .dst0x, .tmp1x, ._, ._ },
131417 } },
131418 }, .{
131419 .required_features = .{ .avx512f, null, null, null },
131420 .dst_constraints = .{ .{ .float = .qword }, .any },
131421 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .zword, .is = .qword } }, .any, .any },
131422 .patterns = &.{
131423 .{ .src = .{ .to_mem, .none, .none } },
131424 },
131425 .extra_temps = .{
131426 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131427 .{ .type = .vector_64_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131428 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
131429 .unused,
131430 .unused,
131431 .unused,
131432 .unused,
131433 .unused,
131434 .unused,
131435 .unused,
131436 .unused,
131437 },
131438 .dst_temps = .{ .{ .rc = .sse }, .unused },
131439 .clobbers = .{ .eflags = true },
131440 .each = .{ .once = &.{
131441 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131442 .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
131443 .{ ._, .v_pd, .mova, .tmp2y, .lead(.tmp0y, 32), ._, ._ },
131444 .{ ._, ._, .mov, .tmp0d, .sia(-128, .src0, .add_size), ._, ._ },
131445 .{ ._, .v_pd, .@"and", .tmp2y, .tmp2y, .memad(.src0y, .add_size, -32), ._ },
131446 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -64), ._ },
131447 .{ .@"0:", .v_pd, .add, .tmp2y, .tmp2y, .memid(.src0y, .tmp0, 32), ._ },
131448 .{ ._, .v_pd, .add, .dst0y, .dst0y, .memi(.src0y, .tmp0), ._ },
131449 .{ ._, ._, .sub, .tmp0d, .si(64), ._, ._ },
131450 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131451 .{ ._, .v_pd, .add, .dst0y, .dst0y, .tmp2y, ._ },
131452 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
131453 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131454 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
131455 .{ ._, .v_sd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131456 } },
131457 }, .{
131458 .required_features = .{ .avx, .fast_hops, null, null },
131459 .dst_constraints = .{ .{ .float = .qword }, .any },
131460 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131461 .patterns = &.{
131462 .{ .src = .{ .to_mem, .none, .none } },
131463 },
131464 .extra_temps = .{
131465 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131466 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131467 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131468 .unused,
131469 .unused,
131470 .unused,
131471 .unused,
131472 .unused,
131473 .unused,
131474 .unused,
131475 .unused,
131476 },
131477 .dst_temps = .{ .{ .rc = .sse }, .unused },
131478 .clobbers = .{ .eflags = true },
131479 .each = .{ .once = &.{
131480 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131481 .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
131482 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
131483 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
131484 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
131485 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131486 .{ .@"0:", .v_pd, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
131487 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131488 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131489 .{ ._, .vh_pd, .add, .dst0x, .dst0x, .dst0x, ._ },
131490 } },
131491 }, .{
131492 .required_features = .{ .avx, null, null, null },
131493 .dst_constraints = .{ .{ .float = .qword }, .any },
131494 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } }, .any, .any },
131495 .patterns = &.{
131496 .{ .src = .{ .to_mem, .none, .none } },
131497 },
131498 .extra_temps = .{
131499 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131500 .{ .type = .vector_32_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131501 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131502 .unused,
131503 .unused,
131504 .unused,
131505 .unused,
131506 .unused,
131507 .unused,
131508 .unused,
131509 .unused,
131510 },
131511 .dst_temps = .{ .{ .rc = .sse }, .unused },
131512 .clobbers = .{ .eflags = true },
131513 .each = .{ .once = &.{
131514 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131515 .{ ._, .v_pd, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
131516 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_size), ._, ._ },
131517 .{ ._, .v_pd, .@"and", .dst0y, .dst0y, .memad(.src0y, .add_size, -32), ._ },
131518 .{ ._, .v_f128, .extract, .tmp2x, .dst0y, .ui(1), ._ },
131519 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131520 .{ .@"0:", .v_pd, .add, .dst0x, .dst0x, .memi(.src0x, .tmp0), ._ },
131521 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131522 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131523 .{ ._, .v_ps, .movhl, .tmp2x, .dst0x, .dst0x, ._ },
131524 .{ ._, .v_pd, .add, .dst0x, .dst0x, .tmp2x, ._ },
131525 } },
131526 }, .{
131527 .required_features = .{ .sse3, .fast_hops, null, null },
131528 .dst_constraints = .{ .{ .float = .qword }, .any },
131529 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131530 .patterns = &.{
131531 .{ .src = .{ .to_mem, .none, .none } },
131532 },
131533 .extra_temps = .{
131534 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131535 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131536 .unused,
131537 .unused,
131538 .unused,
131539 .unused,
131540 .unused,
131541 .unused,
131542 .unused,
131543 .unused,
131544 .unused,
131545 },
131546 .dst_temps = .{ .{ .rc = .sse }, .unused },
131547 .clobbers = .{ .eflags = true },
131548 .each = .{ .once = &.{
131549 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131550 .{ ._, ._pd, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
131551 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
131552 .{ ._, ._pd, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
131553 .{ .@"0:", ._pd, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
131554 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131555 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131556 .{ ._, .h_pd, .add, .dst0x, .dst0x, ._, ._ },
131557 } },
131558 }, .{
131559 .required_features = .{ .sse2, null, null, null },
131560 .dst_constraints = .{ .{ .float = .qword }, .any },
131561 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } }, .any, .any },
131562 .patterns = &.{
131563 .{ .src = .{ .to_mem, .none, .none } },
131564 },
131565 .extra_temps = .{
131566 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131567 .{ .type = .vector_16_u8, .kind = .{ .pand_mask_mem = .{ .ref = .src0 } } },
131568 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
131569 .unused,
131570 .unused,
131571 .unused,
131572 .unused,
131573 .unused,
131574 .unused,
131575 .unused,
131576 .unused,
131577 },
131578 .dst_temps = .{ .{ .rc = .sse }, .unused },
131579 .clobbers = .{ .eflags = true },
131580 .each = .{ .once = &.{
131581 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
131582 .{ ._, ._pd, .mova, .dst0x, .lea(.tmp0x), ._, ._ },
131583 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_size), ._, ._ },
131584 .{ ._, ._pd, .@"and", .dst0x, .memad(.src0x, .add_size, -16), ._, ._ },
131585 .{ .@"0:", ._pd, .add, .dst0x, .memi(.src0x, .tmp0), ._, ._ },
131586 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131587 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131588 .{ ._, ._ps, .xor, .tmp2x, .tmp2x, ._, ._ },
131589 .{ ._, ._ps, .movhl, .tmp2x, .dst0x, ._, ._ },
131590 .{ ._, ._pd, .add, .dst0x, .tmp2x, ._, ._ },
131591 } },
131592 }, .{
131593 .required_features = .{ .x87, null, null, null },
131594 .dst_constraints = .{ .{ .float = .qword }, .any },
131595 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } }, .any, .any },
131596 .patterns = &.{
131597 .{ .src = .{ .to_mem, .none, .none } },
131598 },
131599 .extra_temps = .{
131600 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
131601 .{ .type = .f64, .kind = .{ .reg = .st7 } },
131602 .unused,
131603 .unused,
131604 .unused,
131605 .unused,
131606 .unused,
131607 .unused,
131608 .unused,
131609 .unused,
131610 .unused,
131611 },
131612 .dst_temps = .{ .mem, .unused },
131613 .clobbers = .{ .eflags = true },
131614 .each = .{ .once = &.{
131615 .{ ._, ._, .mov, .tmp0p, .sia(-16, .src0, .add_unaligned_size), ._, ._ },
131616 .{ ._, .f_, .ld, .memad(.src0q, .add_unaligned_size, -8), ._, ._, ._ },
131617 .{ .@"0:", .f_, .add, .memi(.src0q, .tmp0), ._, ._, ._ },
131618 .{ ._, ._, .sub, .tmp0p, .si(8), ._, ._ },
131619 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131620 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
131621 } },
131622 }, .{
131623 .required_features = .{ .x87, null, null, null },
131624 .dst_constraints = .{ .{ .float = .tbyte }, .any },
131625 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .qword, .is = .tbyte } }, .any, .any },
131626 .patterns = &.{
131627 .{ .src = .{ .to_mem, .none, .none } },
131628 },
131629 .extra_temps = .{
131630 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
131631 .{ .type = .f80, .kind = .{ .reg = .st6 } },
131632 .{ .type = .f80, .kind = .{ .reg = .st7 } },
131633 .unused,
131634 .unused,
131635 .unused,
131636 .unused,
131637 .unused,
131638 .unused,
131639 .unused,
131640 .unused,
131641 },
131642 .dst_temps = .{ .mem, .unused },
131643 .clobbers = .{ .eflags = true },
131644 .each = .{ .once = &.{
131645 .{ ._, ._, .mov, .tmp0p, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
131646 .{ ._, .f_, .ld, .memad(.src0t, .add_unaligned_size, -16), ._, ._, ._ },
131647 .{ .@"0:", .f_, .ld, .memi(.src0t, .tmp0), ._, ._, ._ },
131648 .{ ._, .f_p, .add, ._, ._, ._, ._ },
131649 .{ ._, ._, .sub, .tmp0p, .si(16), ._, ._ },
131650 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131651 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
131652 } },
131653 }, .{
131654 .required_features = .{ .avx, null, null, null },
131655 .dst_constraints = .{ .{ .float = .xword }, .any },
131656 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
131657 .patterns = &.{
131658 .{ .src = .{ .to_mem, .none, .none } },
131659 },
131660 .call_frame = .{ .alignment = .@"16" },
131661 .extra_temps = .{
131662 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131663 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
131664 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
131665 .unused,
131666 .unused,
131667 .unused,
131668 .unused,
131669 .unused,
131670 .unused,
131671 .unused,
131672 .unused,
131673 },
131674 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
131675 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131676 .each = .{ .once = &.{
131677 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
131678 .{ ._, .v_dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
131679 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
131680 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
131681 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131682 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131683 } },
131684 }, .{
131685 .required_features = .{ .sse2, null, null, null },
131686 .dst_constraints = .{ .{ .float = .xword }, .any },
131687 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
131688 .patterns = &.{
131689 .{ .src = .{ .to_mem, .none, .none } },
131690 },
131691 .call_frame = .{ .alignment = .@"16" },
131692 .extra_temps = .{
131693 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131694 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
131695 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
131696 .unused,
131697 .unused,
131698 .unused,
131699 .unused,
131700 .unused,
131701 .unused,
131702 .unused,
131703 .unused,
131704 },
131705 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
131706 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131707 .each = .{ .once = &.{
131708 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
131709 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
131710 .{ .@"0:", ._dqa, .mov, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
131711 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
131712 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131713 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131714 } },
131715 }, .{
131716 .required_features = .{ .sse, null, null, null },
131717 .dst_constraints = .{ .{ .float = .xword }, .any },
131718 .src_constraints = .{ .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } }, .any, .any },
131719 .patterns = &.{
131720 .{ .src = .{ .to_mem, .none, .none } },
131721 },
131722 .call_frame = .{ .alignment = .@"16" },
131723 .extra_temps = .{
131724 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
131725 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
131726 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__addtf3" } } },
131727 .unused,
131728 .unused,
131729 .unused,
131730 .unused,
131731 .unused,
131732 .unused,
131733 .unused,
131734 .unused,
131735 },
131736 .dst_temps = .{ .{ .reg = .xmm0 }, .unused },
131737 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
131738 .each = .{ .once = &.{
131739 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
131740 .{ ._, ._ps, .mova, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
131741 .{ .@"0:", ._ps, .mova, .tmp1x, .memi(.src0x, .tmp0), ._, ._ },
131742 .{ ._, ._, .call, .tmp2d, ._, ._, ._ },
131743 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
131744 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
131745 } },
131746 } },
131747 .Mul => unreachable,
131748 }) catch |err| switch (err) {
131749 error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{
131750 @tagName(air_tag),
131751 cg.typeOf(reduce.operand).fmt(pt),
131752 ops[0].tracking(cg),
131753 }),
131754 else => |e| return e,
131755 };
131756 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
131757 },
128940 .splat => |air_tag| if (use_old) try cg.airSplat(inst) else fallback: {131758 .splat => |air_tag| if (use_old) try cg.airSplat(inst) else fallback: {
128941 const ty_op = air_datas[@intFromEnum(inst)].ty_op;131759 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
128942 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);131760 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);
...@@ -137624,7 +140442,7 @@ fn genByteSwap(...@@ -137624,7 +140442,7 @@ fn genByteSwap(
137624 return src_mcv;140442 return src_mcv;
137625 },140443 },
137626 3...8 => if (src_mcv.isRegister() and self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) {140444 3...8 => if (src_mcv.isRegister() and self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) {
137627 try self.genUnOpMir(.{ ._, .bswap }, src_ty, src_mcv);140445 try self.genUnOpMir(.{ .b_, .swap }, src_ty, src_mcv);
137628 return src_mcv;140446 return src_mcv;
137629 },140447 },
137630 9...16 => {140448 9...16 => {
...@@ -137635,7 +140453,7 @@ fn genByteSwap(...@@ -137635,7 +140453,7 @@ fn genByteSwap(
137635 break :mat_src_mcv .{ .load_frame = .{ .index = frame_index } };140453 break :mat_src_mcv .{ .load_frame = .{ .index = frame_index } };
137636 },140454 },
137637 .register_pair => |src_regs| if (self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) {140455 .register_pair => |src_regs| if (self.reuseOperand(inst, ty_op.operand, 0, src_mcv)) {
137638 for (src_regs) |src_reg| try self.asmRegister(.{ ._, .bswap }, src_reg.to64());140456 for (src_regs) |src_reg| try self.asmRegister(.{ .b_, .swap }, src_reg.to64());
137639 return .{ .register_pair = .{ src_regs[1], src_regs[0] } };140457 return .{ .register_pair = .{ src_regs[1], src_regs[0] } };
137640 } else src_mcv,140458 } else src_mcv,
137641 else => src_mcv,140459 else => src_mcv,
...@@ -137649,18 +140467,18 @@ fn genByteSwap(...@@ -137649,18 +140467,18 @@ fn genByteSwap(
137649 for (dst_regs, 0..) |dst_reg, limb_index| {140467 for (dst_regs, 0..) |dst_reg, limb_index| {
137650 if (mat_src_mcv.isBase()) {140468 if (mat_src_mcv.isBase()) {
137651 try self.asmRegisterMemory(140469 try self.asmRegisterMemory(
137652 .{ ._, if (has_movbe) .movbe else .mov },140470 .{ if (has_movbe) ._be else ._, .mov },
137653 dst_reg.to64(),140471 dst_reg.to64(),
137654 try mat_src_mcv.address().offset(@intCast(limb_index * 8)).deref().mem(self, .{ .size = .qword }),140472 try mat_src_mcv.address().offset(@intCast(limb_index * 8)).deref().mem(self, .{ .size = .qword }),
137655 );140473 );
137656 if (!has_movbe) try self.asmRegister(.{ ._, .bswap }, dst_reg.to64());140474 if (!has_movbe) try self.asmRegister(.{ .b_, .swap }, dst_reg.to64());
137657 } else {140475 } else {
137658 try self.asmRegisterRegister(140476 try self.asmRegisterRegister(
137659 .{ ._, .mov },140477 .{ ._, .mov },
137660 dst_reg.to64(),140478 dst_reg.to64(),
137661 mat_src_mcv.register_pair[limb_index].to64(),140479 mat_src_mcv.register_pair[limb_index].to64(),
137662 );140480 );
137663 try self.asmRegister(.{ ._, .bswap }, dst_reg.to64());140481 try self.asmRegister(.{ .b_, .swap }, dst_reg.to64());
137664 }140482 }
137665 }140483 }
137666 return .{ .register_pair = .{ dst_regs[1], dst_regs[0] } };140484 return .{ .register_pair = .{ dst_regs[1], dst_regs[0] } };
...@@ -137679,7 +140497,7 @@ fn genByteSwap(...@@ -137679,7 +140497,7 @@ fn genByteSwap(
137679140497
137680 const loop: Mir.Inst.Index = @intCast(self.mir_instructions.len);140498 const loop: Mir.Inst.Index = @intCast(self.mir_instructions.len);
137681 try self.asmRegisterMemory(140499 try self.asmRegisterMemory(
137682 .{ ._, if (has_movbe) .movbe else .mov },140500 .{ if (has_movbe) ._be else ._, .mov },
137683 temp_regs[2].to64(),140501 temp_regs[2].to64(),
137684 .{140502 .{
137685 .base = .{ .frame = dst_mcv.load_frame.index },140503 .base = .{ .frame = dst_mcv.load_frame.index },
...@@ -137692,7 +140510,7 @@ fn genByteSwap(...@@ -137692,7 +140510,7 @@ fn genByteSwap(
137692 },140510 },
137693 );140511 );
137694 try self.asmRegisterMemory(140512 try self.asmRegisterMemory(
137695 .{ ._, if (has_movbe) .movbe else .mov },140513 .{ if (has_movbe) ._be else ._, .mov },
137696 temp_regs[3].to64(),140514 temp_regs[3].to64(),
137697 .{140515 .{
137698 .base = .{ .frame = dst_mcv.load_frame.index },140516 .base = .{ .frame = dst_mcv.load_frame.index },
...@@ -137705,8 +140523,8 @@ fn genByteSwap(...@@ -137705,8 +140523,8 @@ fn genByteSwap(
137705 },140523 },
137706 );140524 );
137707 if (!has_movbe) {140525 if (!has_movbe) {
137708 try self.asmRegister(.{ ._, .bswap }, temp_regs[2].to64());140526 try self.asmRegister(.{ .b_, .swap }, temp_regs[2].to64());
137709 try self.asmRegister(.{ ._, .bswap }, temp_regs[3].to64());140527 try self.asmRegister(.{ .b_, .swap }, temp_regs[3].to64());
137710 }140528 }
137711 try self.asmMemoryRegister(.{ ._, .mov }, .{140529 try self.asmMemoryRegister(.{ ._, .mov }, .{
137712 .base = .{ .frame = dst_mcv.load_frame.index },140530 .base = .{ .frame = dst_mcv.load_frame.index },
...@@ -137751,9 +140569,9 @@ fn genByteSwap(...@@ -137751,9 +140569,9 @@ fn genByteSwap(
137751 switch (abi_size) {140569 switch (abi_size) {
137752 else => unreachable,140570 else => unreachable,
137753 2 => try self.genBinOpMir(.{ ._l, .ro }, src_ty, dst_mcv, .{ .immediate = 8 }),140571 2 => try self.genBinOpMir(.{ ._l, .ro }, src_ty, dst_mcv, .{ .immediate = 8 }),
137754 3...8 => try self.genUnOpMir(.{ ._, .bswap }, src_ty, dst_mcv),140572 3...8 => try self.genUnOpMir(.{ .b_, .swap }, src_ty, dst_mcv),
137755 }140573 }
137756 } else try self.genBinOpMir(.{ ._, .movbe }, src_ty, dst_mcv, src_mcv);140574 } else try self.genBinOpMir(.{ ._be, .mov }, src_ty, dst_mcv, src_mcv);
137757 return dst_mcv;140575 return dst_mcv;
137758}140576}
137759140577
...@@ -145626,16 +148444,16 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {...@@ -145626,16 +148444,16 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
145626 .{ ._, .pseudo }148444 .{ ._, .pseudo }
145627 else for (std.enums.values(Mir.Inst.Fixes)) |fixes| {148445 else for (std.enums.values(Mir.Inst.Fixes)) |fixes| {
145628 const fixes_name = @tagName(fixes);148446 const fixes_name = @tagName(fixes);
145629 const space_i = std.mem.indexOfScalar(u8, fixes_name, ' ');148447 const space_index = std.mem.indexOfScalar(u8, fixes_name, ' ');
145630 const fixes_prefix = if (space_i) |i|148448 const fixes_prefix = if (space_index) |index|
145631 std.meta.stringToEnum(encoder.Instruction.Prefix, fixes_name[0..i]).?148449 std.meta.stringToEnum(encoder.Instruction.Prefix, fixes_name[0..index]).?
145632 else148450 else
145633 .none;148451 .none;
145634 if (fixes_prefix != prefix) continue;148452 if (fixes_prefix != prefix) continue;
145635 const pattern = fixes_name[if (space_i) |i| i + " ".len else 0..];148453 const pattern = fixes_name[if (space_index) |index| index + " ".len else 0..];
145636 const wildcard_i = std.mem.indexOfScalar(u8, pattern, '_').?;148454 const wildcard_index = std.mem.indexOfScalar(u8, pattern, '_').?;
145637 const mnem_prefix = pattern[0..wildcard_i];148455 const mnem_prefix = pattern[0..wildcard_index];
145638 const mnem_suffix = pattern[wildcard_i + "_".len ..];148456 const mnem_suffix = pattern[wildcard_index + "_".len ..];
145639 if (!std.mem.startsWith(u8, mnem_name, mnem_prefix)) continue;148457 if (!std.mem.startsWith(u8, mnem_name, mnem_prefix)) continue;
145640 if (!std.mem.endsWith(u8, mnem_name, mnem_suffix)) continue;148458 if (!std.mem.endsWith(u8, mnem_name, mnem_suffix)) continue;
145641 break .{ fixes, std.meta.stringToEnum(148459 break .{ fixes, std.meta.stringToEnum(
...@@ -157348,7 +160166,6 @@ const Select = struct {...@@ -157348,7 +160166,6 @@ const Select = struct {
157348 bool,160166 bool,
157349 bool_vec: Memory.Size,160167 bool_vec: Memory.Size,
157350 exact_bool_vec: u16,160168 exact_bool_vec: u16,
157351 vec_len: u32,
157352 ptr_any_bool_vec,160169 ptr_any_bool_vec,
157353 ptr_bool_vec: Memory.Size,160170 ptr_bool_vec: Memory.Size,
157354 remainder_bool_vec: OfIsSizes,160171 remainder_bool_vec: OfIsSizes,
...@@ -157390,8 +160207,11 @@ const Select = struct {...@@ -157390,8 +160207,11 @@ const Select = struct {
157390 float: Memory.Size,160207 float: Memory.Size,
157391 scalar_any_float: Memory.Size,160208 scalar_any_float: Memory.Size,
157392 scalar_float: OfIsSizes,160209 scalar_float: OfIsSizes,
160210 exclusive_scalar_float: OfIsSizes,
160211 exact_scalar_float: OfIsSizes,
157393 multiple_scalar_any_float: Memory.Size,160212 multiple_scalar_any_float: Memory.Size,
157394 multiple_scalar_float: OfIsSizes,160213 multiple_scalar_float: OfIsSizes,
160214 unaligned_multiple_scalar_float: OfIsSizes,
157395 exact_int: u16,160215 exact_int: u16,
157396 exact_signed_int: u16,160216 exact_signed_int: u16,
157397 exact_unsigned_int: u16,160217 exact_unsigned_int: u16,
...@@ -157435,7 +160255,6 @@ const Select = struct {...@@ -157435,7 +160255,6 @@ const Select = struct {
157435 size.bitSize(cg.target) >= ty.vectorLen(zcu),160255 size.bitSize(cg.target) >= ty.vectorLen(zcu),
157436 .exact_bool_vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() == .bool_type and160256 .exact_bool_vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() == .bool_type and
157437 size == ty.vectorLen(zcu),160257 size == ty.vectorLen(zcu),
157438 .vec_len => |len| ty.isVector(zcu) and ty.vectorLen(zcu) == len,
157439 .ptr_any_bool_vec => switch (zcu.intern_pool.indexToKey(ty.childType(zcu).toIntern())) {160258 .ptr_any_bool_vec => switch (zcu.intern_pool.indexToKey(ty.childType(zcu).toIntern())) {
157440 .vector_type => |vector_type| vector_type.child == .bool_type,160259 .vector_type => |vector_type| vector_type.child == .bool_type,
157441 else => false,160260 else => false,
...@@ -157559,10 +160378,16 @@ const Select = struct {...@@ -157559,10 +160378,16 @@ const Select = struct {
157559 cg.floatBits(ty.scalarType(zcu)) != null,160378 cg.floatBits(ty.scalarType(zcu)) != null,
157560 .scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and160379 .scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
157561 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,160380 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,
160381 .exclusive_scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) > cg.unalignedSize(ty) and
160382 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,
160383 .exact_scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) == cg.unalignedSize(ty) and
160384 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,
157562 .multiple_scalar_any_float => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0 and160385 .multiple_scalar_any_float => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0 and
157563 cg.floatBits(ty.scalarType(zcu)) != null,160386 cg.floatBits(ty.scalarType(zcu)) != null,
157564 .multiple_scalar_float => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and160387 .multiple_scalar_float => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
157565 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,160388 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,
160389 .unaligned_multiple_scalar_float => |of_is| cg.unalignedSize(ty) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
160390 if (cg.floatBits(ty.scalarType(zcu))) |float_bits| of_is.is.bitSize(cg.target) == float_bits else false,
157566 .exact_int => |bit_size| if (cg.intInfo(ty)) |int_info| bit_size == int_info.bits else false,160391 .exact_int => |bit_size| if (cg.intInfo(ty)) |int_info| bit_size == int_info.bits else false,
157567 .exact_signed_int => |bit_size| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {160392 .exact_signed_int => |bit_size| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {
157568 .signed => bit_size == int_info.bits,160393 .signed => bit_size == int_info.bits,
src/arch/x86_64/Encoding.zig+17-16
...@@ -313,7 +313,7 @@ pub const Mnemonic = enum {...@@ -313,7 +313,7 @@ pub const Mnemonic = enum {
313 @"or", out, outs, outsb, outsd, outsw,313 @"or", out, outs, outsb, outsd, outsw,
314 pause, pop, popf, popfd, popfq, push, pushfq,314 pause, pop, popf, popfd, popfq, push, pushfq,
315 rcl, rcr,315 rcl, rcr,
316 rdfsbase, rdgsbase, rdmsr, rdpid, rdpkru, rdpmc, rdrand, rdseed, rdssd, rdssq, rdtsc, rdtscp,316 rdfsbase, rdgsbase, rdmsr, rdpid, rdpkru, rdpmc, rdrand, rdseed, rdsspd, rdsspq, rdtsc, rdtscp,
317 ret, rol, ror, rsm,317 ret, rol, ror, rsm,
318 sahf, sal, sar, sbb,318 sahf, sal, sar, sbb,
319 scas, scasb, scasd, scasq, scasw,319 scas, scasb, scasd, scasq, scasw,
...@@ -436,6 +436,7 @@ pub const Mnemonic = enum {...@@ -436,6 +436,7 @@ pub const Mnemonic = enum {
436 pblendvb, pblendw,436 pblendvb, pblendw,
437 pcmpeqq,437 pcmpeqq,
438 pextrb, pextrd, pextrq,438 pextrb, pextrd, pextrq,
439 phminposuw,
439 pinsrb, pinsrd, pinsrq,440 pinsrb, pinsrd, pinsrq,
440 pmaxsb, pmaxsd, pmaxud, pmaxuw, pminsb, pminsd, pminud, pminuw,441 pmaxsb, pmaxsd, pmaxud, pmaxuw, pminsb, pminsd, pminud, pminuw,
441 pmovsxbd, pmovsxbq, pmovsxbw, pmovsxdq, pmovsxwd, pmovsxwq,442 pmovsxbd, pmovsxbq, pmovsxbw, pmovsxdq, pmovsxwd, pmovsxwq,
...@@ -494,19 +495,19 @@ pub const Mnemonic = enum {...@@ -494,19 +495,19 @@ pub const Mnemonic = enum {
494 vpblendvb, vpblendw, vpclmulqdq,495 vpblendvb, vpblendw, vpclmulqdq,
495 vpcmpeqb, vpcmpeqd, vpcmpeqq, vpcmpeqw,496 vpcmpeqb, vpcmpeqd, vpcmpeqq, vpcmpeqw,
496 vpcmpgtb, vpcmpgtd, vpcmpgtq, vpcmpgtw,497 vpcmpgtb, vpcmpgtd, vpcmpgtq, vpcmpgtw,
497 vphaddw, vphaddsw, vphaddd, vphsubw, vphsubsw, vphsubd,
498 vperm2f128, vpermilpd, vpermilps,498 vperm2f128, vpermilpd, vpermilps,
499 vpextrb, vpextrd, vpextrq, vpextrw,499 vpextrb, vpextrd, vpextrq, vpextrw,
500 vphaddw, vphaddsw, vphaddd, vphminposuw, vphsubw, vphsubsw, vphsubd,
500 vpinsrb, vpinsrd, vpinsrq, vpinsrw,501 vpinsrb, vpinsrd, vpinsrq, vpinsrw,
502 vpmaddubsw, vpmaddwd,
501 vpmaxsb, vpmaxsd, vpmaxsw, vpmaxub, vpmaxud, vpmaxuw,503 vpmaxsb, vpmaxsd, vpmaxsw, vpmaxub, vpmaxud, vpmaxuw,
502 vpminsb, vpminsd, vpminsw, vpminub, vpminud, vpminuw,504 vpminsb, vpminsd, vpminsw, vpminub, vpminud, vpminuw,
503 vpmaddubsw,
504 vpmovmskb,505 vpmovmskb,
505 vpmovsxbd, vpmovsxbq, vpmovsxbw, vpmovsxdq, vpmovsxwd, vpmovsxwq,506 vpmovsxbd, vpmovsxbq, vpmovsxbw, vpmovsxdq, vpmovsxwd, vpmovsxwq,
506 vpmovzxbd, vpmovzxbq, vpmovzxbw, vpmovzxdq, vpmovzxwd, vpmovzxwq,507 vpmovzxbd, vpmovzxbq, vpmovzxbw, vpmovzxdq, vpmovzxwd, vpmovzxwq,
507 vpmuldq, vpmulhrsw, vpmulhw, vpmulld, vpmullw, vpmuludq,508 vpmuldq, vpmulhrsw, vpmulhuw, vpmulhw, vpmulld, vpmullw, vpmuludq,
508 vpor,509 vpor,
509 vpshufb, vpshufd, vpshufhw, vpshuflw,510 vpsadbw, vpshufb, vpshufd, vpshufhw, vpshuflw,
510 vpsignb, vpsignd, vpsignw,511 vpsignb, vpsignd, vpsignw,
511 vpslld, vpslldq, vpsllq, vpsllw,512 vpslld, vpslldq, vpsllq, vpsllw,
512 vpsrad, vpsraq, vpsraw,513 vpsrad, vpsraq, vpsraw,
...@@ -1029,7 +1030,7 @@ fn estimateInstructionLength(prefix: Prefix, encoding: Encoding, ops: []const Op...@@ -1029,7 +1030,7 @@ fn estimateInstructionLength(prefix: Prefix, encoding: Encoding, ops: []const Op
1029}1030}
10301031
1031const mnemonic_to_encodings_map = init: {1032const mnemonic_to_encodings_map = init: {
1032 @setEvalBranchQuota(5_800);1033 @setEvalBranchQuota(5_900);
1033 const ModrmExt = u3;1034 const ModrmExt = u3;
1034 const Entry = struct { Mnemonic, OpEn, []const Op, []const u8, ModrmExt, Mode, Feature };1035 const Entry = struct { Mnemonic, OpEn, []const Op, []const u8, ModrmExt, Mode, Feature };
1035 const encodings: []const Entry = @import("encodings.zon");1036 const encodings: []const Entry = @import("encodings.zon");
...@@ -1038,17 +1039,17 @@ const mnemonic_to_encodings_map = init: {...@@ -1038,17 +1039,17 @@ const mnemonic_to_encodings_map = init: {
1038 var mnemonic_map: [mnemonic_count][]Data = @splat(&.{});1039 var mnemonic_map: [mnemonic_count][]Data = @splat(&.{});
1039 for (encodings) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;1040 for (encodings) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;
1040 var data_storage: [encodings.len]Data = undefined;1041 var data_storage: [encodings.len]Data = undefined;
1041 var storage_i: usize = 0;1042 var storage_index: usize = 0;
1042 for (&mnemonic_map) |*value| {1043 for (&mnemonic_map) |*value| {
1043 value.ptr = data_storage[storage_i..].ptr;1044 value.ptr = data_storage[storage_index..].ptr;
1044 storage_i += value.len;1045 storage_index += value.len;
1045 }1046 }
1046 var mnemonic_i: [mnemonic_count]usize = @splat(0);1047 var mnemonic_index: [mnemonic_count]usize = @splat(0);
1047 const ops_len = @typeInfo(@FieldType(Data, "ops")).array.len;1048 const ops_len = @typeInfo(@FieldType(Data, "ops")).array.len;
1048 const opc_len = @typeInfo(@FieldType(Data, "opc")).array.len;1049 const opc_len = @typeInfo(@FieldType(Data, "opc")).array.len;
1049 for (encodings) |entry| {1050 for (encodings) |entry| {
1050 const i = &mnemonic_i[@intFromEnum(entry[0])];1051 const index = &mnemonic_index[@intFromEnum(entry[0])];
1051 mnemonic_map[@intFromEnum(entry[0])][i.*] = .{1052 mnemonic_map[@intFromEnum(entry[0])][index.*] = .{
1052 .op_en = entry[1],1053 .op_en = entry[1],
1053 .ops = (entry[2] ++ .{.none} ** (ops_len - entry[2].len)).*,1054 .ops = (entry[2] ++ .{.none} ** (ops_len - entry[2].len)).*,
1054 .opc_len = entry[3].len,1055 .opc_len = entry[3].len,
...@@ -1057,14 +1058,14 @@ const mnemonic_to_encodings_map = init: {...@@ -1057,14 +1058,14 @@ const mnemonic_to_encodings_map = init: {
1057 .mode = entry[5],1058 .mode = entry[5],
1058 .feature = entry[6],1059 .feature = entry[6],
1059 };1060 };
1060 i.* += 1;1061 index.* += 1;
1061 }1062 }
1062 const final_storage = data_storage;1063 const final_storage = data_storage;
1063 var final_map: [mnemonic_count][]const Data = @splat(&.{});1064 var final_map: [mnemonic_count][]const Data = @splat(&.{});
1064 storage_i = 0;1065 storage_index = 0;
1065 for (&final_map, mnemonic_map) |*final_value, value| {1066 for (&final_map, mnemonic_map) |*final_value, value| {
1066 final_value.* = final_storage[storage_i..][0..value.len];1067 final_value.* = final_storage[storage_index..][0..value.len];
1067 storage_i += value.len;1068 storage_index += value.len;
1068 }1069 }
1069 break :init final_map;1070 break :init final_map;
1070};1071};
src/arch/x86_64/Lower.zig+4-4
...@@ -567,7 +567,7 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand)...@@ -567,7 +567,7 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand)
567}567}
568568
569fn generic(lower: *Lower, inst: Mir.Inst) Error!void {569fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
570 @setEvalBranchQuota(2_600);570 @setEvalBranchQuota(2_800);
571 const fixes = switch (inst.ops) {571 const fixes = switch (inst.ops) {
572 .none => inst.data.none.fixes,572 .none => inst.data.none.fixes,
573 .inst => inst.data.inst.fixes,573 .inst => inst.data.inst.fixes,
...@@ -601,9 +601,9 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {...@@ -601,9 +601,9 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
601 var buf: [max_len]u8 = undefined;601 var buf: [max_len]u8 = undefined;
602602
603 const fixes_name = @tagName(fixes);603 const fixes_name = @tagName(fixes);
604 const pattern = fixes_name[if (std.mem.indexOfScalar(u8, fixes_name, ' ')) |i| i + 1 else 0..];604 const pattern = fixes_name[if (std.mem.indexOfScalar(u8, fixes_name, ' ')) |i| i + " ".len else 0..];
605 const wildcard_i = std.mem.indexOfScalar(u8, pattern, '_').?;605 const wildcard_index = std.mem.indexOfScalar(u8, pattern, '_').?;
606 const parts = .{ pattern[0..wildcard_i], @tagName(inst.tag), pattern[wildcard_i + 1 ..] };606 const parts = .{ pattern[0..wildcard_index], @tagName(inst.tag), pattern[wildcard_index + "_".len ..] };
607 const err_msg = "unsupported mnemonic: ";607 const err_msg = "unsupported mnemonic: ";
608 const mnemonic = std.fmt.bufPrint(&buf, "{s}{s}{s}", parts) catch608 const mnemonic = std.fmt.bufPrint(&buf, "{s}{s}{s}", parts) catch
609 return lower.fail(err_msg ++ "'{s}{s}{s}'", parts);609 return lower.fail(err_msg ++ "'{s}{s}{s}'", parts);
src/arch/x86_64/Mir.zig+138-21
...@@ -34,6 +34,16 @@ pub const Inst = struct {...@@ -34,6 +34,16 @@ pub const Inst = struct {
34 /// ___ 434 /// ___ 4
35 _4,35 _4,
3636
37 /// ___ Demote
38 _demote,
39 /// ___ Flush
40 _flush,
41 /// ___ Flush Optimized
42 _flushopt,
43 /// ___ Instructions With T0 Hint
44 _it0,
45 /// ___ Instructions With T0 Hint
46 _it1,
37 /// ___ With NTA Hint47 /// ___ With NTA Hint
38 _nta,48 _nta,
39 /// System Call ___49 /// System Call ___
...@@ -44,6 +54,8 @@ pub const Inst = struct {...@@ -44,6 +54,8 @@ pub const Inst = struct {
44 _t1,54 _t1,
45 /// ___ With T2 Hint55 /// ___ With T2 Hint
46 _t2,56 _t2,
57 /// ___ Write Back
58 _wb,
47 /// ___ With Intent to Write and T1 Hint59 /// ___ With Intent to Write and T1 Hint
48 _wt1,60 _wt1,
4961
...@@ -53,6 +65,8 @@ pub const Inst = struct {...@@ -53,6 +65,8 @@ pub const Inst = struct {
53 _csspq,65 _csspq,
54 /// ___ FS Segment Base66 /// ___ FS Segment Base
55 _fsbase,67 _fsbase,
68 /// ___ GS
69 _gs,
56 /// ___ GS Segment Base70 /// ___ GS Segment Base
57 _gsbase,71 _gsbase,
58 /// ___ Model Specific Register72 /// ___ Model Specific Register
...@@ -67,8 +81,14 @@ pub const Inst = struct {...@@ -67,8 +81,14 @@ pub const Inst = struct {
67 _pmc,81 _pmc,
68 /// ___ Random Number82 /// ___ Random Number
69 _rand,83 _rand,
84 /// ___ r Busy Flag in a Supervisor Shadow Stack token
85 _rssbsy,
70 /// ___ Random Seed86 /// ___ Random Seed
71 _seed,87 _seed,
88 /// ___ Shadow Stack Doubleword
89 _ssd,
90 /// ___ Shadow Stack Quadword
91 _ssq,
72 /// ___ Shadow Stack Pointer Doubleword92 /// ___ Shadow Stack Pointer Doubleword
73 _sspd,93 _sspd,
74 /// ___ Shadow Stack Pointer Quadword94 /// ___ Shadow Stack Pointer Quadword
...@@ -77,9 +97,15 @@ pub const Inst = struct {...@@ -77,9 +97,15 @@ pub const Inst = struct {
77 _tsc,97 _tsc,
78 /// ___ Time-Stamp Counter And Processor ID98 /// ___ Time-Stamp Counter And Processor ID
79 _tscp,99 _tscp,
100 /// ___ User Shadow Stack Doubleword
101 _ussd,
102 /// ___ User Shadow Stack Quadword
103 _ussq,
80 /// VEX-Encoded ___ MXCSR104 /// VEX-Encoded ___ MXCSR
81 v_mxcsr,105 v_mxcsr,
82106
107 /// Byte ___
108 b_,
83 /// Interrupt ___109 /// Interrupt ___
84 /// Integer ___110 /// Integer ___
85 i_,111 i_,
...@@ -118,6 +144,8 @@ pub const Inst = struct {...@@ -118,6 +144,8 @@ pub const Inst = struct {
118 _ld,144 _ld,
119 /// ___ Left Without Affecting Flags145 /// ___ Left Without Affecting Flags
120 _lx,146 _lx,
147 /// ___ Mask
148 _msk,
121 /// ___ Right149 /// ___ Right
122 /// ___ For Reading150 /// ___ For Reading
123 /// ___ Register151 /// ___ Register
...@@ -139,6 +167,7 @@ pub const Inst = struct {...@@ -139,6 +167,7 @@ pub const Inst = struct {
139 /// ___ Below167 /// ___ Below
140 _b,168 _b,
141 /// ___ Below Or Equal169 /// ___ Below Or Equal
170 /// ___ Big Endian
142 _be,171 _be,
143 /// ___ Carry172 /// ___ Carry
144 /// ___ Carry Flag173 /// ___ Carry Flag
...@@ -212,8 +241,12 @@ pub const Inst = struct {...@@ -212,8 +241,12 @@ pub const Inst = struct {
212 _w,241 _w,
213 /// ___ Doubleword242 /// ___ Doubleword
214 //_d,243 //_d,
244 /// ___ Double Quadword to Quadword
245 _dq2q,
215 /// ___ QuadWord246 /// ___ QuadWord
216 _q,247 _q,
248 /// ___ Quadword to Double Quadword
249 _q2dq,
217250
218 /// ___ String251 /// ___ String
219 //_s,252 //_s,
...@@ -369,6 +402,8 @@ pub const Inst = struct {...@@ -369,6 +402,8 @@ pub const Inst = struct {
369 fn_sw,402 fn_sw,
370 /// Float Extended ___403 /// Float Extended ___
371 fx_,404 fx_,
405 /// Float Extended ___ 64
406 fx_64,
372407
373 /// ___ in 32-bit and Compatibility Mode408 /// ___ in 32-bit and Compatibility Mode
374 _32,409 _32,
...@@ -390,6 +425,14 @@ pub const Inst = struct {...@@ -390,6 +425,14 @@ pub const Inst = struct {
390 p_dq,425 p_dq,
391 /// Packed ___ Unsigned Doubleword to Quadword426 /// Packed ___ Unsigned Doubleword to Quadword
392 p_udq,427 p_udq,
428 /// Packed Carry-Less ___ Quadword to Double Quadword
429 pcl_qdq,
430 /// Packed Half ___ Doubleword
431 ph_d,
432 /// Packed Half ___ Saturate Word
433 ph_sw,
434 /// Packed Half ___ Word
435 ph_w,
393 /// ___ Aligned Packed Integer Values436 /// ___ Aligned Packed Integer Values
394 _dqa,437 _dqa,
395 /// ___ Unaligned Packed Integer Values438 /// ___ Unaligned Packed Integer Values
...@@ -403,6 +446,10 @@ pub const Inst = struct {...@@ -403,6 +446,10 @@ pub const Inst = struct {
403 //_sd,446 //_sd,
404 /// ___ Packed Double-Precision Values447 /// ___ Packed Double-Precision Values
405 _pd,448 _pd,
449 /// Half ___ Packed Single-Precision Values
450 h_ps,
451 /// Half ___ Packed Double-Precision Values
452 h_pd,
406453
407 /// ___ Internal Caches454 /// ___ Internal Caches
408 //_d,455 //_d,
...@@ -430,7 +477,7 @@ pub const Inst = struct {...@@ -430,7 +477,7 @@ pub const Inst = struct {
430 v_w,477 v_w,
431 /// VEX-Encoded ___ Doubleword478 /// VEX-Encoded ___ Doubleword
432 v_d,479 v_d,
433 /// VEX-Encoded ___ QuadWord480 /// VEX-Encoded ___ Quadword
434 v_q,481 v_q,
435 /// VEX-Encoded ___ Aligned Packed Integer Values482 /// VEX-Encoded ___ Aligned Packed Integer Values
436 v_dqa,483 v_dqa,
...@@ -453,6 +500,14 @@ pub const Inst = struct {...@@ -453,6 +500,14 @@ pub const Inst = struct {
453 vp_dq,500 vp_dq,
454 /// VEX-Encoded Packed ___ Unsigned Doubleword to Quadword501 /// VEX-Encoded Packed ___ Unsigned Doubleword to Quadword
455 vp_udq,502 vp_udq,
503 /// VEx-Encoded Packed Carry-Less ___ Quadword to Double Quadword
504 vpcl_qdq,
505 /// VEX-Encoded Packed Half ___ Doubleword
506 vph_d,
507 /// VEX-Encoded Packed Half ___ Saturate Word
508 vph_sw,
509 /// VEX-Encoded Packed Half ___ Word
510 vph_w,
456 /// VEX-Encoded ___ Scalar Single-Precision Values511 /// VEX-Encoded ___ Scalar Single-Precision Values
457 v_ss,512 v_ss,
458 /// VEX-Encoded ___ Packed Single-Precision Values513 /// VEX-Encoded ___ Packed Single-Precision Values
...@@ -463,6 +518,10 @@ pub const Inst = struct {...@@ -463,6 +518,10 @@ pub const Inst = struct {
463 v_pd,518 v_pd,
464 /// VEX-Encoded ___ 128-Bits Of Floating-Point Data519 /// VEX-Encoded ___ 128-Bits Of Floating-Point Data
465 v_f128,520 v_f128,
521 /// VEX-Encoded Half ___ Packed Single-Precision Values
522 vh_ps,
523 /// VEX-Encoded Half ___ Packed Double-Precision Values
524 vh_pd,
466525
467 /// ___ 128-bit key with key locker526 /// ___ 128-bit key with key locker
468 _128,527 _128,
...@@ -510,6 +569,10 @@ pub const Inst = struct {...@@ -510,6 +569,10 @@ pub const Inst = struct {
510 /// Add scalar single-precision floating-point values569 /// Add scalar single-precision floating-point values
511 /// Add packed double-precision floating-point values570 /// Add packed double-precision floating-point values
512 /// Add scalar double-precision floating-point values571 /// Add scalar double-precision floating-point values
572 /// Packed single-precision floating-point horizontal add
573 /// Packed double-precision floating-point horizontal add
574 /// Packed horizontal add
575 /// Packed horizontal add and saturate
513 add,576 add,
514 /// Logical and577 /// Logical and
515 /// Bitwise logical and of packed single-precision floating-point values578 /// Bitwise logical and of packed single-precision floating-point values
...@@ -521,12 +584,15 @@ pub const Inst = struct {...@@ -521,12 +584,15 @@ pub const Inst = struct {
521 /// Bit scan reverse584 /// Bit scan reverse
522 bs,585 bs,
523 /// Byte swap586 /// Byte swap
524 bswap,587 /// Swap GS base register
588 swap,
525 /// Bit test589 /// Bit test
526 /// Bit test and complement590 /// Bit test and complement
527 /// Bit test and reset591 /// Bit test and reset
528 /// Bit test and set592 /// Bit test and set
529 bt,593 bt,
594 /// Check array index against bounds
595 bound,
530 /// Call596 /// Call
531 /// Fast system call597 /// Fast system call
532 call,598 call,
...@@ -542,17 +608,12 @@ pub const Inst = struct {...@@ -542,17 +608,12 @@ pub const Inst = struct {
542 /// Clear interrupt flag608 /// Clear interrupt flag
543 /// Clear task-switched flag in CR0609 /// Clear task-switched flag in CR0
544 /// Clear user interrupt flag610 /// Clear user interrupt flag
545 cl,
546 /// Cache line demote611 /// Cache line demote
547 cldemote,
548 /// Flush cache line612 /// Flush cache line
549 clflush,
550 /// Flush cache line optimized613 /// Flush cache line optimized
551 clflushopt,
552 /// Clear busy flag in a supervisor shadow stack token614 /// Clear busy flag in a supervisor shadow stack token
553 clrssbsy,
554 /// Cache line write back615 /// Cache line write back
555 clwb,616 cl,
556 /// Complement carry flag617 /// Complement carry flag
557 cmc,618 cmc,
558 /// Conditional move619 /// Conditional move
...@@ -650,15 +711,16 @@ pub const Inst = struct {...@@ -650,15 +711,16 @@ pub const Inst = struct {
650 lzcnt,711 lzcnt,
651 /// Move712 /// Move
652 /// Move data from string to string713 /// Move data from string to string
714 /// Move data after swapping bytes
653 /// Move scalar single-precision floating-point value715 /// Move scalar single-precision floating-point value
654 /// Move scalar double-precision floating-point value716 /// Move scalar double-precision floating-point value
655 /// Move doubleword717 /// Move doubleword
656 /// Move quadword718 /// Move quadword
657 /// Move aligned packed integer values719 /// Move aligned packed integer values
658 /// Move unaligned packed integer values720 /// Move unaligned packed integer values
721 /// Move quadword from XMM to MMX technology register
722 /// Move quadword from MMX technology to XMM register
659 mov,723 mov,
660 /// Move data after swapping bytes
661 movbe,
662 /// Move with sign extension724 /// Move with sign extension
663 movsx,725 movsx,
664 /// Move with zero extension726 /// Move with zero extension
...@@ -671,6 +733,7 @@ pub const Inst = struct {...@@ -671,6 +733,7 @@ pub const Inst = struct {
671 /// Multiply scalar double-precision floating-point values733 /// Multiply scalar double-precision floating-point values
672 /// Multiply packed unsigned doubleword integers734 /// Multiply packed unsigned doubleword integers
673 /// Multiply packed doubleword integers735 /// Multiply packed doubleword integers
736 /// Carry-less multiplication quadword
674 mul,737 mul,
675 /// Two's complement negation738 /// Two's complement negation
676 neg,739 neg,
...@@ -737,6 +800,8 @@ pub const Inst = struct {...@@ -737,6 +800,8 @@ pub const Inst = struct {
737 sca,800 sca,
738 /// Send user interprocessor interrupt801 /// Send user interprocessor interrupt
739 senduipi,802 senduipi,
803 /// Serialize instruction execution
804 serialize,
740 /// Set byte on condition805 /// Set byte on condition
741 set,806 set,
742 /// Logical shift left807 /// Logical shift left
...@@ -758,6 +823,10 @@ pub const Inst = struct {...@@ -758,6 +823,10 @@ pub const Inst = struct {
758 /// Subtract scalar single-precision floating-point values823 /// Subtract scalar single-precision floating-point values
759 /// Subtract packed double-precision floating-point values824 /// Subtract packed double-precision floating-point values
760 /// Subtract scalar double-precision floating-point values825 /// Subtract scalar double-precision floating-point values
826 /// Packed single-precision floating-point horizontal subtract
827 /// Packed double-precision floating-point horizontal subtract
828 /// Packed horizontal subtract
829 /// Packed horizontal subtract and saturate
761 sub,830 sub,
762 /// Set carry flag831 /// Set carry flag
763 /// Set direction flag832 /// Set direction flag
...@@ -772,8 +841,6 @@ pub const Inst = struct {...@@ -772,8 +841,6 @@ pub const Inst = struct {
772 st,841 st,
773 /// Store string842 /// Store string
774 sto,843 sto,
775 /// Swap GS base register
776 swapgs,
777 /// Test condition844 /// Test condition
778 /// Logical compare845 /// Logical compare
779 /// Packed bit test846 /// Packed bit test
...@@ -788,6 +855,8 @@ pub const Inst = struct {...@@ -788,6 +855,8 @@ pub const Inst = struct {
788 /// Write to model specific register855 /// Write to model specific register
789 /// Write to model specific register856 /// Write to model specific register
790 /// Write to model specific register857 /// Write to model specific register
858 /// Write to shadow stack
859 /// Write to user shadow stack
791 wr,860 wr,
792 /// Exchange and add861 /// Exchange and add
793 xadd,862 xadd,
...@@ -904,6 +973,10 @@ pub const Inst = struct {...@@ -904,6 +973,10 @@ pub const Inst = struct {
904 cmpgt,973 cmpgt,
905 /// Empty MMX technology state974 /// Empty MMX technology state
906 emms,975 emms,
976 /// Multiply and add packed signed and unsigned bytes
977 maddubs,
978 /// Multiply and add packed integers
979 maddw,
907 /// Multiply packed signed integers and store low result980 /// Multiply packed signed integers and store low result
908 mull,981 mull,
909 /// Multiply packed signed integers and store high result982 /// Multiply packed signed integers and store high result
...@@ -932,6 +1005,8 @@ pub const Inst = struct {...@@ -932,6 +1005,8 @@ pub const Inst = struct {
932 unpcklwd,1005 unpcklwd,
9331006
934 // SSE1007 // SSE
1008 /// Average packed integers
1009 avg,
935 /// Convert packed doubleword integers to packed single-precision floating-point values1010 /// Convert packed doubleword integers to packed single-precision floating-point values
936 /// Convert packed doubleword integers to packed double-precision floating-point values1011 /// Convert packed doubleword integers to packed double-precision floating-point values
937 cvtpi2,1012 cvtpi2,
...@@ -994,9 +1069,13 @@ pub const Inst = struct {...@@ -994,9 +1069,13 @@ pub const Inst = struct {
994 /// Move unaligned packed single-precision floating-point values1069 /// Move unaligned packed single-precision floating-point values
995 /// Move unaligned packed double-precision floating-point values1070 /// Move unaligned packed double-precision floating-point values
996 movu,1071 movu,
1072 /// Multiply packed unsigned integers and store high result
1073 mulhu,
997 /// Prefetch data into caches1074 /// Prefetch data into caches
998 /// Prefetch data into caches with intent to write1075 /// Prefetch data into caches with intent to write
999 prefetch,1076 prefetch,
1077 /// Compute sum of absolute differences
1078 sadb,
1000 /// Packed interleave shuffle of quadruplets of single-precision floating-point values1079 /// Packed interleave shuffle of quadruplets of single-precision floating-point values
1001 /// Packed interleave shuffle of pairs of double-precision floating-point values1080 /// Packed interleave shuffle of pairs of double-precision floating-point values
1002 /// Shuffle packed doublewords1081 /// Shuffle packed doublewords
...@@ -1056,9 +1135,6 @@ pub const Inst = struct {...@@ -1056,9 +1135,6 @@ pub const Inst = struct {
1056 /// Packed single-precision floating-point add/subtract1135 /// Packed single-precision floating-point add/subtract
1057 /// Packed double-precision floating-point add/subtract1136 /// Packed double-precision floating-point add/subtract
1058 addsub,1137 addsub,
1059 /// Packed single-precision floating-point horizontal add
1060 /// Packed double-precision floating-point horizontal add
1061 hadd,
1062 /// Replicate double floating-point values1138 /// Replicate double floating-point values
1063 movddup,1139 movddup,
1064 /// Replicate single floating-point values1140 /// Replicate single floating-point values
...@@ -1069,6 +1145,10 @@ pub const Inst = struct {...@@ -1069,6 +1145,10 @@ pub const Inst = struct {
1069 // SSSE31145 // SSSE3
1070 /// Packed align right1146 /// Packed align right
1071 alignr,1147 alignr,
1148 /// Packed multiply high with round and scale
1149 mulhrs,
1150 /// Packed sign
1151 sign,
10721152
1073 // SSE4.11153 // SSE4.1
1074 /// Pack with unsigned saturation1154 /// Pack with unsigned saturation
...@@ -1090,6 +1170,8 @@ pub const Inst = struct {...@@ -1090,6 +1170,8 @@ pub const Inst = struct {
1090 /// Extract packed floating-point values1170 /// Extract packed floating-point values
1091 /// Extract packed integer values1171 /// Extract packed integer values
1092 extract,1172 extract,
1173 /// Packed horizontal word minimum
1174 hminposu,
1093 /// Insert scalar single-precision floating-point value1175 /// Insert scalar single-precision floating-point value
1094 /// Insert packed floating-point values1176 /// Insert packed floating-point values
1095 insert,1177 insert,
...@@ -1111,10 +1193,6 @@ pub const Inst = struct {...@@ -1111,10 +1193,6 @@ pub const Inst = struct {
1111 /// Accumulate CRC32 value1193 /// Accumulate CRC32 value
1112 crc32,1194 crc32,
11131195
1114 // PCLMUL
1115 /// Carry-less multiplication quadword
1116 clmulq,
1117
1118 // AES1196 // AES
1119 /// Perform one round of an AES decryption flow1197 /// Perform one round of an AES decryption flow
1120 /// Perform ten rounds of AES decryption flow with key locker using 128-bit key1198 /// Perform ten rounds of AES decryption flow with key locker using 128-bit key
...@@ -1634,12 +1712,51 @@ pub const Inst = struct {...@@ -1634,12 +1712,51 @@ pub const Inst = struct {
1634 reg_list: RegisterList,1712 reg_list: RegisterList,
1635 };1713 };
16361714
1637 // Make sure we don't accidentally make instructions bigger than expected.
1638 // Note that in safety builds, Zig is allowed to insert a secret field for safety checks.
1639 comptime {1715 comptime {
1640 if (!std.debug.runtime_safety) {1716 if (!std.debug.runtime_safety) {
1717 // Make sure we don't accidentally make instructions bigger than expected.
1718 // Note that in safety builds, Zig is allowed to insert a secret field for safety checks.
1641 assert(@sizeOf(Data) == 8);1719 assert(@sizeOf(Data) == 8);
1642 }1720 }
1721 const Mnemonic = @import("Encoding.zig").Mnemonic;
1722 if (@typeInfo(Mnemonic).@"enum".fields.len != 977 or
1723 @typeInfo(Fixes).@"enum".fields.len != 231 or
1724 @typeInfo(Tag).@"enum".fields.len != 251)
1725 {
1726 const cond_src = (struct {
1727 fn src() std.builtin.SourceLocation {
1728 return @src();
1729 }
1730 }).src();
1731 @setEvalBranchQuota(1_750_000);
1732 for (@typeInfo(Mnemonic).@"enum".fields) |mnemonic| {
1733 if (mnemonic.name[0] == '.') continue;
1734 for (@typeInfo(Fixes).@"enum".fields) |fixes| {
1735 const pattern = fixes.name[if (std.mem.indexOfScalar(u8, fixes.name, ' ')) |index| index + " ".len else 0..];
1736 const wildcard_index = std.mem.indexOfScalar(u8, pattern, '_').?;
1737 const mnem_prefix = pattern[0..wildcard_index];
1738 const mnem_suffix = pattern[wildcard_index + "_".len ..];
1739 if (!std.mem.startsWith(u8, mnemonic.name, mnem_prefix)) continue;
1740 if (!std.mem.endsWith(u8, mnemonic.name, mnem_suffix)) continue;
1741 if (@hasField(
1742 Tag,
1743 mnemonic.name[mnem_prefix.len .. mnemonic.name.len - mnem_suffix.len],
1744 )) break;
1745 } else @compileError("'" ++ mnemonic.name ++ "' is not encodable in Mir");
1746 }
1747 @compileError(std.fmt.comptimePrint(
1748 \\All mnemonics are encodable in Mir! You may now change the condition at {s}:{d} to:
1749 \\if (@typeInfo(Mnemonic).@"enum".fields.len != {d} or
1750 \\ @typeInfo(Fixes).@"enum".fields.len != {d} or
1751 \\ @typeInfo(Tag).@"enum".fields.len != {d})
1752 , .{
1753 cond_src.file,
1754 cond_src.line - 6,
1755 @typeInfo(Mnemonic).@"enum".fields.len,
1756 @typeInfo(Fixes).@"enum".fields.len,
1757 @typeInfo(Tag).@"enum".fields.len,
1758 }));
1759 }
1643 }1760 }
1644};1761};
16451762
src/arch/x86_64/encodings.zon+78-2
...@@ -684,8 +684,8 @@...@@ -684,8 +684,8 @@
684 .{ .rdseed, .m, .{ .r32 }, .{ 0x0f, 0xc7 }, 7, .none, .rdseed },684 .{ .rdseed, .m, .{ .r32 }, .{ 0x0f, 0xc7 }, 7, .none, .rdseed },
685 .{ .rdseed, .m, .{ .r64 }, .{ 0x0f, 0xc7 }, 7, .long, .rdseed },685 .{ .rdseed, .m, .{ .r64 }, .{ 0x0f, 0xc7 }, 7, .long, .rdseed },
686686
687 .{ .rdssd, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0x1e }, 1, .none, .shstk },687 .{ .rdsspd, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0x1e }, 1, .none, .shstk },
688 .{ .rdssq, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0x1e }, 1, .long, .shstk },688 .{ .rdsspq, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0x1e }, 1, .long, .shstk },
689689
690 .{ .rdtsc, .z, .{}, .{ 0x0f, 0x31 }, 0, .none, .none },690 .{ .rdtsc, .z, .{}, .{ 0x0f, 0x31 }, 0, .none, .none },
691691
...@@ -1524,6 +1524,8 @@...@@ -1524,6 +1524,8 @@
15241524
1525 .{ .pinsrw, .rmi, .{ .xmm, .r32_m16, .imm8 }, .{ 0x66, 0x0f, 0xc4 }, 0, .none, .sse2 },1525 .{ .pinsrw, .rmi, .{ .xmm, .r32_m16, .imm8 }, .{ 0x66, 0x0f, 0xc4 }, 0, .none, .sse2 },
15261526
1527 .{ .pmaddwd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf5 }, 0, .none, .sse2 },
1528
1527 .{ .pmaxsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .none, .sse2 },1529 .{ .pmaxsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .none, .sse2 },
15281530
1529 .{ .pmaxub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xde }, 0, .none, .sse2 },1531 .{ .pmaxub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xde }, 0, .none, .sse2 },
...@@ -1532,6 +1534,8 @@...@@ -1532,6 +1534,8 @@
15321534
1533 .{ .pminub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xda }, 0, .none, .sse2 },1535 .{ .pminub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xda }, 0, .none, .sse2 },
15341536
1537 .{ .pmulhuw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe4 }, 0, .none, .sse2 },
1538
1535 .{ .pmulhw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .none, .sse2 },1539 .{ .pmulhw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .none, .sse2 },
15361540
1537 .{ .pmullw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd5 }, 0, .none, .sse2 },1541 .{ .pmullw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd5 }, 0, .none, .sse2 },
...@@ -1540,6 +1544,8 @@...@@ -1540,6 +1544,8 @@
15401544
1541 .{ .por, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xeb }, 0, .none, .sse2 },1545 .{ .por, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xeb }, 0, .none, .sse2 },
15421546
1547 .{ .psadbw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf6 }, 0, .none, .sse2 },
1548
1543 .{ .pshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .none, .sse2 },1549 .{ .pshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .none, .sse2 },
15441550
1545 .{ .pshufhw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf3, 0x0f, 0x70 }, 0, .none, .sse2 },1551 .{ .pshufhw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf3, 0x0f, 0x70 }, 0, .none, .sse2 },
...@@ -1642,8 +1648,26 @@...@@ -1642,8 +1648,26 @@
16421648
1643 .{ .palignr, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .none, .ssse3 },1649 .{ .palignr, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0f }, 0, .none, .ssse3 },
16441650
1651 .{ .phaddw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x01 }, 0, .none, .ssse3 },
1652 .{ .phaddd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x02 }, 0, .none, .ssse3 },
1653
1654 .{ .phaddsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x03 }, 0, .none, .ssse3 },
1655
1656 .{ .phsubw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x05 }, 0, .none, .ssse3 },
1657 .{ .phsubd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x06 }, 0, .none, .ssse3 },
1658
1659 .{ .phsubsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x07 }, 0, .none, .ssse3 },
1660
1661 .{ .pmaddubsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x04 }, 0, .none, .ssse3 },
1662
1663 .{ .pmulhrsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0b }, 0, .none, .ssse3 },
1664
1645 .{ .pshufb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .none, .ssse3 },1665 .{ .pshufb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .none, .ssse3 },
16461666
1667 .{ .psignb, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x08 }, 0, .none, .ssse3 },
1668 .{ .psignw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x09 }, 0, .none, .ssse3 },
1669 .{ .psignd, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0a }, 0, .none, .ssse3 },
1670
1647 // SSE4.11671 // SSE4.1
1648 .{ .blendpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .none, .sse4_1 },1672 .{ .blendpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .none, .sse4_1 },
16491673
...@@ -1678,6 +1702,8 @@...@@ -1678,6 +1702,8 @@
16781702
1679 .{ .pextrw, .mri, .{ .r32_m16, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .none, .sse4_1 },1703 .{ .pextrw, .mri, .{ .r32_m16, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .none, .sse4_1 },
16801704
1705 .{ .phminposuw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x41 }, 0, .none, .sse4_1 },
1706
1681 .{ .pinsrb, .rmi, .{ .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .none, .sse4_1 },1707 .{ .pinsrb, .rmi, .{ .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .none, .sse4_1 },
1682 .{ .pinsrd, .rmi, .{ .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .none, .sse4_1 },1708 .{ .pinsrd, .rmi, .{ .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .none, .sse4_1 },
1683 .{ .pinsrq, .rmi, .{ .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .long, .sse4_1 },1709 .{ .pinsrq, .rmi, .{ .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .long, .sse4_1 },
...@@ -2129,12 +2155,28 @@...@@ -2129,12 +2155,28 @@
2129 .{ .vpextrw, .rmi, .{ .r32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0xc5 }, 0, .vex_128_w0, .avx },2155 .{ .vpextrw, .rmi, .{ .r32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0xc5 }, 0, .vex_128_w0, .avx },
2130 .{ .vpextrw, .mri, .{ .r32_m16, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .vex_128_w0, .avx },2156 .{ .vpextrw, .mri, .{ .r32_m16, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x15 }, 0, .vex_128_w0, .avx },
21312157
2158 .{ .vphaddw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x01 }, 0, .vex_128_wig, .avx },
2159 .{ .vphaddd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x02 }, 0, .vex_128_wig, .avx },
2160
2161 .{ .vphaddsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x03 }, 0, .vex_128_wig, .avx },
2162
2163 .{ .vphminposuw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x41 }, 0, .vex_128_wig, .avx },
2164
2165 .{ .vphsubw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x05 }, 0, .vex_128_wig, .avx },
2166 .{ .vphsubd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x06 }, 0, .vex_128_wig, .avx },
2167
2168 .{ .vphsubsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x07 }, 0, .vex_128_wig, .avx },
2169
2132 .{ .vpinsrb, .rvmi, .{ .xmm, .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .vex_128_w0, .avx },2170 .{ .vpinsrb, .rvmi, .{ .xmm, .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .vex_128_w0, .avx },
2133 .{ .vpinsrd, .rvmi, .{ .xmm, .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w0, .avx },2171 .{ .vpinsrd, .rvmi, .{ .xmm, .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w0, .avx },
2134 .{ .vpinsrq, .rvmi, .{ .xmm, .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w1, .avx },2172 .{ .vpinsrq, .rvmi, .{ .xmm, .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w1, .avx },
21352173
2136 .{ .vpinsrw, .rvmi, .{ .xmm, .xmm, .r32_m16, .imm8 }, .{ 0x66, 0x0f, 0xc4 }, 0, .vex_128_w0, .avx },2174 .{ .vpinsrw, .rvmi, .{ .xmm, .xmm, .r32_m16, .imm8 }, .{ 0x66, 0x0f, 0xc4 }, 0, .vex_128_w0, .avx },
21372175
2176 .{ .vpmaddubsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x04 }, 0, .vex_128_wig, .avx },
2177
2178 .{ .vpmaddwd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf5 }, 0, .vex_128_wig, .avx },
2179
2138 .{ .vpmaxsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_128_wig, .avx },2180 .{ .vpmaxsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_128_wig, .avx },
2139 .{ .vpmaxsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .vex_128_wig, .avx },2181 .{ .vpmaxsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .vex_128_wig, .avx },
2140 .{ .vpmaxsd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_128_wig, .avx },2182 .{ .vpmaxsd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_128_wig, .avx },
...@@ -2172,6 +2214,10 @@...@@ -2172,6 +2214,10 @@
21722214
2173 .{ .vpmuldq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x28 }, 0, .vex_128_wig, .avx },2215 .{ .vpmuldq, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x28 }, 0, .vex_128_wig, .avx },
21742216
2217 .{ .vpmulhrsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0b }, 0, .vex_128_wig, .avx },
2218
2219 .{ .vpmulhuw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe4 }, 0, .vex_128_wig, .avx },
2220
2175 .{ .vpmulhw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_128_wig, .avx },2221 .{ .vpmulhw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_128_wig, .avx },
21762222
2177 .{ .vpmulld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_128_wig, .avx },2223 .{ .vpmulld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_128_wig, .avx },
...@@ -2182,6 +2228,8 @@...@@ -2182,6 +2228,8 @@
21822228
2183 .{ .vpor, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xeb }, 0, .vex_128_wig, .avx },2229 .{ .vpor, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xeb }, 0, .vex_128_wig, .avx },
21842230
2231 .{ .vpsadbw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf6 }, 0, .vex_128_wig, .avx },
2232
2185 .{ .vpshufb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_128_wig, .avx },2233 .{ .vpshufb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_128_wig, .avx },
21862234
2187 .{ .vpshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },2235 .{ .vpshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
...@@ -2190,6 +2238,10 @@...@@ -2190,6 +2238,10 @@
21902238
2191 .{ .vpshuflw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },2239 .{ .vpshuflw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
21922240
2241 .{ .vpsignb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x08 }, 0, .vex_128_wig, .avx },
2242 .{ .vpsignw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x09 }, 0, .vex_128_wig, .avx },
2243 .{ .vpsignd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x0a }, 0, .vex_128_wig, .avx },
2244
2193 .{ .vpsllw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_128_wig, .avx },2245 .{ .vpsllw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_128_wig, .avx },
2194 .{ .vpsllw, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_128_wig, .avx },2246 .{ .vpsllw, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_128_wig, .avx },
2195 .{ .vpslld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_128_wig, .avx },2247 .{ .vpslld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_128_wig, .avx },
...@@ -2447,6 +2499,16 @@...@@ -2447,6 +2499,16 @@
24472499
2448 .{ .vpcmpgtq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x37 }, 0, .vex_256_wig, .avx2 },2500 .{ .vpcmpgtq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x37 }, 0, .vex_256_wig, .avx2 },
24492501
2502 .{ .vphaddw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x01 }, 0, .vex_256_wig, .avx2 },
2503 .{ .vphaddd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x02 }, 0, .vex_256_wig, .avx2 },
2504
2505 .{ .vphaddsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x03 }, 0, .vex_256_wig, .avx2 },
2506
2507 .{ .vphaddw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x05 }, 0, .vex_256_wig, .avx2 },
2508 .{ .vphaddd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x06 }, 0, .vex_256_wig, .avx2 },
2509
2510 .{ .vphaddsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x07 }, 0, .vex_256_wig, .avx2 },
2511
2450 .{ .vperm2i128, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x46 }, 0, .vex_256_w0, .avx2 },2512 .{ .vperm2i128, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x46 }, 0, .vex_256_w0, .avx2 },
24512513
2452 .{ .vpermd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x36 }, 0, .vex_256_w0, .avx2 },2514 .{ .vpermd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x36 }, 0, .vex_256_w0, .avx2 },
...@@ -2457,6 +2519,10 @@...@@ -2457,6 +2519,10 @@
24572519
2458 .{ .vpermq, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x00 }, 0, .vex_256_w1, .avx2 },2520 .{ .vpermq, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x00 }, 0, .vex_256_w1, .avx2 },
24592521
2522 .{ .vpmaddubsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x04 }, 0, .vex_256_wig, .avx2 },
2523
2524 .{ .vpmaddwd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xf5 }, 0, .vex_256_wig, .avx2 },
2525
2460 .{ .vpmaskmovd, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w0, .avx2 },2526 .{ .vpmaskmovd, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w0, .avx2 },
2461 .{ .vpmaskmovd, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w0, .avx2 },2527 .{ .vpmaskmovd, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w0, .avx2 },
2462 .{ .vpmaskmovq, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w1, .avx2 },2528 .{ .vpmaskmovq, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w1, .avx2 },
...@@ -2503,6 +2569,10 @@...@@ -2503,6 +2569,10 @@
25032569
2504 .{ .vpmuldq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x28 }, 0, .vex_256_wig, .avx2 },2570 .{ .vpmuldq, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x28 }, 0, .vex_256_wig, .avx2 },
25052571
2572 .{ .vpmulhrsw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x0b }, 0, .vex_256_wig, .avx2 },
2573
2574 .{ .vpmulhuw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe4 }, 0, .vex_256_wig, .avx2 },
2575
2506 .{ .vpmulhw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_256_wig, .avx2 },2576 .{ .vpmulhw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_256_wig, .avx2 },
25072577
2508 .{ .vpmulld, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_256_wig, .avx2 },2578 .{ .vpmulld, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_256_wig, .avx2 },
...@@ -2513,6 +2583,8 @@...@@ -2513,6 +2583,8 @@
25132583
2514 .{ .vpor, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xeb }, 0, .vex_256_wig, .avx2 },2584 .{ .vpor, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xeb }, 0, .vex_256_wig, .avx2 },
25152585
2586 .{ .vpsadbw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xf6 }, 0, .vex_256_wig, .avx2 },
2587
2516 .{ .vpshufb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_256_wig, .avx2 },2588 .{ .vpshufb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_256_wig, .avx2 },
2517 .{ .vpshufd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },2589 .{ .vpshufd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
25182590
...@@ -2520,6 +2592,10 @@...@@ -2520,6 +2592,10 @@
25202592
2521 .{ .vpshuflw, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },2593 .{ .vpshuflw, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0xf2, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
25222594
2595 .{ .vpsignb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x08 }, 0, .vex_256_wig, .avx2 },
2596 .{ .vpsignw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x09 }, 0, .vex_256_wig, .avx2 },
2597 .{ .vpsignd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x0a }, 0, .vex_256_wig, .avx2 },
2598
2523 .{ .vpsllw, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_256_wig, .avx2 },2599 .{ .vpsllw, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_256_wig, .avx2 },
2524 .{ .vpsllw, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_256_wig, .avx2 },2600 .{ .vpsllw, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_256_wig, .avx2 },
2525 .{ .vpslld, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_256_wig, .avx2 },2601 .{ .vpslld, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_256_wig, .avx2 },
test/behavior/floatop.zig+8-1
...@@ -290,14 +290,21 @@ test "vector cmp f128" {...@@ -290,14 +290,21 @@ test "vector cmp f128" {
290}290}
291291
292test "vector cmp f80/c_longdouble" {292test "vector cmp f80/c_longdouble" {
293 if (true) return error.SkipZigTest;293 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .hexagon) return error.SkipZigTest;
294 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .powerpc64le) return error.SkipZigTest;
295 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
296 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
297 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
294299
295 try testCmpVector(f80);300 try testCmpVector(f80);
296 try comptime testCmpVector(f80);301 try comptime testCmpVector(f80);
297 try testCmpVector(c_longdouble);302 try testCmpVector(c_longdouble);
298 try comptime testCmpVector(c_longdouble);303 try comptime testCmpVector(c_longdouble);
299}304}
305
300fn testCmpVector(comptime T: type) !void {306fn testCmpVector(comptime T: type) !void {
307 @setEvalBranchQuota(2_000);
301 var edges = [_]T{308 var edges = [_]T{
302 -math.inf(T),309 -math.inf(T),
303 -math.floatMax(T),310 -math.floatMax(T),
test/behavior/x86_64/build.zig+3-3
...@@ -87,7 +87,7 @@ pub fn build(b: *std.Build) void {...@@ -87,7 +87,7 @@ pub fn build(b: *std.Build) void {
87 .{87 .{
88 .cpu_arch = .x86_64,88 .cpu_arch = .x86_64,
89 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v2 },89 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v2 },
90 .cpu_features_add = std.Target.x86.featureSet(&.{ .adx, .gfni, .pclmul }),90 .cpu_features_add = std.Target.x86.featureSet(&.{ .adx, .fast_hops, .gfni, .pclmul, .slow_incdec }),
91 },91 },
92 .{92 .{
93 .cpu_arch = .x86_64,93 .cpu_arch = .x86_64,
...@@ -97,6 +97,7 @@ pub fn build(b: *std.Build) void {...@@ -97,6 +97,7 @@ pub fn build(b: *std.Build) void {
97 .{97 .{
98 .cpu_arch = .x86_64,98 .cpu_arch = .x86_64,
99 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v3 },99 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v3 },
100 .cpu_features_add = std.Target.x86.featureSet(&.{ .adx, .fast_hops, .gfni, .pclmul, .slow_incdec }),
100 .cpu_features_sub = std.Target.x86.featureSet(&.{.avx2}),101 .cpu_features_sub = std.Target.x86.featureSet(&.{.avx2}),
101 },102 },
102 .{103 .{
...@@ -106,12 +107,11 @@ pub fn build(b: *std.Build) void {...@@ -106,12 +107,11 @@ pub fn build(b: *std.Build) void {
106 .{107 .{
107 .cpu_arch = .x86_64,108 .cpu_arch = .x86_64,
108 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v3 },109 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v3 },
109 .cpu_features_add = std.Target.x86.featureSet(&.{ .adx, .gfni, .pclmul }),110 .cpu_features_add = std.Target.x86.featureSet(&.{ .adx, .fast_hops, .gfni, .slow_incdec, .vpclmulqdq }),
110 },111 },
111 .{112 .{
112 .cpu_arch = .x86_64,113 .cpu_arch = .x86_64,
113 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v4 },114 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v4 },
114 .cpu_features_add = std.Target.x86.featureSet(&.{.vpclmulqdq}),
115 },115 },
116 }) |query| {116 }) |query| {
117 const target = b.resolveTargetQuery(query);117 const target = b.resolveTargetQuery(query);
test/behavior/x86_64/unary.zig+303-81
...@@ -4451,141 +4451,354 @@ fn unary(comptime op: anytype, comptime opts: struct {...@@ -4451,141 +4451,354 @@ fn unary(comptime op: anytype, comptime opts: struct {
4451 }4451 }
4452 fn testFloatVectors() !void {4452 fn testFloatVectors() !void {
4453 try testArgs(@Vector(1, f16), .{4453 try testArgs(@Vector(1, f16), .{
4454 -0x1.17cp-12,4454 0x1.7d8p12,
4455 });4455 });
4456 try testArgs(@Vector(2, f16), .{4456 try testArgs(@Vector(2, f16), .{
4457 0x1.47cp9, 0x1.3acp9,4457 -0x0.054p-14, -0x1.c6cp10,
4458 });
4459 try testArgs(@Vector(3, f16), .{
4460 -0x1.39cp-3, -0x1.088p4, -0x0.644p-14,
4458 });4461 });
4459 try testArgs(@Vector(4, f16), .{4462 try testArgs(@Vector(4, f16), .{
4460 0x1.ab4p0, -0x1.7fcp-7, -0x1.1cp0, -0x1.f14p12,4463 -0x1.108p11, 0x1.364p-3, 0x1.8f4p-2, -0x0.8acp-14,
4464 });
4465 try testArgs(@Vector(5, f16), .{
4466 0x1.e1p8, 0x1.ddp11, 0x0.388p-14, 0x1.7p-7, -0x0.a08p-14,
4467 });
4468 try testArgs(@Vector(7, f16), .{
4469 0x1.988p-14, -0x1.f7p-14, 0x1.38cp12, 0x0.0fp-14, -0x1.774p2, -0x1.de4p11, -0x1.9bp-10,
4461 });4470 });
4462 try testArgs(@Vector(8, f16), .{4471 try testArgs(@Vector(8, f16), .{
4463 -0x1.8d8p8, 0x1.83p10, -0x1.5ap-1, -0x1.d78p13, -0x1.608p12, 0x1.e8p-9, -0x1.688p-10, -0x1.738p9,4472 0x1.6ecp12, -0x1.834p9, -0x1.2c8p13, 0x1.e7cp3, -0x1.418p3, 0x1.15cp-1, 0x1.fecp-2, 0x1.1dp-3,
4473 });
4474 try testArgs(@Vector(9, f16), .{
4475 0x1.da8p-1, 0x1.d44p-11, 0x1.884p-10, -0x1.898p1, 0x1.5ccp-5, 0x1.68p0, 0x1.618p14, -0x1.c34p2,
4476 -0x1.318p6,
4477 });
4478 try testArgs(@Vector(15, f16), .{
4479 0x1.41cp11, 0x1.edp-1, 0x1.1c8p-12, -0x0.0ecp-14, -0x1.abp8, 0x1.34p0, -0x1.24cp-4, -0x1.214p1,
4480 -0x1.604p9, -0x1.364p-1, 0x1.adp0, 0x0.63p-14, 0x0.60cp-14, 0x1.6ep-6, 0x0.84cp-14,
4464 });4481 });
4465 try testArgs(@Vector(16, f16), .{4482 try testArgs(@Vector(16, f16), .{
4466 0x1.da8p-1, -0x1.ed4p-10, -0x1.dc8p1, 0x1.b78p-14, nan(f16), 0x1.9d8p8, nan(f16), 0x1.d5p13,4483 0x1.308p6, -0x1.078p-1, 0x0.81p-14, 0x1.1b4p-14, 0x1.4ep-7, 0x1.75p12, 0x1.264p-8, 0x1.a6p2,
4467 -0x1.2dp13, 0x1.6c4p12, 0x1.a9cp-11, -0x1.0ecp8, 0x0.4ccp-14, -0x1.0a8p-6, -0x1.5bcp-14, 0x1.6d8p-9,4484 0x1.9a4p-3, 0x1.e9p4, -0x1.a4p-6, 0x1.6acp-1, 0x1.7e8p-12, -0x1.02cp6, -0x1.0ccp-14, 0x1.edp-12,
4485 });
4486 try testArgs(@Vector(17, f16), .{
4487 0x1.2c4p-1, 0x1.91cp-3, 0x1.bf8p10, -0x0.25p-14, 0x1.45p-9, 0x1.cap-2, 0x1.e9cp8, 0x1.b7p8,
4488 0x1.21cp9, -0x0.ba4p-14, -0x1.ddcp-4, -0x1.bcp9, -0x1.7dcp-3, 0x1.6a4p-12, 0x1.ca8p-8, -0x1.558p11,
4489 0x0.26cp-14,
4490 });
4491 try testArgs(@Vector(31, f16), .{
4492 -0x1.f94p7, 0x1.55cp9, -0x1.f78p11, -0x0.f48p-14, -0x1.b6p-2, 0x1.85cp1, -0x1.114p4, -0x1.97cp-5,
4493 -0x1.6f8p2, 0x1.79cp-3, 0x1.e58p-9, -0x1.f5cp-10, 0x1.a74p5, -0x0.1e8p-14, 0x1.15cp-14, 0x1.814p-7,
4494 -0x0.318p-14, -0x1.b5p-5, -0x1.058p-10, 0x1.124p0, -0x1.20cp-1, 0x1.978p10, -0x1.808p-8, 0x1.528p-6,
4495 -0x1.ba8p9, 0x0.294p-14, 0x1.11cp0, 0x1.e5p5, 0x1.904p-11, 0x1.d78p11, -0x1.c1p5,
4468 });4496 });
4469 try testArgs(@Vector(32, f16), .{4497 try testArgs(@Vector(32, f16), .{
4470 0x1.d5cp-6, -0x1.a98p5, 0x1.49cp5, -0x1.e4p-1, -0x1.21p-13, -0x1.c94p-1, -0x1.adcp-5, -0x1.524p-1,4498 -0x0.11p-14, 0x0.29cp-14, 0x1.7a8p5, 0x1.49cp-11, 0x1.6c4p-3, -0x1.85cp-11, 0x1.ap-8, -0x0.49cp-14,
4471 -0x1.0d8p-3, -0x1.5c4p-2, 0x1.f84p-2, 0x1.664p1, -0x1.f64p13, -0x1.bf4p4, -0x1.4b8p0, -0x0.f64p-14,4499 0x1.dfp2, -0x1.4cp1, 0x1.138p-5, -0x1.45p-9, 0x0.88cp-14, 0x1.6acp10, 0x1.594p3, 0x1.704p6,
4472 -0x1.3f8p1, 0x1.098p2, -0x1.a44p8, 0x1.048p13, 0x1.fd4p-11, 0x1.18p-9, -0x1.504p2, 0x1.d04p7,4500 -0x1.c34p13, 0x1.44cp0, -0x1.cfcp-10, 0x1.5c8p-4, -0x1.b2cp-10, -0x1.178p1, -0x1.b74p7, -0x1.d18p0,
4473 -nan(f16), 0x1.a94p2, 0x0.5e8p-14, -0x1.7acp-7, 0x1.4c8p-3, 0x1.518p-4, nan(f16), 0x1.8f8p10,4501 0x1.0fcp-9, 0x1.b6p-11, -0x1.ff4p-2, -0x0.0b8p-14, 0x1.4dcp-10, -0x1.af4p-5, -0x1.eap2, -0x1.79cp-4,
4502 });
4503 try testArgs(@Vector(33, f16), .{
4504 -0x1.6e8p0, -0x1.304p-12, 0x1.558p11, 0x1.cf4p13, 0x1.cc4p-9, 0x1.d88p-11, 0x1.838p8, -0x1.2ecp-10,
4505 -0x1.65cp-1, -0x1.644p8, -0x1.048p10, 0x0.114p-14, 0x1.8a4p13, 0x1.c9p-3, 0x1.dfp-6, -0x1.774p12,
4506 -0x0.4dp-14, 0x1.2ccp-12, 0x0.98p-14, -0x1.b18p-6, 0x0.1ecp-14, 0x0.86cp-14, 0x0.6e8p-14, -0x1.6dp14,
4507 0x1.9e8p-3, 0x1.1ep10, -0x1.6cp13, -0x1.d44p1, -0x1.f54p-12, -0x1.fe8p-14, 0x1.968p-1, -0x1.ab4p-9,
4508 0x1.f0cp0,
4509 });
4510 try testArgs(@Vector(63, f16), .{
4511 -0x1.3ecp-1, 0x0.04p-14, -0x1.1cp-2, 0x1.0dp10, 0x1.ddcp-12, -0x1.57cp-11, -0x1.84p-9, 0x1.dfp4,
4512 0x1.6e4p-9, 0x0.5d4p-14, -0x0.51cp-14, -0x1.bp2, -0x1.8ecp-14, 0x1.268p-2, -0x0.69p-14, -0x1.b98p7,
4513 -0x0.cb4p-14, -0x1.accp-3, 0x1.cdcp6, -0x1.e6p7, 0x1.4ep-14, 0x1.5fp5, -0x1.95p8, 0x1.044p8,
4514 -0x1.e14p9, 0x1.e84p14, 0x1.ee8p-10, -0x1.0a4p8, 0x1.b14p-8, -0x1.5dp9, 0x0.e68p-14, -0x0.1acp-14,
4515 -0x1.7ccp-11, 0x1.45p-10, 0x0.044p-14, 0x1.078p4, 0x1.c8p-1, -0x1.8fp11, -0x1.cbp0, -0x1.208p-10,
4516 -0x1.a5p-1, -0x1.164p-8, -0x1.304p-3, -0x1.038p-10, -0x1.4dp11, 0x0.248p-14, 0x1.09cp-4, -0x1.a7cp14,
4517 -0x1.a38p-6, -0x1.0bp-9, -0x1.fecp-14, -0x1.c78p-10, -0x1.e38p-11, 0x1.47p-5, -0x1.3bcp5, 0x1.6a4p9,
4518 0x0.728p-14, 0x1.9c8p9, 0x1.88p12, -0x1.e6p0, 0x1.5dcp-2, -0x1.7f4p-4, -0x1.a6p3,
4474 });4519 });
4475 try testArgs(@Vector(64, f16), .{4520 try testArgs(@Vector(64, f16), .{
4476 -0x1.c2p2, 0x0.2fcp-14, 0x1.de8p0, -0x1.714p2, 0x1.f9p-7, -0x1.11cp-13, -0x1.558p10, -0x1.2acp-7,4521 -0x1.67cp-13, 0x1.f2cp-10, 0x1.69cp11, -0x1.0dp-2, 0x1.a8p9, 0x1.7dp-11, 0x1.908p-5, -0x1.37cp0,
4477 0x1.348p14, 0x1.2dcp7, -0x1.8acp-12, -0x1.2cp2, 0x1.868p1, -0x1.1f8p-14, 0x1.638p7, -0x1.734p-5,4522 0x1.8f8p5, 0x1.38p11, 0x1.d2p8, 0x1.b74p-10, -0x1.188p-7, 0x1.578p5, 0x1.68p-11, -0x1.b9cp8,
4478 0x0.b98p-14, -0x1.7f4p-12, -0x1.38cp15, 0x1.50cp15, 0x1.91cp8, 0x1.cb4p-1, 0x1.fc4p-13, 0x1.9a4p0,4523 -0x1.ba4p2, 0x0.b78p-14, 0x1.458p-8, 0x0.054p-14, -0x0.63p-14, 0x1.83p10, 0x1.94cp-2, -0x1.d7p2,
4479 0x1.18p-4, 0x1.60cp10, 0x1.6fp-12, 0x1.b48p6, 0x1.37cp-11, 0x1.424p7, 0x1.44cp13, 0x1.aep5,4524 -0x1.62p4, 0x1.b34p4, -0x1.4cp-11, -0x1.714p9, -0x1.ce4p1, 0x1.75p-3, -0x1.cbp-13, 0x1.714p6,
4480 0x1.968p14, 0x1.e8p13, -0x1.bp2, -0x1.644p5, 0x1.de4p-8, -0x1.5b4p-14, -0x1.4ap1, -0x1.868p9,4525 -0x1.cb8p7, -0x1.b98p-4, 0x1.facp-13, -0x1.1f4p8, -0x1.92p-3, 0x0.144p-14, 0x1.504p-4, 0x1.a9p-10,
4481 -0x1.d14p0, 0x1.d7cp15, 0x1.3c8p14, 0x1.2ccp-14, -0x1.ee4p8, 0x1.49p-3, 0x1.35cp12, 0x1.d34p6,4526 0x1.a94p3, 0x1.708p-2, 0x1.c84p-14, 0x1.77cp9, -0x0.1e4p-14, -0x0.3d8p-14, -0x1.f8p4, -0x1.2bp5,
4482 0x1.7acp3, -0x1.fa4p2, 0x1.7b4p13, -0x1.cf4p-12, -0x1.ebcp-10, -0x1.5p-3, 0x1.4bp-6, 0x1.83p12,4527 0x1.5b8p-14, 0x1.898p14, -0x1.e2p3, -0x1.0e8p-5, 0x1.4dcp-12, 0x1.368p8, 0x1.968p-7, -0x1.98cp-5,
4483 -0x1.f9cp-8, -0x1.43p-8, -0x1.99p-1, -0x1.dacp3, -0x1.728p-4, -0x1.03cp4, 0x1.604p-2, -0x1.0ep13,4528 0x1.39cp-13, 0x1.23p2, 0x1.8e8p6, 0x1.344p7, 0x1.70cp-5, -0x1.f24p11, -0x1.54p-7, -0x1.904p3,
4529 });
4530 try testArgs(@Vector(65, f16), .{
4531 -0x1.d78p-4, 0x1.ea8p-8, -0x1.b4cp6, -0x1.c7cp4, 0x1.dfcp7, 0x1.a8cp6, -0x1.768p11, 0x0.0fp-14,
4532 -0x1.a3p-4, -0x1.868p-9, 0x1.23p-1, -0x1.2e8p3, -0x1.9e8p-12, 0x1.8a8p3, 0x1.168p-5, -0x1.608p8,
4533 -0x1.9d4p-4, -0x1.17cp-1, -0x1.f2p1, -0x1.d38p-11, 0x1.f38p-12, -0x1.92p-11, 0x1.c44p6, 0x1.4fp-3,
4534 0x0.18p-14, 0x1.3dp11, -0x1.ce4p9, -0x1.bf8p-12, 0x0.88cp-14, -0x1.998p-9, 0x1.788p-2, -0x1.5c4p2,
4535 0x0.08cp-14, -0x0.6f8p-14, 0x1.c7cp-10, -0x0.1p-14, -0x1.0fcp-9, -0x1.5a4p6, -0x1.8c8p-12, 0x0.57p-14,
4536 -0x1.96cp-9, 0x1.6ecp10, -0x1.c18p1, -0x1.0ap5, -0x0.768p-14, -0x1.f8cp-6, 0x0.44p-14, -0x1.2b4p-2,
4537 0x1.efcp-13, -0x1.434p-13, 0x1.434p-3, 0x1.a6p-2, 0x1.bc4p7, -0x0.e1p-14, -0x1.d9cp-7, -0x1.f94p-9,
4538 0x1.448p-6, 0x1.0d8p3, -0x0.4a4p-14, -0x1.25cp-10, 0x1.c18p12, 0x0.1ccp-14, -0x1.ep14, -0x1.42cp6,
4539 0x1.14p8,
4484 });4540 });
44854541
4486 try testArgs(@Vector(1, f32), .{4542 try testArgs(@Vector(1, f32), .{
4487 -0x1.17cp-12,4543 0x1.12e082p8,
4488 });4544 });
4489 try testArgs(@Vector(2, f32), .{4545 try testArgs(@Vector(2, f32), .{
4490 -0x1.a3123ap90, -0x1.4a2ec6p-54,4546 -0x1.f04666p17, 0x1.27d624p4,
4547 });
4548 try testArgs(@Vector(3, f32), .{
4549 -0x1.c3168cp-85, -0x1.169cdcp9, -0x1.4bdb2ap13,
4491 });4550 });
4492 try testArgs(@Vector(4, f32), .{4551 try testArgs(@Vector(4, f32), .{
4493 -0x1.8a41p77, -0x1.7c54e2p-61, -0x1.498556p-41, 0x1.d77c22p-20,4552 -0x1.a8b1d6p29, -0x1.b94e32p-76, 0x1.f4d9aap-43, 0x1.e6c654p44,
4553 });
4554 try testArgs(@Vector(5, f32), .{
4555 0x1.37c57ep-53, -0x1.832c84p49, -0x1.04256ep-110, -0x1.de4454p-37,
4556 -0x1.a36832p-34,
4557 });
4558 try testArgs(@Vector(7, f32), .{
4559 -0x1.35df86p87, -0x1.d96a52p62, 0x1.f9d3ecp-12, 0x1.5f4cc6p112,
4560 0x1.176cfap94, 0x1.bb86fcp69, 0x1.015e56p0,
4494 });4561 });
4495 try testArgs(@Vector(8, f32), .{4562 try testArgs(@Vector(8, f32), .{
4496 0x1.943da4p-86, 0x1.528792p95, -0x1.9c9bfap-26, -0x1.8df936p-90,4563 -0x1.9dd6cap3, 0x1.726066p-42, 0x1.5b1f5ep-20, -0x1.347ed6p29,
4497 -0x1.6a70cep56, 0x1.626638p-48, 0x1.7bb2bap-57, -0x1.ac5104p94,4564 0x1.bfb5d4p-126, -0x1.b0e8dp45, 0x1.5577bep45, -0x1.9d1608p2,
4565 });
4566 try testArgs(@Vector(9, f32), .{
4567 -0x1.4159b2p76, 0x1.bea7b8p-107, -0x1.b47036p-82, -0x1.4635ap-26,
4568 -0x1.27bc98p-47, 0x1.1e0ap-116, 0x1.0f628p-118, 0x1.2e63bcp-62,
4569 0x1.d0e45ep-57,
4570 });
4571 try testArgs(@Vector(15, f32), .{
4572 0x1.65e0bcp-12, 0x1.d947c6p-42, -0x1.4596acp64, -0x1.2a897cp75,
4573 0x1.cb074ap-8, 0x1.e44a98p-62, -0x1.3edb2p74, 0x1.07aecep-2,
4574 -0x1.fda1f8p14, 0x1.2f2c7ap-95, 0x1.9814e6p-33, 0x1.6d6a58p3,
4575 0x1.6a1478p-3, -0x1.85886ap64, -0x1.e2b9bcp-114,
4498 });4576 });
4499 try testArgs(@Vector(16, f32), .{4577 try testArgs(@Vector(16, f32), .{
4500 0x1.157044p115, -0x1.416c04p-111, 0x1.a8f164p-104, 0x1.9b6678p84,4578 0x1.348b38p103, 0x1.bbc8e4p8, -0x1.03f48ap-119, -0x1.90f87cp115,
4501 -0x1.9d065cp9, -0x1.e8c4b4p126, -0x1.ddb968p84, -0x1.fec8c8p74,4579 -0x1.88aaaep28, -0x1.21ec4p-94, 0x1.e1f21cp-57, 0x1.0e7dd2p-37,
4502 0x1.64ffb2p59, 0x1.548922p20, 0x1.7270fcp22, -0x1.abac68p33,4580 -0x1.5963a2p-24, 0x1.4c314cp-61, -0x1.753d5ap113, -0x1.65705p-12,
4503 0x1.faabfp33, -0x1.8aee82p55, 0x1.1bf8fp75, 0x1.33c46ap-66,4581 -0x1.e34902p-54, -0x1.ab8022p87, -0x1.5cc252p-99, 0x1.4f4fe6p41,
4582 });
4583 try testArgs(@Vector(17, f32), .{
4584 0x1.6be79ap-19, -0x1.38819p-21, -0x1.8551dp2, -0x1.43155ep-126,
4585 0x1.96e6p108, 0x1.58abaap41, 0x1.145ffcp124, -0x1.8e314ep-41,
4586 -0x1.63151p42, 0x1.9585e8p124, 0x1.4bdd42p-66, 0x1.858674p-45,
4587 -0x1.bccb68p66, -0x1.88e0e8p-14, -0x1.e0461cp-116, 0x1.3c1e2ep120,
4588 -0x1.0076dep14,
4589 });
4590 try testArgs(@Vector(31, f32), .{
4591 0x1.8d5b34p-49, -0x1.bd019cp-83, -0x1.1d06e2p-95, -0x1.d9ac6ap-45,
4592 0x1.f942dap10, -0x1.c23402p121, -0x1.8e5656p-32, 0x1.925222p-53,
4593 -0x1.16440ep-117, 0x1.b146cep107, -0x1.b58cdep-52, 0x1.713f34p8,
4594 0x1.3de424p99, -0x1.3e6d6ep-28, -0x1.8261b4p-69, 0x1.043d66p-91,
4595 -0x1.fbcd6ep113, 0x1.7934dcp-47, 0x1.fa8152p99, 0x1.c29968p-58,
4596 0x1.77f26ap82, 0x1.4602aap-57, -0x1.8a4cb4p8, 0x1.d48cdap113,
4597 0x1.636a7ep29, 0x1.730262p57, 0x1.29e668p7, 0x1.58592cp20,
4598 0x1.d09ebp-107, 0x1.7a85c6p-39, 0x1.38e1d6p44,
4504 });4599 });
4505 try testArgs(@Vector(32, f32), .{4600 try testArgs(@Vector(32, f32), .{
4506 -0x1.039b68p37, -0x1.34de4ap-74, -0x1.05d78ap-76, -0x1.be0f5ap-47,4601 -0x1.95dec4p-65, 0x1.3833cp65, -0x1.0ef5ap-53, 0x1.86e4c8p101,
4507 0x1.032204p-38, 0x1.ef8e2ap-78, -0x1.b013ecp-80, 0x1.71fe4cp99,4602 -0x1.713132p24, -0x1.c6fd0ep123, -0x1.75aadcp88, -0x1.b8f0fp18,
4508 0x1.abdadap-14, 0x1.56a9a8p-48, -0x1.8bbd7ep9, 0x1.edd308p-72,4603 0x1.0f5b8ep-34, -0x1.0d0d66p-15, 0x0.842836p-126, -0x1.157782p22,
4509 -0x1.92fafcp-121, -0x1.50812p19, 0x1.f4ddc4p28, -0x1.6f0b12p-50,4604 -0x1.025e8ap-100, 0x1.be825ep117, 0x1.d3efc6p-45, 0x1.ed8462p-34,
4510 -0x1.12ab02p127, 0x1.24df48p21, -0x1.993c3p-14, -0x1.4cc476p-112,4605 -0x1.b373c8p-118, -0x1.dbfd16p4, 0x1.73ee9p-56, -0x1.cdff48p-69,
4511 0x1.13d9a8p-40, 0x1.a6e652p-9, -0x1.9c730cp-21, -0x1.a75aaap-70,4606 0x1.1b806ep-78, 0x1.65a58ap-4, -0x1.0d851cp77, 0x1.442c12p41,
4512 -0x1.39e632p-111, 0x1.8e8da8p-45, 0x1.b5652cp31, 0x1.258366p44,4607 0x1.215116p47, -0x1.75f266p-48, 0x1.2273d4p89, 0x1.1bab24p-100,
4513 0x1.d473aap92, -0x1.951b64p9, 0x1.542edp15, -0x0.f6222ap-126,4608 -0x1.0300ep-22, 0x1.8c199cp-70, -0x1.70e08cp-66, 0x1.aa6b3ep-24,
4609 });
4610 try testArgs(@Vector(33, f32), .{
4611 -0x1.4eddccp-116, 0x1.724e18p-94, -0x1.9d40bep54, -0x1.0afc5p-14,
4612 0x1.576c2p92, 0x1.cf52b6p110, -0x1.7e67ep117, -0x1.7db66ep90,
4613 0x1.3eac22p-38, 0x1.6ba068p72, -0x1.72dc2cp97, -0x1.4193f4p72,
4614 0x1.aa81f6p86, 0x1.984268p53, -0x1.14ba6ep-45, 0x1.15603ep-122,
4615 0x1.85e75p-56, 0x1.108a82p-121, 0x1.569ecp62, -0x1.7f3268p-68,
4616 -0x1.d0964ep0, 0x0.f7a596p-126, -0x1.367646p-11, 0x1.2065bp-26,
4617 0x1.cc954ap125, -0x1.956e1cp65, 0x1.774dep112, 0x1.69dfcep-16,
4618 -0x1.b0efb2p76, 0x1.14c54p70, -0x1.7c6b08p25, 0x1.ae20b4p31,
4619 -0x1.73c584p-118,
4514 });4620 });
45154621
4516 try testArgs(@Vector(1, f64), .{4622 try testArgs(@Vector(1, f64), .{
4517 -0x1.0114613df6f97p816,4623 0x1.58849bfb1303cp-254,
4518 });4624 });
4519 try testArgs(@Vector(2, f64), .{4625 try testArgs(@Vector(2, f64), .{
4520 -0x1.8404dad72003cp720, -0x1.6b14b40bcf3b7p-176,4626 -0x1.b4a24030f3facp215, -0x1.c1bdddbc41cdep950,
4627 });
4628 try testArgs(@Vector(3, f64), .{
4629 -0x1.7d154dcee386cp-284, -0x1.2fdda9cbabfap-84,
4630 0x1.00c86a9c3de5cp-46,
4521 });4631 });
4522 try testArgs(@Vector(4, f64), .{4632 try testArgs(@Vector(4, f64), .{
4523 -0x1.04e1acbfddd9cp681, -0x1.ed553cc056da7p-749,4633 0x1.70f298f25a9bfp826, 0x1.4b944832c8eecp-319,
4524 0x1.3d3f703a0c893p-905, 0x1.0b35633fa78fp691,4634 -0x1.d801afafdbc01p-708, -0x1.65d0b4b097a57p-872,
4635 });
4636 try testArgs(@Vector(5, f64), .{
4637 -0x1.4796bdf4c112bp938, 0x1.3661030c6a2fp-156,
4638 -0x1.20d194f89bc7fp-9, -0x1.f545d17a1d9e8p604,
4639 0x1.c786013e7205ep-514,
4640 });
4641 try testArgs(@Vector(7, f64), .{
4642 -0x1.8f6d6e549941fp501, -0x1.56374640d779p-762,
4643 -0x1.4ea02d12bd9cfp209, -0x1.ab85b639e78c6p-879,
4644 -0x1.fcd56fe4f85abp47, -0x1.8963745584169p-957,
4645 -0x1.581a8a0033e8p915,
4525 });4646 });
4526 try testArgs(@Vector(8, f64), .{4647 try testArgs(@Vector(8, f64), .{
4527 -0x1.901a2a60f0562p-301, -0x1.2516175ad61ecp-447,4648 -0x1.2a8fb1782b7f2p-126, -0x1.b246d12815c21p606,
4528 0x1.e7b12124846bfp564, 0x1.9291384bd7259p209,4649 0x1.6bc24f2a268b9p837, 0x1.1d550478ebd71p1016,
4529 -0x1.a7bf62f803c98p900, 0x1.4e2e26257bb3p987,4650 0x1.d2ba52815edc2p252, 0x1.a8d87e5eb97ecp-450,
4530 -0x1.413ca9a32d894p811, 0x1.61b1dd9432e95p479,4651 -0x1.c8a3d899aa89p601, -0x1.1fa47083d9a8fp289,
4652 });
4653 try testArgs(@Vector(9, f64), .{
4654 -0x1.312d39a09757p-567, -0x1.4b0ef2ac9424ep-10,
4655 0x1.84302715c6852p930, -0x1.01565f82fd32p761,
4656 -0x1.36ad9c057719ap-351, 0x1.dc4929f2400c8p793,
4657 -0x1.e90f3ae855d3dp-474, 0x1.4e65fb145865ep-834,
4658 0x1.4236a94937ee3p-987,
4659 });
4660 try testArgs(@Vector(15, f64), .{
4661 0x1.df73a72937309p351, -0x1.73506ab182b9p-23,
4662 0x1.b2c954612187p-997, 0x1.7c5ee7c602989p-93,
4663 -0x1.5edba35428d13p762, -0x1.e3bc1f194dc8cp-386,
4664 0x1.ca056fb59bdb9p651, 0x1.e59b99b174a0dp-528,
4665 0x1.7a995c7651aa7p929, -0x1.a25d3d5153405p413,
4666 0x1.e5579317d4b37p-50, 0x1.f9d5578c67f67p-90,
4667 -0x1.5da751d423506p611, 0x1.9a2cba7bf2467p488,
4668 0x1.db3d45f662c4ep-619,
4531 });4669 });
4532 try testArgs(@Vector(16, f64), .{4670 try testArgs(@Vector(16, f64), .{
4533 -0x1.8fc7286d95f54p-235, -0x1.796a7ea8372b6p-837,4671 0x1.fd61de463a33cp898, -0x1.47be52b4f1241p-18,
4534 -0x1.8c0f930539acbp-98, -0x1.ec80dfbf0b931p-430,4672 0x1.729aa777312a3p-930, -0x1.2db258cd9984dp895,
4535 -0x1.e3d80c640652fp-1019, 0x1.8241238fb542fp161,4673 0x1.a1fbc900c10cbp517, -0x1.e93dfa8923807p815,
4536 -0x1.e1f1a79d50263p137, -0x1.9ac5cb2771c28p-791,4674 -0x1.e8f19fc0aa2a8p191, -0x1.1b084206321d5p861,
4537 0x1.4d8f00fe881e7p-401, -0x1.87fbd7bfd99d7p346,4675 -0x1.0be3c6310c58ep457, 0x1.816c3bcf4b9f5p-504,
4538 -0x1.a8a7cc575335ep1017, 0x1.37bb88dc3fd8bp-355,4676 0x1.ec4b026b00c91p-831, 0x1.e42d18f5c7e4bp924,
4539 0x1.9d53d346c0e65p929, -0x1.bbae3d0229c34p289,4677 -0x1.f1483ecd74646p560, -0x1.cc5aea97d2264p447,
4540 -0x1.cb8ef994d5ce5p25, 0x1.ba20af512616ap50,4678 -0x1.a0b1e5b69d166p597, 0x1.e9a109fcf1358p694,
4679 });
4680 try testArgs(@Vector(17, f64), .{
4681 -0x1.cd163cf2878e5p-934, -0x1.ce0ad5b67552p196,
4682 -0x1.da0fd3a62b298p508, 0x1.1981c99b14943p3,
4683 0x1.d2f6461a9d1a9p390, -0x1.e8e877d3b4e96p-539,
4684 -0x1.8ad9d3e185c43p864, 0x1.61786be9783eep-110,
4685 -0x1.1f4be91d90cc3p-500, 0x1.71cacdd984837p956,
4686 0x1.7b6ae301fd95ep-661, 0x1.24571ba56e32p343,
4687 0x1.b1a9454ab9481p648, -0x1.887873f8044fep842,
4688 -0x1.2f4ee57b9de22p-967, -0x1.c931346ced885p-983,
4689 0x1.fe31b9923796bp-772,
4541 });4690 });
45424691
4543 try testArgs(@Vector(1, f80), .{4692 try testArgs(@Vector(1, f80), .{
4544 -0x1.a2e9410a7dfedabp-2324,4693 -0x1.482098130df28b74p12578,
4545 });4694 });
4546 try testArgs(@Vector(2, f80), .{4695 try testArgs(@Vector(2, f80), .{
4547 -0x1.a2e9410a7dfedabp-2324,4696 -0x1.275157565b1eee5ep14003,
4548 0x1.2b17da3b9746885p-8665,4697 0x1.a27b82ef4be6132ap3681,
4698 });
4699 try testArgs(@Vector(3, f80), .{
4700 0x1.9825fbd9b22021fep-10432,
4701 -0x1.b8c8c4e5e3911ca8p13568,
4702 0x1.aa99cc199c8e524p9865,
4549 });4703 });
4550 try testArgs(@Vector(4, f80), .{4704 try testArgs(@Vector(4, f80), .{
4551 -0x1.c488fedb7ab646cep-13007,4705 -0x1.9d8ab0a36953d0f6p-760,
4552 0x1.e914deaccaa50016p2073,4706 0x1.869b464121ce6576p-13660,
4553 -0x1.d1c7ae8ec3c9df86p10642,4707 0x1.a54b1d1e8ae2b62ap12073,
4554 -0x1.2da1658f337fa01p9893,4708 -0x1.2abe41c9a9d89ea4p-13141,
4709 });
4710 try testArgs(@Vector(5, f80), .{
4711 0x1.0fb10e205522f5aep-15041,
4712 -0x1.13e0c338580504dap10809,
4713 0x1.50e7c6666fd851acp-5508,
4714 -0x1.e2231120481fc762p-8351,
4715 0x1.4fae86dc45b06fe2p10741,
4716 });
4717 try testArgs(@Vector(7, f80), .{
4718 -0x1.fe8f8caa4e8697ecp-2992,
4719 0x1.2623c910a340e286p-14518,
4720 0x1.c5524642a438569p-9469,
4721 0x1.3d416ca0a47c73cep2981,
4722 0x1.a3a1eb1243923114p-6689,
4723 -0x1.a55df9ded3010b1cp-5798,
4724 -0x1.3d593df395b03e5ap-14382,
4555 });4725 });
4556 try testArgs(@Vector(8, f80), .{4726 try testArgs(@Vector(8, f80), .{
4557 -0x1.bed8a74c43750656p890,4727 -0x1.9bb73ea024f4167cp3116,
4558 -0x1.7bf57f38004ac976p8481,4728 0x1.adf6241753b29ed2p-4428,
4559 -0x1.9cdc10ac0657d328p7884,4729 -0x1.1494fa8680f9f5f4p2008,
4560 0x1.c86f61883da149fp12293,4730 -0x1.c68a673c59edeb24p2377,
4561 -0x1.528d6957df6bfdd8p14125,4731 0x1.26c7ab4021afb6dcp1376,
4562 -0x1.5ebb4006d0243bfep14530,4732 0x1.c829b0b3935a2ac6p-11758,
4563 -0x1.94b9b18636d12402p-1845,4733 -0x1.11e39b110c2fb122p-3836,
4564 -0x1.25439a6d68add188p5962,4734 -0x1.6db14745e291d466p1604,
4735 });
4736 try testArgs(@Vector(9, f80), .{
4737 0x1.f6e537676c132cc6p-10213,
4738 -0x1.b86eadf24d8c80eep808,
4739 -0x1.54bc27c9a9a2348cp-2369,
4740 -0x1.99453820b245bc5p-840,
4741 -0x1.93c299090fd981e6p-5264,
4742 -0x1.c742059979281ec4p-6347,
4743 -0x1.e3efe7b892591d3p-1877,
4744 -0x1.350c20a2d59c67dap-8972,
4745 -0x1.e3879f20ffc62ff2p-2600,
4565 });4746 });
45664747
4567 try testArgs(@Vector(1, f128), .{4748 try testArgs(@Vector(1, f128), .{
4568 -0x1.d1e6fc3b1e66632e7b79051a47dap14300,4749 -0x1.274ece23c1832bfe66a1bc59cf87p-8354,
4569 });4750 });
4570 try testArgs(@Vector(2, f128), .{4751 try testArgs(@Vector(2, f128), .{
4571 0x1.84b3ac8ffe5893b2c6af8d68de9dp-83,4752 0x1.838a4e7ba1e2191cebe701eac5d4p6581,
4572 -0x1.438ca2c8a0d8e3ee9062d351c46ep-10235,4753 0x1.cdfbda51a2adbce757d7c2e0981bp446,
4754 });
4755 try testArgs(@Vector(3, f128), .{
4756 -0x1.ff45938938f76db417c980c368c6p-7215,
4757 -0x1.277a316793a0172e49c7227952ccp10618,
4758 0x1.d85027eb4f4ed3512c10bff9a199p-8465,
4573 });4759 });
4574 try testArgs(@Vector(4, f128), .{4760 try testArgs(@Vector(4, f128), .{
4575 0x1.04eb03882d4fd1b090e714d3e5ep806,4761 -0x1.43d8ecf283d4ec6fc4993f385386p-12233,
4576 -0x1.4082b29f7c26e701764c915642ffp-6182,4762 -0x1.384424d239aa2ed9719d2c2d1e58p7346,
4577 -0x1.b6f1e8565e5040415110f18b519ap13383,4763 -0x1.d33fd11001f0ab6d0f9a2790b41cp14692,
4578 0x1.1c29f8c162cead9061c5797ea15ap11957,4764 -0x1.40219a635ef4b042cfb9d7bd9781p900,
4765 });
4766 try testArgs(@Vector(5, f128), .{
4767 -0x1.3273c97faf4619baedaebb51148fp9085,
4768 -0x1.f381263ad1033a071dff3a143b14p-13649,
4769 -0x1.24b24810f9a1f9b5d1542e2b5841p1425,
4770 -0x1.df9e062d482c2bbae0b8fcb07efep-5044,
4771 -0x1.15cbca8b8384412d7d09ff76bfe4p-2424,
4772 });
4773 try testArgs(@Vector(7, f128), .{
4774 -0x1.0972e6da79fa8bcd49431d813ea5p12192,
4775 0x1.568e3e61ac4fb17303e4ead041dcp-2542,
4776 0x1.a55c3f0014942187e6d40c72f12p-13437,
4777 -0x1.31fb0ec6dbdf7e4ea8ecc307e6f4p13767,
4778 -0x1.5dcc12514e3e540fea9dbd257935p-8938,
4779 -0x1.32471cd1d5d2a36e9148a8ce879ap-3274,
4780 -0x1.3fd3eb6d86a14567e49f358cf029p-4569,
4579 });4781 });
4580 try testArgs(@Vector(8, f128), .{4782 try testArgs(@Vector(8, f128), .{
4581 -0x1.53d7f00cd204d80e5ff5bb665773p11218,4783 -0x1.05fe5035b415bdc5f8f9ae4c8815p455,
4582 -0x1.4daa1c81cffe28e8fa5cd703c287p2362,4784 -0x1.fafde904d5cad82413daee7b88b8p-244,
4583 -0x1.cc6a71c3ad4560871efdbd025cd7p-8116,4785 0x1.53041230913c654449b12eb4d89bp2214,
4584 -0x1.87f8553cf8772fb6b78e7df3e3bap14523,4786 -0x1.12d9f4b006063e9c0c7bdf19f61ap-2483,
4585 -0x1.14b6880f6678f86dfb543dde1c6ep2105,4787 0x1.aee9d4ba013f668773e4f0fd9002p5461,
4586 0x1.9d2d4398414da9d857e76e8fd7ccp-13668,4788 0x1.a6776670633403e78a3cc6fcf8fdp8324,
4587 0x1.a37f07af240ded458d103c022064p-1158,4789 -0x1.392aa756df3b993ea9db22def53ep15136,
4588 0x1.425d53e6bd6070b847e5da1ed593p1394,4790 0x1.823ef104549bdd4624961a44736cp-1097,
4791 });
4792 try testArgs(@Vector(9, f128), .{
4793 -0x1.bde12739521a2bff70e510a6aca3p12384,
4794 -0x1.0001c77658eb15cd7cb631b4836bp2147,
4795 -0x1.f24c72b8cde26d95bd40f689a2aep-1416,
4796 -0x1.61957e7946030c0432af0381f64ap-9492,
4797 -0x1.631851492fa27fe7adc7441e0d21p16144,
4798 -0x1.9dd39ece97e7a70c6d36e7e3026p-15761,
4799 0x1.b044e441d7377755389d0bab3256p-1181,
4800 0x1.5c11719701b7ff21384fbbf32922p-1671,
4801 -0x1.1a2944a4dff2a4f96732bf03e8f7p-10567,
4589 });4802 });
4590 }4803 }
4591 };4804 };
...@@ -4897,6 +5110,15 @@ test reduceMul {...@@ -4897,6 +5110,15 @@ test reduceMul {
4897 try test_reduce_mul.testIntVectors();5110 try test_reduce_mul.testIntVectors();
4898}5111}
48995112
5113inline fn reduceAddOptimized(comptime Type: type, rhs: Type) @typeInfo(Type).vector.child {
5114 @setFloatMode(.optimized);
5115 return @reduce(.Add, rhs);
5116}
5117test reduceAddOptimized {
5118 const test_reduce_add_optimized = unary(reduceAddOptimized, .{ .compare = .approx });
5119 try test_reduce_add_optimized.testFloatVectors();
5120}
5121
4900inline fn splat(comptime Type: type, rhs: Type) Type {5122inline fn splat(comptime Type: type, rhs: Type) Type {
4901 return @splat(rhs[0]);5123 return @splat(rhs[0]);
4902}5124}
test/cases/float_mode_optimized_reduce.zig+2-2
...@@ -8,5 +8,5 @@ pub fn main() void {...@@ -8,5 +8,5 @@ pub fn main() void {
8}8}
99
10// run10// run
11// backend=llvm11// backend=stage2,llvm
12//12// target=x86_64-linux