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 {
23892389}
23902390
23912391fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2392 @setEvalBranchQuota(23_100);
2392 @setEvalBranchQuota(23_600);
23932393 const pt = cg.pt;
23942394 const zcu = pt.zcu;
23952395 const ip = &zcu.intern_pool;
......@@ -2427,7 +2427,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24272427 // zig fmt: off
24282428 .select => try cg.airSelect(inst),
24292429 .shuffle => try cg.airShuffle(inst),
2430 .reduce_optimized => try cg.airReduce(inst),
24312430 // zig fmt: on
24322431
24332432 .arg => if (cg.debug_output != .none) {
......@@ -67795,7 +67794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6779567794 .clobbers = .{ .eflags = true },
6779667795 .each = .{ .once = &.{
6779767796 .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ },
67798 .{ ._, ._, .movbe, .dst0w, .src0w, ._, ._ },
67797 .{ ._, ._be, .mov, .dst0w, .src0w, ._, ._ },
6779967798 } },
6780067799 }, .{
6780167800 .src_constraints = .{ .{ .exact_int = 16 }, .any, .any },
......@@ -67815,7 +67814,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6781567814 },
6781667815 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
6781767816 .each = .{ .once = &.{
67818 .{ ._, ._, .movbe, .dst0d, .src0d, ._, ._ },
67817 .{ ._, ._be, .mov, .dst0d, .src0d, ._, ._ },
6781967818 } },
6782067819 }, .{
6782167820 .src_constraints = .{ .{ .exact_int = 32 }, .any, .any },
......@@ -67824,7 +67823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6782467823 },
6782567824 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6782667825 .each = .{ .once = &.{
67827 .{ ._, ._, .bswap, .dst0d, ._, ._, ._ },
67826 .{ ._, .b_, .swap, .dst0d, ._, ._, ._ },
6782867827 } },
6782967828 }, .{
6783067829 .required_features = .{ .movbe, null, null, null },
......@@ -67835,7 +67834,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6783567834 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
6783667835 .clobbers = .{ .eflags = true },
6783767836 .each = .{ .once = &.{
67838 .{ ._, ._, .movbe, .dst0d, .src0d, ._, ._ },
67837 .{ ._, ._be, .mov, .dst0d, .src0d, ._, ._ },
6783967838 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
6784067839 } },
6784167840 }, .{
......@@ -67846,7 +67845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6784667845 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6784767846 .clobbers = .{ .eflags = true },
6784867847 .each = .{ .once = &.{
67849 .{ ._, ._, .bswap, .dst0d, ._, ._, ._ },
67848 .{ ._, .b_, .swap, .dst0d, ._, ._, ._ },
6785067849 .{ ._, ._r, .sa, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
6785167850 } },
6785267851 }, .{
......@@ -67858,7 +67857,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6785867857 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
6785967858 .clobbers = .{ .eflags = true },
6786067859 .each = .{ .once = &.{
67861 .{ ._, ._, .movbe, .dst0d, .src0d, ._, ._ },
67860 .{ ._, ._be, .mov, .dst0d, .src0d, ._, ._ },
6786267861 .{ ._, ._r, .sh, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
6786367862 } },
6786467863 }, .{
......@@ -67869,7 +67868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6786967868 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6787067869 .clobbers = .{ .eflags = true },
6787167870 .each = .{ .once = &.{
67872 .{ ._, ._, .bswap, .dst0d, ._, ._, ._ },
67871 .{ ._, .b_, .swap, .dst0d, ._, ._, ._ },
6787367872 .{ ._, ._r, .sh, .dst0d, .uia(32, .src0, .sub_bit_size), ._, ._ },
6787467873 } },
6787567874 }, .{
......@@ -67880,7 +67879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6788067879 },
6788167880 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
6788267881 .each = .{ .once = &.{
67883 .{ ._, ._, .movbe, .dst0q, .src0q, ._, ._ },
67882 .{ ._, ._be, .mov, .dst0q, .src0q, ._, ._ },
6788467883 } },
6788567884 }, .{
6788667885 .src_constraints = .{ .{ .exact_int = 64 }, .any, .any },
......@@ -67889,7 +67888,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6788967888 },
6789067889 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6789167890 .each = .{ .once = &.{
67892 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
67891 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
6789367892 } },
6789467893 }, .{
6789567894 .required_features = .{ .movbe, null, null, null },
......@@ -67900,7 +67899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6790067899 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
6790167900 .clobbers = .{ .eflags = true },
6790267901 .each = .{ .once = &.{
67903 .{ ._, ._, .movbe, .dst0q, .src0q, ._, ._ },
67902 .{ ._, ._be, .mov, .dst0q, .src0q, ._, ._ },
6790467903 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
6790567904 } },
6790667905 }, .{
......@@ -67911,7 +67910,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6791167910 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6791267911 .clobbers = .{ .eflags = true },
6791367912 .each = .{ .once = &.{
67914 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
67913 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
6791567914 .{ ._, ._r, .sa, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
6791667915 } },
6791767916 }, .{
......@@ -67923,7 +67922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6792367922 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
6792467923 .clobbers = .{ .eflags = true },
6792567924 .each = .{ .once = &.{
67926 .{ ._, ._, .movbe, .dst0q, .src0q, ._, ._ },
67925 .{ ._, ._be, .mov, .dst0q, .src0q, ._, ._ },
6792767926 .{ ._, ._r, .sh, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
6792867927 } },
6792967928 }, .{
......@@ -67934,7 +67933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6793467933 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6793567934 .clobbers = .{ .eflags = true },
6793667935 .each = .{ .once = &.{
67937 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
67936 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
6793867937 .{ ._, ._r, .sh, .dst0q, .uia(64, .src0, .sub_bit_size), ._, ._ },
6793967938 } },
6794067939 }, .{
......@@ -67962,7 +67961,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6796267961 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
6796367962 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6796467963 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
67965 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
67964 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
6796667965 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
6796767966 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
6796867967 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
......@@ -67992,7 +67991,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6799267991 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
6799367992 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6799467993 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
67995 .{ ._, ._, .bswap, .tmp2q, ._, ._, ._ },
67994 .{ ._, .b_, .swap, .tmp2q, ._, ._, ._ },
6799667995 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
6799767996 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
6799867997 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
......@@ -68026,7 +68025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6802668025 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
6802768026 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
6802868027 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68029 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
68028 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
6803068029 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
6803168030 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
6803268031 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
......@@ -68059,7 +68058,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6805968058 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
6806068059 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
6806168060 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68062 .{ ._, ._, .bswap, .tmp2q, ._, ._, ._ },
68061 .{ ._, .b_, .swap, .tmp2q, ._, ._, ._ },
6806368062 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
6806468063 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
6806568064 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
......@@ -68091,7 +68090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6809168090 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6809268091 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
6809368092 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68094 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
68093 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
6809568094 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
6809668095 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
6809768096 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
......@@ -68122,7 +68121,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6812268121 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6812368122 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ },
6812468123 .{ .@"0:", ._, .mov, .tmp2q, .lea(.tmp1q), ._, ._ },
68125 .{ ._, ._, .bswap, .tmp2q, ._, ._, ._ },
68124 .{ ._, .b_, .swap, .tmp2q, ._, ._, ._ },
6812668125 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
6812768126 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
6812868127 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
......@@ -68155,7 +68154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6815568154 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },
6815668155 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
6815768156 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68158 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },
68157 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
6815968158 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6816068159 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6816168160 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68192,7 +68191,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6819268191 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
6819368192 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
6819468193 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68195 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },
68194 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
6819668195 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6819768196 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6819868197 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68227,7 +68226,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6822768226 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6822868227 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
6822968228 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
68230 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },
68229 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
6823168230 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6823268231 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6823368232 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68263,7 +68262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6826368262 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
6826468263 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp2q, ._, ._ },
6826568264 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68266 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },
68265 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
6826768266 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6826868267 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6826968268 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68298,7 +68297,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6829868297 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6829968298 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },
6830068299 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
68301 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },
68300 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
6830268301 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6830368302 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6830468303 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68334,7 +68333,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6833468333 .{ ._, ._, .movsx, .tmp2q, .mem(.src0b), ._, ._ },
6833568334 .{ ._, ._r, .sa, .tmp2q, .ui(63), ._, ._ },
6833668335 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68337 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },
68336 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
6833868337 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6833968338 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6834068339 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68368,7 +68367,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6836868367 .{ ._, ._, .mov, .tmp0d, .sia(-8, .dst0, .add_size), ._, ._ },
6836968368 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6837068369 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
68371 .{ .@"0:", ._, .movbe, .tmp3q, .lea(.tmp1q), ._, ._ },
68370 .{ .@"0:", ._be, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
6837268371 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6837368372 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6837468373 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -68403,7 +68402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6840368402 .{ ._, ._, .lea, .tmp1p, .mem(.src0), ._, ._ },
6840468403 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
6840568404 .{ .@"0:", ._, .mov, .tmp3q, .lea(.tmp1q), ._, ._ },
68406 .{ ._, ._, .bswap, .tmp3q, ._, ._, ._ },
68405 .{ ._, .b_, .swap, .tmp3q, ._, ._, ._ },
6840768406 .{ ._, ._, .mov, .tmp4q, .tmp3q, ._, ._ },
6840868407 .{ ._, ._rd, .sh, .tmp3q, .tmp2q, .uia(64, .src0, .sub_bit_size_rem_64), ._ },
6840968408 .{ ._, ._, .mov, .tmp2q, .tmp4q, ._, ._ },
......@@ -69742,7 +69741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6974269741 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6974369742 .clobbers = .{ .eflags = true },
6974469743 .each = .{ .once = &.{
69745 .{ ._, ._, .bswap, .src0d, ._, ._, ._ },
69744 .{ ._, .b_, .swap, .src0d, ._, ._, ._ },
6974669745 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
6974769746 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },
6974869747 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },
......@@ -69897,7 +69896,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6989769896 .dst_temps = .{ .{ .ref = .src0 }, .unused },
6989869897 .clobbers = .{ .eflags = true },
6989969898 .each = .{ .once = &.{
69900 .{ ._, ._, .bswap, .src0d, ._, ._, ._ },
69899 .{ ._, .b_, .swap, .src0d, ._, ._, ._ },
6990169900 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
6990269901 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },
6990369902 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },
......@@ -70053,7 +70052,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7005370052 .dst_temps = .{ .{ .ref = .src0 }, .unused },
7005470053 .clobbers = .{ .eflags = true },
7005570054 .each = .{ .once = &.{
70056 .{ ._, ._, .bswap, .src0d, ._, ._, ._ },
70055 .{ ._, .b_, .swap, .src0d, ._, ._, ._ },
7005770056 .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
7005870057 .{ ._, ._r, .sh, .src0d, .ui(4), ._, ._ },
7005970058 .{ ._, ._l, .sh, .tmp0d, .ui(4), ._, ._ },
......@@ -70150,7 +70149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7015070149 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
7015170150 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },
7015270151 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },
70153 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
70152 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
7015470153 } },
7015570154 }, .{
7015670155 .required_features = .{ .@"64bit", null, null, null },
......@@ -70174,7 +70173,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7017470173 .dst_temps = .{ .{ .ref = .src0 }, .unused },
7017570174 .clobbers = .{ .eflags = true },
7017670175 .each = .{ .once = &.{
70177 .{ ._, ._, .bswap, .src0q, ._, ._, ._ },
70176 .{ ._, .b_, .swap, .src0q, ._, ._, ._ },
7017870177 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
7017970178 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7018070179 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
......@@ -70222,7 +70221,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7022270221 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
7022370222 .{ ._, .v_b, .gf2p8affineq, .tmp1x, .src0x, .lea(.dst0x), .ui(0) },
7022470223 .{ ._, .v_q, .mov, .dst0q, .tmp1x, ._, ._ },
70225 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
70224 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
7022670225 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
7022770226 } },
7022870227 }, .{
......@@ -70250,7 +70249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7025070249 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
7025170250 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },
7025270251 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },
70253 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
70252 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
7025470253 .{ ._, ._r, .sa, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
7025570254 } },
7025670255 }, .{
......@@ -70275,7 +70274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7027570274 .dst_temps = .{ .{ .ref = .src0 }, .unused },
7027670275 .clobbers = .{ .eflags = true },
7027770276 .each = .{ .once = &.{
70278 .{ ._, ._, .bswap, .src0q, ._, ._, ._ },
70277 .{ ._, .b_, .swap, .src0q, ._, ._, ._ },
7027970278 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
7028070279 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7028170280 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
......@@ -70378,7 +70377,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7037870377 .{ ._, ._, .lea, .dst0p, .mem(.tmp0), ._, ._ },
7037970378 .{ ._, ._b, .gf2p8affineq, .src0x, .lea(.dst0x), .ui(0), ._ },
7038070379 .{ ._, ._q, .mov, .dst0q, .src0x, ._, ._ },
70381 .{ ._, ._, .bswap, .dst0q, ._, ._, ._ },
70380 .{ ._, .b_, .swap, .dst0q, ._, ._, ._ },
7038270381 .{ ._, ._r, .sh, .dst0q, .uia(64, .dst0, .sub_bit_size), ._, ._ },
7038370382 } },
7038470383 }, .{
......@@ -70403,7 +70402,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7040370402 .dst_temps = .{ .{ .ref = .src0 }, .unused },
7040470403 .clobbers = .{ .eflags = true },
7040570404 .each = .{ .once = &.{
70406 .{ ._, ._, .bswap, .src0q, ._, ._, ._ },
70405 .{ ._, .b_, .swap, .src0q, ._, ._, ._ },
7040770406 .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
7040870407 .{ ._, ._, .mov, .tmp1q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7040970408 .{ ._, ._, .@"and", .tmp0q, .tmp1q, ._, ._ },
......@@ -70646,10 +70645,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7064670645 },
7064770646 .extra_temps = .{
7064870647 .{ .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 } } },
7065070649 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
70651 .unused,
70652 .unused,
70650 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
70651 .{ .type = .vector_16_u8, .kind = .{ .rc = .sse } },
7065370652 .unused,
7065470653 .unused,
7065570654 .unused,
......@@ -70661,9 +70660,12 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7066170660 .each = .{ .once = &.{
7066270661 .{ ._, ._, .lea, .tmp2p, .mem(.tmp0), ._, ._ },
7066370662 .{ ._, .v_b, .gf2p8affineq, .dst0y, .src0y, .lea(.tmp2y), .ui(0) },
70663 .{ ._, .v_f128, .extract, .tmp3x, .dst0y, .ui(1), ._ },
7066470664 .{ ._, ._, .lea, .tmp2p, .mem(.tmp1), ._, ._ },
70665 .{ ._, .vp_b, .shuf, .dst0y, .dst0y, .lea(.tmp2y), ._ },
70666 .{ ._, .v_pd, .perm, .dst0y, .dst0y, .ui(0b01_00_11_10), ._ },
70665 .{ ._, .v_dqa, .mov, .tmp4x, .lea(.tmp2x), ._, ._ },
70666 .{ ._, .vp_b, .shuf, .dst0x, .dst0x, .tmp4x, ._ },
70667 .{ ._, .vp_b, .shuf, .tmp3x, .tmp3x, .tmp4x, ._ },
70668 .{ ._, .v_f128, .insert, .dst0y, .tmp3y, .dst0x, .ui(1) },
7066770669 } },
7066870670 }, .{
7066970671 .required_features = .{ .avx2, .gfni, null, null },
......@@ -70701,42 +70703,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7070170703 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
7070270704 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
7070370705 } },
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 } },
7074070706 }, .{
7074170707 .required_features = .{ .avx, .gfni, null, null },
7074270708 .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 {
7081970785 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
7082070786 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
7082170787 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70822 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
70788 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
7082370789 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
7082470790 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
7082570791 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
......@@ -70870,7 +70836,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7087070836 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
7087170837 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
7087270838 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70873 .{ ._, ._, .bswap, .tmp5q, ._, ._, ._ },
70839 .{ ._, .b_, .swap, .tmp5q, ._, ._, ._ },
7087470840 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
7087570841 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
7087670842 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
......@@ -70926,7 +70892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7092670892 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
7092770893 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
7092870894 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70929 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
70895 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
7093070896 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
7093170897 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
7093270898 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
......@@ -70981,7 +70947,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7098170947 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
7098270948 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
7098370949 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
70984 .{ ._, ._, .bswap, .tmp5q, ._, ._, ._ },
70950 .{ ._, .b_, .swap, .tmp5q, ._, ._, ._ },
7098570951 .{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
7098670952 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
7098770953 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
......@@ -71034,7 +71000,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7103471000 .{ ._, ._l, .sh, .tmp6q, .ui(1), ._, ._ },
7103571001 .{ ._, ._, .@"and", .tmp5q, .tmp4q, ._, ._ },
7103671002 .{ ._, ._, .@"or", .tmp5q, .tmp6q, ._, ._ },
71037 .{ ._, ._, .movbe, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
71003 .{ ._, ._be, .mov, .memi(.dst0q, .tmp0), .tmp5q, ._, ._ },
7103871004 .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
7103971005 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
7104071006 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
......@@ -71068,7 +71034,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7106871034 .{ ._, ._, .mov, .tmp3q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7106971035 .{ ._, ._, .mov, .tmp4q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
7107071036 .{ .@"0:", ._, .mov, .tmp5q, .lea(.tmp1q), ._, ._ },
71071 .{ ._, ._, .bswap, .tmp5q, ._, ._, ._ },
71037 .{ ._, .b_, .swap, .tmp5q, ._, ._, ._ },
7107271038 .{ ._, ._, .mov, .tmp6q, .tmp5q, ._, ._ },
7107371039 .{ ._, ._, .@"and", .tmp6q, .tmp2q, ._, ._ },
7107471040 .{ ._, ._r, .sh, .tmp5q, .ui(4), ._, ._ },
......@@ -71123,7 +71089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7112371089 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7112471090 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7112571091 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71126 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },
71092 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
7112771093 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7112871094 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7112971095 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71182,7 +71148,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7118271148 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7118371149 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
7118471150 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71185 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },
71151 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
7118671152 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7118771153 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7118871154 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71238,7 +71204,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7123871204 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7123971205 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7124071206 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71241 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },
71207 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
7124271208 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7124371209 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7124471210 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71295,7 +71261,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7129571261 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7129671262 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
7129771263 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71298 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },
71264 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
7129971265 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7130071266 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7130171267 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71352,7 +71318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7135271318 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7135371319 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7135471320 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71355 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },
71321 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
7135671322 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7135771323 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7135871324 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71410,7 +71376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7141071376 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7141171377 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
7141271378 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71413 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },
71379 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
7141471380 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7141571381 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7141671382 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71465,7 +71431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7146571431 .{ ._, ._, .mov, .tmp3q, .uia(0b00001111000011110000111100001111, .none, .repeat), ._, ._ },
7146671432 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7146771433 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
71468 .{ .@"0:", ._, .movbe, .tmp6q, .lea(.tmp1q), ._, ._ },
71434 .{ .@"0:", ._be, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
7146971435 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7147071436 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7147171437 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -71521,7 +71487,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7152171487 .{ ._, ._, .mov, .tmp4q, .uia(0b00110011001100110011001100110011, .none, .repeat), ._, ._ },
7152271488 .{ ._, ._, .mov, .tmp5q, .uia(0b01010101010101010101010101010101, .none, .repeat), ._, ._ },
7152371489 .{ .@"0:", ._, .mov, .tmp6q, .lea(.tmp1q), ._, ._ },
71524 .{ ._, ._, .bswap, .tmp6q, ._, ._, ._ },
71490 .{ ._, .b_, .swap, .tmp6q, ._, ._, ._ },
7152571491 .{ ._, ._, .mov, .tmp7q, .tmp6q, ._, ._ },
7152671492 .{ ._, ._, .@"and", .tmp7q, .tmp3q, ._, ._ },
7152771493 .{ ._, ._r, .sh, .tmp6q, .ui(4), ._, ._ },
......@@ -98883,7 +98849,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
9888398849 .clobbers = .{ .eflags = true },
9888498850 .each = .{ .once = &.{
9888598851 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
98886 .{ ._, .v_dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
98852 .{ ._, .v_ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
9888798853 .{ ._, ._, .mov, .tmp0p, .sa(.dst0, .sub_unaligned_size), ._, ._ },
9888898854 .{ .@"0:", .v_ps, .cvtph2, .tmp3x, .memsia(.src0q, .@"2", .tmp0, .add_unaligned_size), ._, ._ },
9888998855 .{ ._, .v_, .cvttps2dq, .tmp3x, .tmp3x, ._, ._ },
......@@ -118968,26 +118934,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
118968118934 } },
118969118935 } },
118970118936 } ++ [_]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 }, .{
118991118937 .required_features = .{ .avx, null, null, null },
118992118938 .dst_constraints = .{ .{ .int = .byte }, .any },
118993118939 .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 {
119627119573 .unused,
119628119574 .unused,
119629119575 },
119630 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
119576 .dst_temps = .{ .{ .rc = .sse }, .unused },
119631119577 .each = .{ .once = &.{
119632119578 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
119633119579 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -119669,7 +119615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119669119615 .unused,
119670119616 .unused,
119671119617 },
119672 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
119618 .dst_temps = .{ .{ .rc = .sse }, .unused },
119673119619 .each = .{ .once = &.{
119674119620 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119675119621 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -119717,6 +119663,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119717119663 .unused,
119718119664 },
119719119665 .dst_temps = .{ .{ .rc = .sse }, .unused },
119666 .clobbers = .{ .eflags = true },
119720119667 .each = .{ .once = &.{
119721119668 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
119722119669 .{ ._, .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 {
119755119702 .unused,
119756119703 },
119757119704 .dst_temps = .{ .{ .rc = .sse }, .unused },
119705 .clobbers = .{ .eflags = true },
119758119706 .each = .{ .once = &.{
119759119707 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
119760119708 .{ ._, .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 {
119793119741 .unused,
119794119742 },
119795119743 .dst_temps = .{ .{ .rc = .sse }, .unused },
119744 .clobbers = .{ .eflags = true },
119796119745 .each = .{ .once = &.{
119797119746 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
119798119747 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -119838,6 +119787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119838119787 .unused,
119839119788 },
119840119789 .dst_temps = .{ .{ .rc = .sse }, .unused },
119790 .clobbers = .{ .eflags = true },
119841119791 .each = .{ .once = &.{
119842119792 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119843119793 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -119897,6 +119847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119897119847 .unused,
119898119848 },
119899119849 .dst_temps = .{ .{ .rc = .sse }, .unused },
119850 .clobbers = .{ .eflags = true },
119900119851 .each = .{ .once = &.{
119901119852 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119902119853 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -119948,6 +119899,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119948119899 .unused,
119949119900 },
119950119901 .dst_temps = .{ .{ .rc = .sse }, .unused },
119902 .clobbers = .{ .eflags = true },
119951119903 .each = .{ .once = &.{
119952119904 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
119953119905 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -119999,6 +119951,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
119999119951 .unused,
120000119952 },
120001119953 .dst_temps = .{ .{ .rc = .sse }, .unused },
119954 .clobbers = .{ .eflags = true },
120002119955 .each = .{ .once = &.{
120003119956 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120004119957 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -120025,7 +119978,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120025119978 }, .{
120026119979 .required_features = .{ .slow_incdec, null, null, null },
120027119980 .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 },
120029119982 .patterns = &.{
120030119983 .{ .src = .{ .to_mem, .none, .none } },
120031119984 },
......@@ -120053,7 +120006,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120053120006 } },
120054120007 }, .{
120055120008 .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 },
120057120010 .patterns = &.{
120058120011 .{ .src = .{ .to_mem, .none, .none } },
120059120012 },
......@@ -120079,26 +120032,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120079120032 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
120080120033 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
120081120034 } },
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 = &.{} },
120102120035 }, .{
120103120036 .required_features = .{ .avx, null, null, null },
120104120037 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -120573,7 +120506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120573120506 .unused,
120574120507 .unused,
120575120508 },
120576 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
120509 .dst_temps = .{ .{ .rc = .sse }, .unused },
120577120510 .each = .{ .once = &.{
120578120511 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
120579120512 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -120613,7 +120546,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120613120546 .unused,
120614120547 .unused,
120615120548 },
120616 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
120549 .dst_temps = .{ .{ .rc = .sse }, .unused },
120617120550 .each = .{ .once = &.{
120618120551 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120619120552 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -120659,6 +120592,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120659120592 .unused,
120660120593 },
120661120594 .dst_temps = .{ .{ .rc = .sse }, .unused },
120595 .clobbers = .{ .eflags = true },
120662120596 .each = .{ .once = &.{
120663120597 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
120664120598 .{ ._, .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 {
120695120629 .unused,
120696120630 },
120697120631 .dst_temps = .{ .{ .rc = .sse }, .unused },
120632 .clobbers = .{ .eflags = true },
120698120633 .each = .{ .once = &.{
120699120634 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
120700120635 .{ ._, .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 {
120731120666 .unused,
120732120667 },
120733120668 .dst_temps = .{ .{ .rc = .sse }, .unused },
120669 .clobbers = .{ .eflags = true },
120734120670 .each = .{ .once = &.{
120735120671 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
120736120672 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -120773,6 +120709,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120773120709 .unused,
120774120710 },
120775120711 .dst_temps = .{ .{ .rc = .sse }, .unused },
120712 .clobbers = .{ .eflags = true },
120776120713 .each = .{ .once = &.{
120777120714 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120778120715 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -120830,6 +120767,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120830120767 .unused,
120831120768 },
120832120769 .dst_temps = .{ .{ .rc = .sse }, .unused },
120770 .clobbers = .{ .eflags = true },
120833120771 .each = .{ .once = &.{
120834120772 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120835120773 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -120879,6 +120817,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120879120817 .unused,
120880120818 },
120881120819 .dst_temps = .{ .{ .rc = .sse }, .unused },
120820 .clobbers = .{ .eflags = true },
120882120821 .each = .{ .once = &.{
120883120822 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120884120823 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -120928,6 +120867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120928120867 .unused,
120929120868 },
120930120869 .dst_temps = .{ .{ .rc = .sse }, .unused },
120870 .clobbers = .{ .eflags = true },
120931120871 .each = .{ .once = &.{
120932120872 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
120933120873 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -120950,7 +120890,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120950120890 } },
120951120891 }, .{
120952120892 .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 },
120954120894 .patterns = &.{
120955120895 .{ .src = .{ .to_mem, .none, .none } },
120956120896 },
......@@ -120976,26 +120916,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
120976120916 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
120977120917 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
120978120918 } },
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 = &.{} },
120999120919 }, .{
121000120920 .required_features = .{ .avx, null, null, null },
121001120921 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -121316,7 +121236,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121316121236 .unused,
121317121237 .unused,
121318121238 },
121319 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
121239 .dst_temps = .{ .{ .rc = .sse }, .unused },
121320121240 .each = .{ .once = &.{
121321121241 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
121322121242 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -121354,7 +121274,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121354121274 .unused,
121355121275 .unused,
121356121276 },
121357 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
121277 .dst_temps = .{ .{ .rc = .sse }, .unused },
121358121278 .each = .{ .once = &.{
121359121279 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121360121280 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -121398,6 +121318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121398121318 .unused,
121399121319 },
121400121320 .dst_temps = .{ .{ .rc = .sse }, .unused },
121321 .clobbers = .{ .eflags = true },
121401121322 .each = .{ .once = &.{
121402121323 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
121403121324 .{ ._, .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 {
121432121353 .unused,
121433121354 },
121434121355 .dst_temps = .{ .{ .rc = .sse }, .unused },
121356 .clobbers = .{ .eflags = true },
121435121357 .each = .{ .once = &.{
121436121358 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
121437121359 .{ ._, .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 {
121466121388 .unused,
121467121389 },
121468121390 .dst_temps = .{ .{ .rc = .sse }, .unused },
121391 .clobbers = .{ .eflags = true },
121469121392 .each = .{ .once = &.{
121470121393 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
121471121394 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -121505,6 +121428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121505121428 .unused,
121506121429 },
121507121430 .dst_temps = .{ .{ .rc = .sse }, .unused },
121431 .clobbers = .{ .eflags = true },
121508121432 .each = .{ .once = &.{
121509121433 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121510121434 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -121560,6 +121484,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121560121484 .unused,
121561121485 },
121562121486 .dst_temps = .{ .{ .rc = .sse }, .unused },
121487 .clobbers = .{ .eflags = true },
121563121488 .each = .{ .once = &.{
121564121489 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121565121490 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -121607,6 +121532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121607121532 .unused,
121608121533 },
121609121534 .dst_temps = .{ .{ .rc = .sse }, .unused },
121535 .clobbers = .{ .eflags = true },
121610121536 .each = .{ .once = &.{
121611121537 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121612121538 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -121654,6 +121580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121654121580 .unused,
121655121581 },
121656121582 .dst_temps = .{ .{ .rc = .sse }, .unused },
121583 .clobbers = .{ .eflags = true },
121657121584 .each = .{ .once = &.{
121658121585 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121659121586 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -121673,7 +121600,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121673121600 } },
121674121601 }, .{
121675121602 .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 },
121677121604 .patterns = &.{
121678121605 .{ .src = .{ .to_mem, .none, .none } },
121679121606 },
......@@ -121699,27 +121626,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121699121626 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
121700121627 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
121701121628 } },
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 = &.{} },
121723121629 }, .{
121724121630 .required_features = .{ .avx, null, null, null },
121725121631 .dst_constraints = .{ .{ .int = .qword }, .any },
......@@ -121898,7 +121804,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121898121804 .unused,
121899121805 .unused,
121900121806 },
121901 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
121807 .dst_temps = .{ .{ .rc = .sse }, .unused },
121902121808 .each = .{ .once = &.{
121903121809 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
121904121810 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -121934,7 +121840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121934121840 .unused,
121935121841 .unused,
121936121842 },
121937 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
121843 .dst_temps = .{ .{ .rc = .sse }, .unused },
121938121844 .each = .{ .once = &.{
121939121845 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
121940121846 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -121976,6 +121882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
121976121882 .unused,
121977121883 },
121978121884 .dst_temps = .{ .{ .rc = .sse }, .unused },
121885 .clobbers = .{ .eflags = true },
121979121886 .each = .{ .once = &.{
121980121887 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
121981121888 .{ ._, .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 {
122008121915 .unused,
122009121916 },
122010121917 .dst_temps = .{ .{ .rc = .sse }, .unused },
121918 .clobbers = .{ .eflags = true },
122011121919 .each = .{ .once = &.{
122012121920 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122013121921 .{ ._, .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 {
122040121948 .unused,
122041121949 },
122042121950 .dst_temps = .{ .{ .rc = .sse }, .unused },
121951 .clobbers = .{ .eflags = true },
122043121952 .each = .{ .once = &.{
122044121953 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
122045121954 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -122077,6 +121986,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122077121986 .unused,
122078121987 },
122079121988 .dst_temps = .{ .{ .rc = .sse }, .unused },
121989 .clobbers = .{ .eflags = true },
122080121990 .each = .{ .once = &.{
122081121991 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122082121992 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122130,6 +122040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122130122040 .unused,
122131122041 },
122132122042 .dst_temps = .{ .{ .rc = .sse }, .unused },
122043 .clobbers = .{ .eflags = true },
122133122044 .each = .{ .once = &.{
122134122045 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122135122046 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122175,6 +122086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122175122086 .unused,
122176122087 },
122177122088 .dst_temps = .{ .{ .rc = .sse }, .unused },
122089 .clobbers = .{ .eflags = true },
122178122090 .each = .{ .once = &.{
122179122091 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122180122092 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122220,6 +122132,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122220122132 .unused,
122221122133 },
122222122134 .dst_temps = .{ .{ .rc = .sse }, .unused },
122135 .clobbers = .{ .eflags = true },
122223122136 .each = .{ .once = &.{
122224122137 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122225122138 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -122238,7 +122151,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122238122151 }, .{
122239122152 .required_features = .{ .@"64bit", null, null, null },
122240122153 .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 },
122242122155 .patterns = &.{
122243122156 .{ .src = .{ .to_mem, .none, .none } },
122244122157 },
......@@ -122264,25 +122177,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122264122177 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
122265122178 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
122266122179 } },
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 = &.{} },
122286122180 }, .{
122287122181 .required_features = .{ .avx2, null, null, null },
122288122182 .dst_constraints = .{ .{ .int = .xword }, .any },
......@@ -122353,7 +122247,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122353122247 .unused,
122354122248 .unused,
122355122249 },
122356 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
122250 .dst_temps = .{ .{ .rc = .sse }, .unused },
122357122251 .each = .{ .once = &.{
122358122252 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
122359122253 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -122408,6 +122302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122408122302 .unused,
122409122303 },
122410122304 .dst_temps = .{ .{ .rc = .sse }, .unused },
122305 .clobbers = .{ .eflags = true },
122411122306 .each = .{ .once = &.{
122412122307 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122413122308 .{ ._, .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 {
122438122333 .unused,
122439122334 },
122440122335 .dst_temps = .{ .{ .rc = .sse }, .unused },
122336 .clobbers = .{ .eflags = true },
122441122337 .each = .{ .once = &.{
122442122338 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122443122339 .{ ._, .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 {
122450122346 }, .{
122451122347 .required_features = .{ .sse2, null, null, null },
122452122348 .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 },
122454122350 .patterns = &.{
122455122351 .{ .src = .{ .to_mem, .none, .none } },
122456122352 },
......@@ -122468,6 +122364,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122468122364 .unused,
122469122365 },
122470122366 .dst_temps = .{ .{ .rc = .sse }, .unused },
122367 .clobbers = .{ .eflags = true },
122471122368 .each = .{ .once = &.{
122472122369 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
122473122370 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -122503,6 +122400,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122503122400 .unused,
122504122401 },
122505122402 .dst_temps = .{ .{ .rc = .sse }, .unused },
122403 .clobbers = .{ .eflags = true },
122506122404 .each = .{ .once = &.{
122507122405 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122508122406 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122554,6 +122452,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122554122452 .unused,
122555122453 },
122556122454 .dst_temps = .{ .{ .rc = .sse }, .unused },
122455 .clobbers = .{ .eflags = true },
122557122456 .each = .{ .once = &.{
122558122457 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122559122458 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122597,6 +122496,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122597122496 .unused,
122598122497 },
122599122498 .dst_temps = .{ .{ .rc = .sse }, .unused },
122499 .clobbers = .{ .eflags = true },
122600122500 .each = .{ .once = &.{
122601122501 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122602122502 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122640,6 +122540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122640122540 .unused,
122641122541 },
122642122542 .dst_temps = .{ .{ .rc = .sse }, .unused },
122543 .clobbers = .{ .eflags = true },
122643122544 .each = .{ .once = &.{
122644122545 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122645122546 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -122653,25 +122554,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122653122554 .{ ._, ._, .sub, .tmp0d, .si(16), ._, ._ },
122654122555 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
122655122556 } },
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 = &.{} },
122675122557 }, .{
122676122558 .required_features = .{ .avx512f, null, null, null },
122677122559 .dst_constraints = .{ .{ .int = .yword }, .any },
......@@ -122679,7 +122561,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122679122561 .patterns = &.{
122680122562 .{ .src = .{ .to_mem, .none, .none } },
122681122563 },
122682 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
122564 .dst_temps = .{ .{ .rc = .sse }, .unused },
122683122565 .each = .{ .once = &.{
122684122566 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
122685122567 .{ ._, .vp_, mir_tag, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -122687,7 +122569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122687122569 }, .{
122688122570 .required_features = .{ .avx2, null, null, null },
122689122571 .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 },
122691122573 .patterns = &.{
122692122574 .{ .src = .{ .to_mem, .none, .none } },
122693122575 },
......@@ -122705,6 +122587,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122705122587 .unused,
122706122588 },
122707122589 .dst_temps = .{ .{ .rc = .sse }, .unused },
122590 .clobbers = .{ .eflags = true },
122708122591 .each = .{ .once = &.{
122709122592 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122710122593 .{ ._, .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 {
122715122598 }, .{
122716122599 .required_features = .{ .avx, null, null, null },
122717122600 .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 },
122719122602 .patterns = &.{
122720122603 .{ .src = .{ .to_mem, .none, .none } },
122721122604 },
......@@ -122733,6 +122616,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122733122616 .unused,
122734122617 },
122735122618 .dst_temps = .{ .{ .rc = .sse }, .unused },
122619 .clobbers = .{ .eflags = true },
122736122620 .each = .{ .once = &.{
122737122621 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
122738122622 .{ ._, .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 {
122768122652 .unused,
122769122653 },
122770122654 .dst_temps = .{ .{ .rc = .sse }, .unused },
122655 .clobbers = .{ .eflags = true },
122771122656 .each = .{ .once = &.{
122772122657 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122773122658 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122817,6 +122702,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122817122702 .unused,
122818122703 },
122819122704 .dst_temps = .{ .{ .rc = .sse }, .unused },
122705 .clobbers = .{ .eflags = true },
122820122706 .each = .{ .once = &.{
122821122707 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122822122708 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122858,6 +122744,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122858122744 .unused,
122859122745 },
122860122746 .dst_temps = .{ .{ .rc = .sse }, .unused },
122747 .clobbers = .{ .eflags = true },
122861122748 .each = .{ .once = &.{
122862122749 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
122863122750 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -122871,14 +122758,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122871122758 .{ ._, ._, .sub, .tmp0d, .si(32), ._, ._ },
122872122759 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
122873122760 } },
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 = &.{} },
122882122761 }, .{
122883122762 .required_features = .{ .@"64bit", null, null, null },
122884122763 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
......@@ -122920,26 +122799,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
122920122799 },
122921122800 .Min, .Max => unreachable,
122922122801 .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 }, .{
122943122802 .required_features = .{ .avx, null, null, null },
122944122803 .dst_constraints = .{ .{ .int = .byte }, .any },
122945122804 .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 {
123513123372 .unused,
123514123373 .unused,
123515123374 },
123516 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
123375 .dst_temps = .{ .{ .rc = .sse }, .unused },
123517123376 .each = .{ .once = &.{
123518123377 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
123519123378 .{ ._, .vp_b, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -123548,7 +123407,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123548123407 .unused,
123549123408 .unused,
123550123409 },
123551 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
123410 .dst_temps = .{ .{ .rc = .sse }, .unused },
123552123411 .each = .{ .once = &.{
123553123412 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123554123413 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -123588,6 +123447,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123588123447 .unused,
123589123448 },
123590123449 .dst_temps = .{ .{ .rc = .sse }, .unused },
123450 .clobbers = .{ .eflags = true },
123591123451 .each = .{ .once = &.{
123592123452 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
123593123453 .{ ._, .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 {
123626123486 .unused,
123627123487 },
123628123488 .dst_temps = .{ .{ .rc = .sse }, .unused },
123489 .clobbers = .{ .eflags = true },
123629123490 .each = .{ .once = &.{
123630123491 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
123631123492 .{ ._, .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 {
123662123523 .unused,
123663123524 },
123664123525 .dst_temps = .{ .{ .rc = .sse }, .unused },
123526 .clobbers = .{ .eflags = true },
123665123527 .each = .{ .once = &.{
123666123528 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
123667123529 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -123700,6 +123562,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123700123562 .unused,
123701123563 },
123702123564 .dst_temps = .{ .{ .rc = .sse }, .unused },
123565 .clobbers = .{ .eflags = true },
123703123566 .each = .{ .once = &.{
123704123567 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123705123568 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -123744,6 +123607,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123744123607 .unused,
123745123608 },
123746123609 .dst_temps = .{ .{ .rc = .sse }, .unused },
123610 .clobbers = .{ .eflags = true },
123747123611 .each = .{ .once = &.{
123748123612 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123749123613 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -123784,6 +123648,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123784123648 .unused,
123785123649 },
123786123650 .dst_temps = .{ .{ .rc = .sse }, .unused },
123651 .clobbers = .{ .eflags = true },
123787123652 .each = .{ .once = &.{
123788123653 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123789123654 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -123824,6 +123689,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123824123689 .unused,
123825123690 },
123826123691 .dst_temps = .{ .{ .rc = .sse }, .unused },
123692 .clobbers = .{ .eflags = true },
123827123693 .each = .{ .once = &.{
123828123694 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
123829123695 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -123846,7 +123712,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123846123712 }, .{
123847123713 .required_features = .{ .slow_incdec, null, null, null },
123848123714 .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 },
123850123716 .patterns = &.{
123851123717 .{ .src = .{ .to_mem, .none, .none } },
123852123718 },
......@@ -123874,7 +123740,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123874123740 } },
123875123741 }, .{
123876123742 .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 },
123878123744 .patterns = &.{
123879123745 .{ .src = .{ .to_mem, .none, .none } },
123880123746 },
......@@ -123901,25 +123767,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123901123767 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
123902123768 } },
123903123769 }, .{
123904 .required_features = .{ .sse, null, 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 }, .{
123770 .required_features = .{ .avx, .fast_hops, null, null },
123915123771 .dst_constraints = .{ .{ .int = .word }, .any },
123916 .src_constraints = .{ .{ .vec_len = 1 }, .any, .any },
123772 .src_constraints = .{ .{ .scalar_int = .{ .of = .dword, .is = .word } }, .any, .any },
123917123773 .patterns = &.{
123918 .{ .src = .{ .mut_mem, .none, .none } },
123919 .{ .src = .{ .to_mut_gpr, .none, .none } },
123774 .{ .src = .{ .to_sse, .none, .none } },
123920123775 },
123921 .dst_temps = .{ .{ .ref = .src0 }, .unused },
123922 .each = .{ .once = &.{} },
123776 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
123777 .each = .{ .once = &.{
123778 .{ ._, .vph_w, .add, .dst0x, .src0x, .src0x, ._ },
123779 } },
123923123780 }, .{
123924123781 .required_features = .{ .avx, null, null, null },
123925123782 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -123945,6 +123802,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123945123802 .{ ._, .vp_d, .srl, .tmp0x, .src0x, .ui(16), ._ },
123946123803 .{ ._, .vp_w, .add, .dst0x, .src0x, .tmp0x, ._ },
123947123804 } },
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 } },
123948123816 }, .{
123949123817 .required_features = .{ .sse2, null, null, null },
123950123818 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -123971,6 +123839,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123971123839 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },
123972123840 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
123973123841 } },
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 } },
123974123854 }, .{
123975123855 .required_features = .{ .avx, null, null, null },
123976123856 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -123998,6 +123878,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
123998123878 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
123999123879 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124000123880 } },
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 } },
124001123893 }, .{
124002123894 .required_features = .{ .sse2, null, null, null },
124003123895 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124026,6 +123918,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124026123918 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },
124027123919 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
124028123920 } },
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 } },
124029123947 }, .{
124030123948 .required_features = .{ .avx, null, null, null },
124031123949 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124053,6 +123971,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124053123971 .{ ._, .vp_d, .srl, .dst0x, .src0x, .ui(16), ._ },
124054123972 .{ ._, .vp_w, .add, .dst0x, .tmp0x, .dst0x, ._ },
124055123973 } },
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 } },
124056124000 }, .{
124057124001 .required_features = .{ .sse2, null, null, null },
124058124002 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124080,6 +124024,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124080124024 .{ ._, .p_d, .srl, .dst0x, .ui(16), ._, ._ },
124081124025 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
124082124026 } },
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 } },
124083124040 }, .{
124084124041 .required_features = .{ .avx, null, null, null },
124085124042 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124109,6 +124066,19 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124109124066 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
124110124067 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124111124068 } },
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 } },
124112124082 }, .{
124113124083 .required_features = .{ .sse2, null, null, null },
124114124084 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124139,6 +124109,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124139124109 .{ ._, .p_d, .srl, .tmp0x, .ui(16), ._, ._ },
124140124110 .{ ._, .p_w, .add, .dst0x, .tmp0x, ._, ._ },
124141124111 } },
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 } },
124142124140 }, .{
124143124141 .required_features = .{ .avx, null, null, null },
124144124142 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124170,6 +124168,34 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124170124168 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124171124169 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124172124170 } },
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 } },
124173124199 }, .{
124174124200 .required_features = .{ .sse2, null, null, null },
124175124201 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124202,6 +124228,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124202124228 .{ ._, .p_d, .srl, .tmp2x, .ui(16), ._, ._ },
124203124229 .{ ._, .p_w, .add, .dst0x, .tmp2x, ._, ._ },
124204124230 } },
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 } },
124205124246 }, .{
124206124247 .required_features = .{ .avx2, null, null, null },
124207124248 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124233,6 +124274,21 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124233124274 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
124234124275 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124235124276 } },
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 } },
124236124292 }, .{
124237124293 .required_features = .{ .avx, null, null, null },
124238124294 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124264,6 +124320,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124264124320 .{ ._, .vp_d, .srl, .tmp0x, .dst0x, .ui(16), ._ },
124265124321 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp0x, ._ },
124266124322 } },
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 } },
124267124353 }, .{
124268124354 .required_features = .{ .avx2, null, null, null },
124269124355 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124297,6 +124383,36 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124297124383 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124298124384 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124299124385 } },
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 } },
124300124416 }, .{
124301124417 .required_features = .{ .avx, null, null, null },
124302124418 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124350,7 +124466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124350124466 .unused,
124351124467 .unused,
124352124468 },
124353 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124469 .dst_temps = .{ .{ .rc = .sse }, .unused },
124354124470 .each = .{ .once = &.{
124355124471 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
124356124472 .{ ._, .vp_w, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -124383,7 +124499,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124383124499 .unused,
124384124500 .unused,
124385124501 },
124386 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
124502 .dst_temps = .{ .{ .rc = .sse }, .unused },
124387124503 .each = .{ .once = &.{
124388124504 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124389124505 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -124400,6 +124516,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124400124516 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124401124517 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124402124518 } },
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 } },
124403124553 }, .{
124404124554 .required_features = .{ .avx2, null, null, null },
124405124555 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124421,6 +124571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124421124571 .unused,
124422124572 },
124423124573 .dst_temps = .{ .{ .rc = .sse }, .unused },
124574 .clobbers = .{ .eflags = true },
124424124575 .each = .{ .once = &.{
124425124576 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
124426124577 .{ ._, .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 {
124436124587 .{ ._, .vp_d, .srl, .tmp1x, .dst0x, .ui(16), ._ },
124437124588 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },
124438124589 } },
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 } },
124439124622 }, .{
124440124623 .required_features = .{ .avx, null, null, null },
124441124624 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124457,6 +124640,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124457124640 .unused,
124458124641 },
124459124642 .dst_temps = .{ .{ .rc = .sse }, .unused },
124643 .clobbers = .{ .eflags = true },
124460124644 .each = .{ .once = &.{
124461124645 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
124462124646 .{ ._, .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 {
124470124654 .{ ._, .vp_d, .srl, .tmp1x, .dst0x, .ui(16), ._ },
124471124655 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp1x, ._ },
124472124656 } },
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 } },
124473124689 }, .{
124474124690 .required_features = .{ .sse2, null, null, null },
124475124691 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124491,6 +124707,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124491124707 .unused,
124492124708 },
124493124709 .dst_temps = .{ .{ .rc = .sse }, .unused },
124710 .clobbers = .{ .eflags = true },
124494124711 .each = .{ .once = &.{
124495124712 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
124496124713 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -124526,6 +124743,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124526124743 .unused,
124527124744 },
124528124745 .dst_temps = .{ .{ .rc = .sse }, .unused },
124746 .clobbers = .{ .eflags = true },
124529124747 .each = .{ .once = &.{
124530124748 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124531124749 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -124547,6 +124765,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124547124765 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124548124766 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124549124767 } },
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 } },
124550124804 }, .{
124551124805 .required_features = .{ .avx2, null, null, null },
124552124806 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124568,6 +124822,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124568124822 .unused,
124569124823 },
124570124824 .dst_temps = .{ .{ .rc = .sse }, .unused },
124825 .clobbers = .{ .eflags = true },
124571124826 .each = .{ .once = &.{
124572124827 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124573124828 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -124585,6 +124840,42 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124585124840 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124586124841 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124587124842 } },
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 } },
124588124879 }, .{
124589124880 .required_features = .{ .avx, null, null, null },
124590124881 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124606,6 +124897,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124606124897 .unused,
124607124898 },
124608124899 .dst_temps = .{ .{ .rc = .sse }, .unused },
124900 .clobbers = .{ .eflags = true },
124609124901 .each = .{ .once = &.{
124610124902 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124611124903 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -124623,6 +124915,40 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124623124915 .{ ._, .vp_d, .srl, .tmp2x, .dst0x, .ui(16), ._ },
124624124916 .{ ._, .vp_w, .add, .dst0x, .dst0x, .tmp2x, ._ },
124625124917 } },
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 } },
124626124952 }, .{
124627124953 .required_features = .{ .sse2, null, null, null },
124628124954 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -124644,6 +124970,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124644124970 .unused,
124645124971 },
124646124972 .dst_temps = .{ .{ .rc = .sse }, .unused },
124973 .clobbers = .{ .eflags = true },
124647124974 .each = .{ .once = &.{
124648124975 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
124649124976 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -124662,7 +124989,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124662124989 } },
124663124990 }, .{
124664124991 .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 },
124666124993 .patterns = &.{
124667124994 .{ .src = .{ .to_mem, .none, .none } },
124668124995 },
......@@ -124689,25 +125016,16 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124689125016 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
124690125017 } },
124691125018 }, .{
124692 .required_features = .{ .sse, null, null, null },
125019 .required_features = .{ .avx, .fast_hops, null, null },
124693125020 .dst_constraints = .{ .{ .int = .dword }, .any },
124694 .src_constraints = .{ .{ .vec_len = 1 }, .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 },
125021 .src_constraints = .{ .{ .scalar_int = .{ .of = .qword, .is = .dword } }, .any, .any },
124705125022 .patterns = &.{
124706 .{ .src = .{ .mut_mem, .none, .none } },
124707 .{ .src = .{ .to_mut_gpr, .none, .none } },
125023 .{ .src = .{ .to_sse, .none, .none } },
124708125024 },
124709 .dst_temps = .{ .{ .ref = .src0 }, .unused },
124710 .each = .{ .once = &.{} },
125025 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125026 .each = .{ .once = &.{
125027 .{ ._, .vph_d, .add, .dst0x, .src0x, .src0x, ._ },
125028 } },
124711125029 }, .{
124712125030 .required_features = .{ .avx, null, null, null },
124713125031 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124733,6 +125051,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124733125051 .{ ._, .vp_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },
124734125052 .{ ._, .vp_d, .add, .dst0x, .src0x, .tmp0x, ._ },
124735125053 } },
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 } },
124736125065 }, .{
124737125066 .required_features = .{ .sse2, null, null, null },
124738125067 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124758,6 +125087,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124758125087 .{ ._, .p_d, .shuf, .tmp0x, .src0x, .ui(0b01_01_01_01), ._ },
124759125088 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
124760125089 } },
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 } },
124761125102 }, .{
124762125103 .required_features = .{ .avx, null, null, null },
124763125104 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124785,6 +125126,18 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124785125126 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124786125127 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },
124787125128 } },
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 } },
124788125141 }, .{
124789125142 .required_features = .{ .sse2, null, null, null },
124790125143 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124812,6 +125165,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124812125165 .{ ._, .p_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124813125166 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
124814125167 } },
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 } },
124815125194 }, .{
124816125195 .required_features = .{ .avx, null, null, null },
124817125196 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124839,6 +125218,32 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124839125218 .{ ._, .vp_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
124840125219 .{ ._, .vp_d, .add, .dst0x, .tmp0x, .dst0x, ._ },
124841125220 } },
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 } },
124842125247 }, .{
124843125248 .required_features = .{ .sse2, null, null, null },
124844125249 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124866,6 +125271,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124866125271 .{ ._, .p_d, .shuf, .dst0x, .src0x, .ui(0b01_01_01_01), ._ },
124867125272 .{ ._, .p_d, .add, .dst0x, .tmp0x, ._, ._ },
124868125273 } },
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 } },
124869125288 }, .{
124870125289 .required_features = .{ .avx2, null, null, null },
124871125290 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124895,6 +125314,20 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124895125314 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124896125315 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },
124897125316 } },
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 } },
124898125331 }, .{
124899125332 .required_features = .{ .avx, null, null, null },
124900125333 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124924,6 +125357,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124924125357 .{ ._, .vp_d, .shuf, .tmp0x, .dst0x, .ui(0b01_01_01_01), ._ },
124925125358 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp0x, ._ },
124926125359 } },
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 } },
124927125389 }, .{
124928125390 .required_features = .{ .avx2, null, null, null },
124929125391 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -124955,6 +125417,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
124955125417 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
124956125418 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
124957125419 } },
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 } },
124958125449 }, .{
124959125450 .required_features = .{ .avx, null, null, null },
124960125451 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125006,7 +125497,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125006125497 .unused,
125007125498 .unused,
125008125499 },
125009 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125500 .dst_temps = .{ .{ .rc = .sse }, .unused },
125501 .clobbers = .{ .eflags = true },
125010125502 .each = .{ .once = &.{
125011125503 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
125012125504 .{ ._, .vp_d, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -125037,7 +125529,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125037125529 .unused,
125038125530 .unused,
125039125531 },
125040 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
125532 .dst_temps = .{ .{ .rc = .sse }, .unused },
125533 .clobbers = .{ .eflags = true },
125041125534 .each = .{ .once = &.{
125042125535 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125043125536 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -125052,6 +125545,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125052125545 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125053125546 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125054125547 } },
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 } },
125055125581 }, .{
125056125582 .required_features = .{ .avx2, null, null, null },
125057125583 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125073,6 +125599,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125073125599 .unused,
125074125600 },
125075125601 .dst_temps = .{ .{ .rc = .sse }, .unused },
125602 .clobbers = .{ .eflags = true },
125076125603 .each = .{ .once = &.{
125077125604 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
125078125605 .{ ._, .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 {
125086125613 .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b01_01_01_01), ._ },
125087125614 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },
125088125615 } },
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 } },
125089125647 }, .{
125090125648 .required_features = .{ .avx, null, null, null },
125091125649 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125107,6 +125665,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125107125665 .unused,
125108125666 },
125109125667 .dst_temps = .{ .{ .rc = .sse }, .unused },
125668 .clobbers = .{ .eflags = true },
125110125669 .each = .{ .once = &.{
125111125670 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125112125671 .{ ._, .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 {
125118125677 .{ ._, .vp_d, .shuf, .tmp1x, .dst0x, .ui(0b01_01_01_01), ._ },
125119125678 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp1x, ._ },
125120125679 } },
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 } },
125121125711 }, .{
125122125712 .required_features = .{ .sse2, null, null, null },
125123125713 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125139,6 +125729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125139125729 .unused,
125140125730 },
125141125731 .dst_temps = .{ .{ .rc = .sse }, .unused },
125732 .clobbers = .{ .eflags = true },
125142125733 .each = .{ .once = &.{
125143125734 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125144125735 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -125171,6 +125762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125171125762 .unused,
125172125763 },
125173125764 .dst_temps = .{ .{ .rc = .sse }, .unused },
125765 .clobbers = .{ .eflags = true },
125174125766 .each = .{ .once = &.{
125175125767 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125176125768 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -125190,6 +125782,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125190125782 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125191125783 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125192125784 } },
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 } },
125193125820 }, .{
125194125821 .required_features = .{ .avx2, null, null, null },
125195125822 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125211,6 +125838,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125211125838 .unused,
125212125839 },
125213125840 .dst_temps = .{ .{ .rc = .sse }, .unused },
125841 .clobbers = .{ .eflags = true },
125214125842 .each = .{ .once = &.{
125215125843 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125216125844 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -125226,6 +125854,41 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125226125854 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125227125855 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125228125856 } },
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 } },
125229125892 }, .{
125230125893 .required_features = .{ .avx, null, null, null },
125231125894 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125262,6 +125925,39 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125262125925 .{ ._, .vp_d, .shuf, .tmp2x, .dst0x, .ui(0b01_01_01_01), ._ },
125263125926 .{ ._, .vp_d, .add, .dst0x, .dst0x, .tmp2x, ._ },
125264125927 } },
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 } },
125265125961 }, .{
125266125962 .required_features = .{ .sse2, null, null, null },
125267125963 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -125283,6 +125979,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125283125979 .unused,
125284125980 },
125285125981 .dst_temps = .{ .{ .rc = .sse }, .unused },
125982 .clobbers = .{ .eflags = true },
125286125983 .each = .{ .once = &.{
125287125984 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125288125985 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -125298,7 +125995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125298125995 } },
125299125996 }, .{
125300125997 .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 },
125302125999 .patterns = &.{
125303126000 .{ .src = .{ .to_mem, .none, .none } },
125304126001 },
......@@ -125324,27 +126021,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125324126021 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
125325126022 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125326126023 } },
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 = &.{} },
125348126024 }, .{
125349126025 .required_features = .{ .avx, null, null, null },
125350126026 .dst_constraints = .{ .{ .int = .qword }, .any },
......@@ -125523,7 +126199,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125523126199 .unused,
125524126200 .unused,
125525126201 },
125526 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
126202 .dst_temps = .{ .{ .rc = .sse }, .unused },
125527126203 .each = .{ .once = &.{
125528126204 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
125529126205 .{ ._, .vp_q, .add, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -125552,7 +126228,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125552126228 .unused,
125553126229 .unused,
125554126230 },
125555 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
126231 .dst_temps = .{ .{ .rc = .sse }, .unused },
125556126232 .each = .{ .once = &.{
125557126233 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125558126234 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
......@@ -125586,6 +126262,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125586126262 .unused,
125587126263 },
125588126264 .dst_temps = .{ .{ .rc = .sse }, .unused },
126265 .clobbers = .{ .eflags = true },
125589126266 .each = .{ .once = &.{
125590126267 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
125591126268 .{ ._, .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 {
125618126295 .unused,
125619126296 },
125620126297 .dst_temps = .{ .{ .rc = .sse }, .unused },
126298 .clobbers = .{ .eflags = true },
125621126299 .each = .{ .once = &.{
125622126300 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125623126301 .{ ._, .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 {
125648126326 .unused,
125649126327 },
125650126328 .dst_temps = .{ .{ .rc = .sse }, .unused },
126329 .clobbers = .{ .eflags = true },
125651126330 .each = .{ .once = &.{
125652126331 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
125653126332 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -125678,6 +126357,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125678126357 .unused,
125679126358 },
125680126359 .dst_temps = .{ .{ .rc = .sse }, .unused },
126360 .clobbers = .{ .eflags = true },
125681126361 .each = .{ .once = &.{
125682126362 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125683126363 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -125716,6 +126396,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125716126396 .unused,
125717126397 },
125718126398 .dst_temps = .{ .{ .rc = .sse }, .unused },
126399 .clobbers = .{ .eflags = true },
125719126400 .each = .{ .once = &.{
125720126401 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125721126402 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -125750,6 +126431,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125750126431 .unused,
125751126432 },
125752126433 .dst_temps = .{ .{ .rc = .sse }, .unused },
126434 .clobbers = .{ .eflags = true },
125753126435 .each = .{ .once = &.{
125754126436 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125755126437 .{ ._, .v_ps, .mova, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -125784,6 +126466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125784126466 .unused,
125785126467 },
125786126468 .dst_temps = .{ .{ .rc = .sse }, .unused },
126469 .clobbers = .{ .eflags = true },
125787126470 .each = .{ .once = &.{
125788126471 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
125789126472 .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
......@@ -125798,7 +126481,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125798126481 }, .{
125799126482 .required_features = .{ .@"64bit", null, null, null },
125800126483 .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 },
125802126485 .patterns = &.{
125803126486 .{ .src = .{ .to_mem, .none, .none } },
125804126487 },
......@@ -125824,52 +126507,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125824126507 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
125825126508 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
125826126509 } },
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 = &.{} },
125873126510 }, .{
125874126511 .required_features = .{ .@"64bit", null, null, null },
125875126512 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
......@@ -125910,26 +126547,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
125910126547 } },
125911126548 } },
125912126549 .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 }, .{
125933126550 .required_features = .{ .avx, null, null, null },
125934126551 .dst_constraints = .{ .{ .int = .byte }, .any },
125935126552 .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 {
126528127145 .unused,
126529127146 .unused,
126530127147 },
126531 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
127148 .dst_temps = .{ .{ .rc = .sse }, .unused },
126532127149 .each = .{ .once = &.{
126533127150 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
126534127151 .{ ._, .v_dqa, .mov, .tmp0y, .memd(.src0y, 32), ._, ._ },
......@@ -126566,7 +127183,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126566127183 .unused,
126567127184 .unused,
126568127185 },
126569 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
127186 .dst_temps = .{ .{ .rc = .sse }, .unused },
126570127187 .each = .{ .once = &.{
126571127188 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126572127189 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -126610,6 +127227,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126610127227 .unused,
126611127228 },
126612127229 .dst_temps = .{ .{ .rc = .sse }, .unused },
127230 .clobbers = .{ .eflags = true },
126613127231 .each = .{ .once = &.{
126614127232 .{ ._, ._, .mov, .tmp0d, .sia(-48, .src0, .add_unaligned_size), ._, ._ },
126615127233 .{ ._, .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 {
126649127267 .unused,
126650127268 },
126651127269 .dst_temps = .{ .{ .rc = .sse }, .unused },
127270 .clobbers = .{ .eflags = true },
126652127271 .each = .{ .once = &.{
126653127272 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },
126654127273 .{ ._, .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 {
126686127305 .unused,
126687127306 },
126688127307 .dst_temps = .{ .{ .rc = .sse }, .unused },
127308 .clobbers = .{ .eflags = true },
126689127309 .each = .{ .once = &.{
126690127310 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },
126691127311 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -126725,6 +127345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126725127345 .unused,
126726127346 },
126727127347 .dst_temps = .{ .{ .rc = .sse }, .unused },
127348 .clobbers = .{ .eflags = true },
126728127349 .each = .{ .once = &.{
126729127350 .{ ._, ._, .mov, .tmp0d, .sia(-24, .src0, .add_unaligned_size), ._, ._ },
126730127351 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -126765,6 +127386,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126765127386 .unused,
126766127387 },
126767127388 .dst_temps = .{ .{ .rc = .sse }, .unused },
127389 .clobbers = .{ .eflags = true },
126768127390 .each = .{ .once = &.{
126769127391 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126770127392 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -126815,6 +127437,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126815127437 .unused,
126816127438 },
126817127439 .dst_temps = .{ .{ .rc = .sse }, .unused },
127440 .clobbers = .{ .eflags = true },
126818127441 .each = .{ .once = &.{
126819127442 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126820127443 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
......@@ -126857,6 +127480,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126857127480 .unused,
126858127481 },
126859127482 .dst_temps = .{ .{ .rc = .sse }, .unused },
127483 .clobbers = .{ .eflags = true },
126860127484 .each = .{ .once = &.{
126861127485 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126862127486 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
......@@ -126903,6 +127527,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126903127527 .unused,
126904127528 },
126905127529 .dst_temps = .{ .{ .rc = .sse }, .unused },
127530 .clobbers = .{ .eflags = true },
126906127531 .each = .{ .once = &.{
126907127532 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126908127533 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
......@@ -126946,6 +127571,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126946127571 .unused,
126947127572 },
126948127573 .dst_temps = .{ .{ .rc = .sse }, .unused },
127574 .clobbers = .{ .eflags = true },
126949127575 .each = .{ .once = &.{
126950127576 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
126951127577 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
......@@ -126972,7 +127598,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
126972127598 }, .{
126973127599 .required_features = .{ .slow_incdec, null, null, null },
126974127600 .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 },
126976127602 .patterns = &.{
126977127603 .{ .src = .{ .to_mem, .none, .none } },
126978127604 },
......@@ -127000,7 +127626,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127000127626 } },
127001127627 }, .{
127002127628 .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 },
127004127630 .patterns = &.{
127005127631 .{ .src = .{ .to_mem, .none, .none } },
127006127632 },
......@@ -127026,26 +127652,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127026127652 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
127027127653 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
127028127654 } },
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 = &.{} },
127049127655 }, .{
127050127656 .required_features = .{ .avx, null, null, null },
127051127657 .dst_constraints = .{ .{ .int = .word }, .any },
......@@ -127489,7 +128095,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127489128095 .unused,
127490128096 .unused,
127491128097 },
127492 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
128098 .dst_temps = .{ .{ .rc = .sse }, .unused },
127493128099 .each = .{ .once = &.{
127494128100 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
127495128101 .{ ._, .vp_w, .mull, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -127522,7 +128128,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127522128128 .unused,
127523128129 .unused,
127524128130 },
127525 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
128131 .dst_temps = .{ .{ .rc = .sse }, .unused },
127526128132 .each = .{ .once = &.{
127527128133 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127528128134 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -127562,6 +128168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127562128168 .unused,
127563128169 },
127564128170 .dst_temps = .{ .{ .rc = .sse }, .unused },
128171 .clobbers = .{ .eflags = true },
127565128172 .each = .{ .once = &.{
127566128173 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
127567128174 .{ ._, .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 {
127598128205 .unused,
127599128206 },
127600128207 .dst_temps = .{ .{ .rc = .sse }, .unused },
128208 .clobbers = .{ .eflags = true },
127601128209 .each = .{ .once = &.{
127602128210 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
127603128211 .{ ._, .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 {
127632128240 .unused,
127633128241 },
127634128242 .dst_temps = .{ .{ .rc = .sse }, .unused },
128243 .clobbers = .{ .eflags = true },
127635128244 .each = .{ .once = &.{
127636128245 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
127637128246 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -127667,6 +128276,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127667128276 .unused,
127668128277 },
127669128278 .dst_temps = .{ .{ .rc = .sse }, .unused },
128279 .clobbers = .{ .eflags = true },
127670128280 .each = .{ .once = &.{
127671128281 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127672128282 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -127711,6 +128321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127711128321 .unused,
127712128322 },
127713128323 .dst_temps = .{ .{ .rc = .sse }, .unused },
128324 .clobbers = .{ .eflags = true },
127714128325 .each = .{ .once = &.{
127715128326 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127716128327 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
......@@ -127750,6 +128361,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127750128361 .unused,
127751128362 },
127752128363 .dst_temps = .{ .{ .rc = .sse }, .unused },
128364 .clobbers = .{ .eflags = true },
127753128365 .each = .{ .once = &.{
127754128366 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127755128367 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
......@@ -127791,6 +128403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127791128403 .unused,
127792128404 },
127793128405 .dst_temps = .{ .{ .rc = .sse }, .unused },
128406 .clobbers = .{ .eflags = true },
127794128407 .each = .{ .once = &.{
127795128408 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
127796128409 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
......@@ -127811,7 +128424,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127811128424 } },
127812128425 }, .{
127813128426 .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 },
127815128428 .patterns = &.{
127816128429 .{ .src = .{ .to_mem, .none, .none } },
127817128430 },
......@@ -127837,26 +128450,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
127837128450 .{ ._, ._, .sub, .tmp0d, .si(2), ._, ._ },
127838128451 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
127839128452 } },
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 = &.{} },
127860128453 }, .{
127861128454 .required_features = .{ .avx, null, null, null },
127862128455 .dst_constraints = .{ .{ .int = .dword }, .any },
......@@ -128163,7 +128756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128163128756 .unused,
128164128757 .unused,
128165128758 },
128166 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
128759 .dst_temps = .{ .{ .rc = .sse }, .unused },
128167128760 .each = .{ .once = &.{
128168128761 .{ ._, .v_dqa, .mov, .dst0y, .mem(.src0y), ._, ._ },
128169128762 .{ ._, .vp_d, .mull, .dst0y, .dst0y, .memd(.src0y, 32), ._ },
......@@ -128194,7 +128787,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128194128787 .unused,
128195128788 .unused,
128196128789 },
128197 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
128790 .dst_temps = .{ .{ .rc = .sse }, .unused },
128198128791 .each = .{ .once = &.{
128199128792 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128200128793 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -128232,6 +128825,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128232128825 .unused,
128233128826 },
128234128827 .dst_temps = .{ .{ .rc = .sse }, .unused },
128828 .clobbers = .{ .eflags = true },
128235128829 .each = .{ .once = &.{
128236128830 .{ ._, ._, .mov, .tmp0d, .sia(-64, .src0, .add_unaligned_size), ._, ._ },
128237128831 .{ ._, .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 {
128266128860 .unused,
128267128861 },
128268128862 .dst_temps = .{ .{ .rc = .sse }, .unused },
128863 .clobbers = .{ .eflags = true },
128269128864 .each = .{ .once = &.{
128270128865 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
128271128866 .{ ._, .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 {
128298128893 .unused,
128299128894 },
128300128895 .dst_temps = .{ .{ .rc = .sse }, .unused },
128896 .clobbers = .{ .eflags = true },
128301128897 .each = .{ .once = &.{
128302128898 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
128303128899 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -128330,6 +128926,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128330128926 .unused,
128331128927 },
128332128928 .dst_temps = .{ .{ .rc = .sse }, .unused },
128929 .clobbers = .{ .eflags = true },
128333128930 .each = .{ .once = &.{
128334128931 .{ ._, ._, .mov, .tmp0d, .sia(-32, .src0, .add_unaligned_size), ._, ._ },
128335128932 .{ ._, ._dqa, .mov, .dst0x, .memad(.src0x, .add_unaligned_size, -16), ._, ._ },
......@@ -128365,6 +128962,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128365128962 .unused,
128366128963 },
128367128964 .dst_temps = .{ .{ .rc = .sse }, .unused },
128965 .clobbers = .{ .eflags = true },
128368128966 .each = .{ .once = &.{
128369128967 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128370128968 .{ ._, .v_dqa, .mov, .dst0y, .lea(.tmp0y), ._, ._ },
......@@ -128407,6 +129005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128407129005 .unused,
128408129006 },
128409129007 .dst_temps = .{ .{ .rc = .sse }, .unused },
129008 .clobbers = .{ .eflags = true },
128410129009 .each = .{ .once = &.{
128411129010 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128412129011 .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
......@@ -128444,6 +129043,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128444129043 .unused,
128445129044 },
128446129045 .dst_temps = .{ .{ .rc = .sse }, .unused },
129046 .clobbers = .{ .eflags = true },
128447129047 .each = .{ .once = &.{
128448129048 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128449129049 .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
......@@ -128483,6 +129083,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128483129083 .unused,
128484129084 },
128485129085 .dst_temps = .{ .{ .rc = .sse }, .unused },
129086 .clobbers = .{ .eflags = true },
128486129087 .each = .{ .once = &.{
128487129088 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128488129089 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
......@@ -128519,6 +129120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128519129120 .unused,
128520129121 },
128521129122 .dst_temps = .{ .{ .rc = .sse }, .unused },
129123 .clobbers = .{ .eflags = true },
128522129124 .each = .{ .once = &.{
128523129125 .{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
128524129126 .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
......@@ -128539,7 +129141,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128539129141 } },
128540129142 }, .{
128541129143 .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 },
128543129145 .patterns = &.{
128544129146 .{ .src = .{ .to_mem, .none, .none } },
128545129147 },
......@@ -128565,31 +129167,10 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128565129167 .{ ._, ._, .sub, .tmp0d, .si(4), ._, ._ },
128566129168 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
128567129169 } },
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 = &.{} },
128589129170 }, .{
128590129171 .required_features = .{ .@"64bit", null, null, null },
128591129172 .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 },
128593129174 .patterns = &.{
128594129175 .{ .src = .{ .to_mem, .none, .none } },
128595129176 },
......@@ -128615,52 +129196,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128615129196 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
128616129197 .{ ._, ._nb, .j, .@"0b", ._, ._, ._ },
128617129198 } },
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 = &.{} },
128664129199 }, .{
128665129200 .required_features = .{ .@"64bit", .bmi2, .adx, null },
128666129201 .dst_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
......@@ -128937,6 +129472,2289 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
128937129472 }
128938129473 try res[0].finish(inst, &.{reduce.operand}, &ops, cg);
128939129474 },
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 },
128940131758 .splat => |air_tag| if (use_old) try cg.airSplat(inst) else fallback: {
128941131759 const ty_op = air_datas[@intFromEnum(inst)].ty_op;
128942131760 if (cg.typeOf(ty_op.operand).toIntern() == .bool_type) break :fallback try cg.airSplat(inst);
......@@ -137624,7 +140442,7 @@ fn genByteSwap(
137624140442 return src_mcv;
137625140443 },
137626140444 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);
137628140446 return src_mcv;
137629140447 },
137630140448 9...16 => {
......@@ -137635,7 +140453,7 @@ fn genByteSwap(
137635140453 break :mat_src_mcv .{ .load_frame = .{ .index = frame_index } };
137636140454 },
137637140455 .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());
137639140457 return .{ .register_pair = .{ src_regs[1], src_regs[0] } };
137640140458 } else src_mcv,
137641140459 else => src_mcv,
......@@ -137649,18 +140467,18 @@ fn genByteSwap(
137649140467 for (dst_regs, 0..) |dst_reg, limb_index| {
137650140468 if (mat_src_mcv.isBase()) {
137651140469 try self.asmRegisterMemory(
137652 .{ ._, if (has_movbe) .movbe else .mov },
140470 .{ if (has_movbe) ._be else ._, .mov },
137653140471 dst_reg.to64(),
137654140472 try mat_src_mcv.address().offset(@intCast(limb_index * 8)).deref().mem(self, .{ .size = .qword }),
137655140473 );
137656 if (!has_movbe) try self.asmRegister(.{ ._, .bswap }, dst_reg.to64());
140474 if (!has_movbe) try self.asmRegister(.{ .b_, .swap }, dst_reg.to64());
137657140475 } else {
137658140476 try self.asmRegisterRegister(
137659140477 .{ ._, .mov },
137660140478 dst_reg.to64(),
137661140479 mat_src_mcv.register_pair[limb_index].to64(),
137662140480 );
137663 try self.asmRegister(.{ ._, .bswap }, dst_reg.to64());
140481 try self.asmRegister(.{ .b_, .swap }, dst_reg.to64());
137664140482 }
137665140483 }
137666140484 return .{ .register_pair = .{ dst_regs[1], dst_regs[0] } };
......@@ -137679,7 +140497,7 @@ fn genByteSwap(
137679140497
137680140498 const loop: Mir.Inst.Index = @intCast(self.mir_instructions.len);
137681140499 try self.asmRegisterMemory(
137682 .{ ._, if (has_movbe) .movbe else .mov },
140500 .{ if (has_movbe) ._be else ._, .mov },
137683140501 temp_regs[2].to64(),
137684140502 .{
137685140503 .base = .{ .frame = dst_mcv.load_frame.index },
......@@ -137692,7 +140510,7 @@ fn genByteSwap(
137692140510 },
137693140511 );
137694140512 try self.asmRegisterMemory(
137695 .{ ._, if (has_movbe) .movbe else .mov },
140513 .{ if (has_movbe) ._be else ._, .mov },
137696140514 temp_regs[3].to64(),
137697140515 .{
137698140516 .base = .{ .frame = dst_mcv.load_frame.index },
......@@ -137705,8 +140523,8 @@ fn genByteSwap(
137705140523 },
137706140524 );
137707140525 if (!has_movbe) {
137708 try self.asmRegister(.{ ._, .bswap }, temp_regs[2].to64());
137709 try self.asmRegister(.{ ._, .bswap }, temp_regs[3].to64());
140526 try self.asmRegister(.{ .b_, .swap }, temp_regs[2].to64());
140527 try self.asmRegister(.{ .b_, .swap }, temp_regs[3].to64());
137710140528 }
137711140529 try self.asmMemoryRegister(.{ ._, .mov }, .{
137712140530 .base = .{ .frame = dst_mcv.load_frame.index },
......@@ -137751,9 +140569,9 @@ fn genByteSwap(
137751140569 switch (abi_size) {
137752140570 else => unreachable,
137753140571 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),
137755140573 }
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);
137757140575 return dst_mcv;
137758140576}
137759140577
......@@ -145626,16 +148444,16 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
145626148444 .{ ._, .pseudo }
145627148445 else for (std.enums.values(Mir.Inst.Fixes)) |fixes| {
145628148446 const fixes_name = @tagName(fixes);
145629 const space_i = std.mem.indexOfScalar(u8, fixes_name, ' ');
145630 const fixes_prefix = if (space_i) |i|
145631 std.meta.stringToEnum(encoder.Instruction.Prefix, fixes_name[0..i]).?
148447 const space_index = std.mem.indexOfScalar(u8, fixes_name, ' ');
148448 const fixes_prefix = if (space_index) |index|
148449 std.meta.stringToEnum(encoder.Instruction.Prefix, fixes_name[0..index]).?
145632148450 else
145633148451 .none;
145634148452 if (fixes_prefix != prefix) continue;
145635 const pattern = fixes_name[if (space_i) |i| i + " ".len else 0..];
145636 const wildcard_i = std.mem.indexOfScalar(u8, pattern, '_').?;
145637 const mnem_prefix = pattern[0..wildcard_i];
145638 const mnem_suffix = pattern[wildcard_i + "_".len ..];
148453 const pattern = fixes_name[if (space_index) |index| index + " ".len else 0..];
148454 const wildcard_index = std.mem.indexOfScalar(u8, pattern, '_').?;
148455 const mnem_prefix = pattern[0..wildcard_index];
148456 const mnem_suffix = pattern[wildcard_index + "_".len ..];
145639148457 if (!std.mem.startsWith(u8, mnem_name, mnem_prefix)) continue;
145640148458 if (!std.mem.endsWith(u8, mnem_name, mnem_suffix)) continue;
145641148459 break .{ fixes, std.meta.stringToEnum(
......@@ -157348,7 +160166,6 @@ const Select = struct {
157348160166 bool,
157349160167 bool_vec: Memory.Size,
157350160168 exact_bool_vec: u16,
157351 vec_len: u32,
157352160169 ptr_any_bool_vec,
157353160170 ptr_bool_vec: Memory.Size,
157354160171 remainder_bool_vec: OfIsSizes,
......@@ -157390,8 +160207,11 @@ const Select = struct {
157390160207 float: Memory.Size,
157391160208 scalar_any_float: Memory.Size,
157392160209 scalar_float: OfIsSizes,
160210 exclusive_scalar_float: OfIsSizes,
160211 exact_scalar_float: OfIsSizes,
157393160212 multiple_scalar_any_float: Memory.Size,
157394160213 multiple_scalar_float: OfIsSizes,
160214 unaligned_multiple_scalar_float: OfIsSizes,
157395160215 exact_int: u16,
157396160216 exact_signed_int: u16,
157397160217 exact_unsigned_int: u16,
......@@ -157435,7 +160255,6 @@ const Select = struct {
157435160255 size.bitSize(cg.target) >= ty.vectorLen(zcu),
157436160256 .exact_bool_vec => |size| ty.isVector(zcu) and ty.scalarType(zcu).toIntern() == .bool_type and
157437160257 size == ty.vectorLen(zcu),
157438 .vec_len => |len| ty.isVector(zcu) and ty.vectorLen(zcu) == len,
157439160258 .ptr_any_bool_vec => switch (zcu.intern_pool.indexToKey(ty.childType(zcu).toIntern())) {
157440160259 .vector_type => |vector_type| vector_type.child == .bool_type,
157441160260 else => false,
......@@ -157559,10 +160378,16 @@ const Select = struct {
157559160378 cg.floatBits(ty.scalarType(zcu)) != null,
157560160379 .scalar_float => |of_is| @divExact(of_is.of.bitSize(cg.target), 8) >= cg.unalignedSize(ty) and
157561160380 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,
157562160385 .multiple_scalar_any_float => |size| ty.abiSize(zcu) % @divExact(size.bitSize(cg.target), 8) == 0 and
157563160386 cg.floatBits(ty.scalarType(zcu)) != null,
157564160387 .multiple_scalar_float => |of_is| ty.abiSize(zcu) % @divExact(of_is.of.bitSize(cg.target), 8) == 0 and
157565160388 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,
157566160391 .exact_int => |bit_size| if (cg.intInfo(ty)) |int_info| bit_size == int_info.bits else false,
157567160392 .exact_signed_int => |bit_size| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {
157568160393 .signed => bit_size == int_info.bits,
src/arch/x86_64/Encoding.zig+17-16
......@@ -313,7 +313,7 @@ pub const Mnemonic = enum {
313313 @"or", out, outs, outsb, outsd, outsw,
314314 pause, pop, popf, popfd, popfq, push, pushfq,
315315 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,
317317 ret, rol, ror, rsm,
318318 sahf, sal, sar, sbb,
319319 scas, scasb, scasd, scasq, scasw,
......@@ -436,6 +436,7 @@ pub const Mnemonic = enum {
436436 pblendvb, pblendw,
437437 pcmpeqq,
438438 pextrb, pextrd, pextrq,
439 phminposuw,
439440 pinsrb, pinsrd, pinsrq,
440441 pmaxsb, pmaxsd, pmaxud, pmaxuw, pminsb, pminsd, pminud, pminuw,
441442 pmovsxbd, pmovsxbq, pmovsxbw, pmovsxdq, pmovsxwd, pmovsxwq,
......@@ -494,19 +495,19 @@ pub const Mnemonic = enum {
494495 vpblendvb, vpblendw, vpclmulqdq,
495496 vpcmpeqb, vpcmpeqd, vpcmpeqq, vpcmpeqw,
496497 vpcmpgtb, vpcmpgtd, vpcmpgtq, vpcmpgtw,
497 vphaddw, vphaddsw, vphaddd, vphsubw, vphsubsw, vphsubd,
498498 vperm2f128, vpermilpd, vpermilps,
499499 vpextrb, vpextrd, vpextrq, vpextrw,
500 vphaddw, vphaddsw, vphaddd, vphminposuw, vphsubw, vphsubsw, vphsubd,
500501 vpinsrb, vpinsrd, vpinsrq, vpinsrw,
502 vpmaddubsw, vpmaddwd,
501503 vpmaxsb, vpmaxsd, vpmaxsw, vpmaxub, vpmaxud, vpmaxuw,
502504 vpminsb, vpminsd, vpminsw, vpminub, vpminud, vpminuw,
503 vpmaddubsw,
504505 vpmovmskb,
505506 vpmovsxbd, vpmovsxbq, vpmovsxbw, vpmovsxdq, vpmovsxwd, vpmovsxwq,
506507 vpmovzxbd, vpmovzxbq, vpmovzxbw, vpmovzxdq, vpmovzxwd, vpmovzxwq,
507 vpmuldq, vpmulhrsw, vpmulhw, vpmulld, vpmullw, vpmuludq,
508 vpmuldq, vpmulhrsw, vpmulhuw, vpmulhw, vpmulld, vpmullw, vpmuludq,
508509 vpor,
509 vpshufb, vpshufd, vpshufhw, vpshuflw,
510 vpsadbw, vpshufb, vpshufd, vpshufhw, vpshuflw,
510511 vpsignb, vpsignd, vpsignw,
511512 vpslld, vpslldq, vpsllq, vpsllw,
512513 vpsrad, vpsraq, vpsraw,
......@@ -1029,7 +1030,7 @@ fn estimateInstructionLength(prefix: Prefix, encoding: Encoding, ops: []const Op
10291030}
10301031
10311032const mnemonic_to_encodings_map = init: {
1032 @setEvalBranchQuota(5_800);
1033 @setEvalBranchQuota(5_900);
10331034 const ModrmExt = u3;
10341035 const Entry = struct { Mnemonic, OpEn, []const Op, []const u8, ModrmExt, Mode, Feature };
10351036 const encodings: []const Entry = @import("encodings.zon");
......@@ -1038,17 +1039,17 @@ const mnemonic_to_encodings_map = init: {
10381039 var mnemonic_map: [mnemonic_count][]Data = @splat(&.{});
10391040 for (encodings) |entry| mnemonic_map[@intFromEnum(entry[0])].len += 1;
10401041 var data_storage: [encodings.len]Data = undefined;
1041 var storage_i: usize = 0;
1042 var storage_index: usize = 0;
10421043 for (&mnemonic_map) |*value| {
1043 value.ptr = data_storage[storage_i..].ptr;
1044 storage_i += value.len;
1044 value.ptr = data_storage[storage_index..].ptr;
1045 storage_index += value.len;
10451046 }
1046 var mnemonic_i: [mnemonic_count]usize = @splat(0);
1047 var mnemonic_index: [mnemonic_count]usize = @splat(0);
10471048 const ops_len = @typeInfo(@FieldType(Data, "ops")).array.len;
10481049 const opc_len = @typeInfo(@FieldType(Data, "opc")).array.len;
10491050 for (encodings) |entry| {
1050 const i = &mnemonic_i[@intFromEnum(entry[0])];
1051 mnemonic_map[@intFromEnum(entry[0])][i.*] = .{
1051 const index = &mnemonic_index[@intFromEnum(entry[0])];
1052 mnemonic_map[@intFromEnum(entry[0])][index.*] = .{
10521053 .op_en = entry[1],
10531054 .ops = (entry[2] ++ .{.none} ** (ops_len - entry[2].len)).*,
10541055 .opc_len = entry[3].len,
......@@ -1057,14 +1058,14 @@ const mnemonic_to_encodings_map = init: {
10571058 .mode = entry[5],
10581059 .feature = entry[6],
10591060 };
1060 i.* += 1;
1061 index.* += 1;
10611062 }
10621063 const final_storage = data_storage;
10631064 var final_map: [mnemonic_count][]const Data = @splat(&.{});
1064 storage_i = 0;
1065 storage_index = 0;
10651066 for (&final_map, mnemonic_map) |*final_value, value| {
1066 final_value.* = final_storage[storage_i..][0..value.len];
1067 storage_i += value.len;
1067 final_value.* = final_storage[storage_index..][0..value.len];
1068 storage_index += value.len;
10681069 }
10691070 break :init final_map;
10701071};
src/arch/x86_64/Lower.zig+4-4
......@@ -567,7 +567,7 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand)
567567}
568568
569569fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
570 @setEvalBranchQuota(2_600);
570 @setEvalBranchQuota(2_800);
571571 const fixes = switch (inst.ops) {
572572 .none => inst.data.none.fixes,
573573 .inst => inst.data.inst.fixes,
......@@ -601,9 +601,9 @@ fn generic(lower: *Lower, inst: Mir.Inst) Error!void {
601601 var buf: [max_len]u8 = undefined;
602602
603603 const fixes_name = @tagName(fixes);
604 const pattern = fixes_name[if (std.mem.indexOfScalar(u8, fixes_name, ' ')) |i| i + 1 else 0..];
605 const wildcard_i = std.mem.indexOfScalar(u8, pattern, '_').?;
606 const parts = .{ pattern[0..wildcard_i], @tagName(inst.tag), pattern[wildcard_i + 1 ..] };
604 const pattern = fixes_name[if (std.mem.indexOfScalar(u8, fixes_name, ' ')) |i| i + " ".len else 0..];
605 const wildcard_index = std.mem.indexOfScalar(u8, pattern, '_').?;
606 const parts = .{ pattern[0..wildcard_index], @tagName(inst.tag), pattern[wildcard_index + "_".len ..] };
607607 const err_msg = "unsupported mnemonic: ";
608608 const mnemonic = std.fmt.bufPrint(&buf, "{s}{s}{s}", parts) catch
609609 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 {
3434 /// ___ 4
3535 _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,
3747 /// ___ With NTA Hint
3848 _nta,
3949 /// System Call ___
......@@ -44,6 +54,8 @@ pub const Inst = struct {
4454 _t1,
4555 /// ___ With T2 Hint
4656 _t2,
57 /// ___ Write Back
58 _wb,
4759 /// ___ With Intent to Write and T1 Hint
4860 _wt1,
4961
......@@ -53,6 +65,8 @@ pub const Inst = struct {
5365 _csspq,
5466 /// ___ FS Segment Base
5567 _fsbase,
68 /// ___ GS
69 _gs,
5670 /// ___ GS Segment Base
5771 _gsbase,
5872 /// ___ Model Specific Register
......@@ -67,8 +81,14 @@ pub const Inst = struct {
6781 _pmc,
6882 /// ___ Random Number
6983 _rand,
84 /// ___ r Busy Flag in a Supervisor Shadow Stack token
85 _rssbsy,
7086 /// ___ Random Seed
7187 _seed,
88 /// ___ Shadow Stack Doubleword
89 _ssd,
90 /// ___ Shadow Stack Quadword
91 _ssq,
7292 /// ___ Shadow Stack Pointer Doubleword
7393 _sspd,
7494 /// ___ Shadow Stack Pointer Quadword
......@@ -77,9 +97,15 @@ pub const Inst = struct {
7797 _tsc,
7898 /// ___ Time-Stamp Counter And Processor ID
7999 _tscp,
100 /// ___ User Shadow Stack Doubleword
101 _ussd,
102 /// ___ User Shadow Stack Quadword
103 _ussq,
80104 /// VEX-Encoded ___ MXCSR
81105 v_mxcsr,
82106
107 /// Byte ___
108 b_,
83109 /// Interrupt ___
84110 /// Integer ___
85111 i_,
......@@ -118,6 +144,8 @@ pub const Inst = struct {
118144 _ld,
119145 /// ___ Left Without Affecting Flags
120146 _lx,
147 /// ___ Mask
148 _msk,
121149 /// ___ Right
122150 /// ___ For Reading
123151 /// ___ Register
......@@ -139,6 +167,7 @@ pub const Inst = struct {
139167 /// ___ Below
140168 _b,
141169 /// ___ Below Or Equal
170 /// ___ Big Endian
142171 _be,
143172 /// ___ Carry
144173 /// ___ Carry Flag
......@@ -212,8 +241,12 @@ pub const Inst = struct {
212241 _w,
213242 /// ___ Doubleword
214243 //_d,
244 /// ___ Double Quadword to Quadword
245 _dq2q,
215246 /// ___ QuadWord
216247 _q,
248 /// ___ Quadword to Double Quadword
249 _q2dq,
217250
218251 /// ___ String
219252 //_s,
......@@ -369,6 +402,8 @@ pub const Inst = struct {
369402 fn_sw,
370403 /// Float Extended ___
371404 fx_,
405 /// Float Extended ___ 64
406 fx_64,
372407
373408 /// ___ in 32-bit and Compatibility Mode
374409 _32,
......@@ -390,6 +425,14 @@ pub const Inst = struct {
390425 p_dq,
391426 /// Packed ___ Unsigned Doubleword to Quadword
392427 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,
393436 /// ___ Aligned Packed Integer Values
394437 _dqa,
395438 /// ___ Unaligned Packed Integer Values
......@@ -403,6 +446,10 @@ pub const Inst = struct {
403446 //_sd,
404447 /// ___ Packed Double-Precision Values
405448 _pd,
449 /// Half ___ Packed Single-Precision Values
450 h_ps,
451 /// Half ___ Packed Double-Precision Values
452 h_pd,
406453
407454 /// ___ Internal Caches
408455 //_d,
......@@ -430,7 +477,7 @@ pub const Inst = struct {
430477 v_w,
431478 /// VEX-Encoded ___ Doubleword
432479 v_d,
433 /// VEX-Encoded ___ QuadWord
480 /// VEX-Encoded ___ Quadword
434481 v_q,
435482 /// VEX-Encoded ___ Aligned Packed Integer Values
436483 v_dqa,
......@@ -453,6 +500,14 @@ pub const Inst = struct {
453500 vp_dq,
454501 /// VEX-Encoded Packed ___ Unsigned Doubleword to Quadword
455502 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,
456511 /// VEX-Encoded ___ Scalar Single-Precision Values
457512 v_ss,
458513 /// VEX-Encoded ___ Packed Single-Precision Values
......@@ -463,6 +518,10 @@ pub const Inst = struct {
463518 v_pd,
464519 /// VEX-Encoded ___ 128-Bits Of Floating-Point Data
465520 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
467526 /// ___ 128-bit key with key locker
468527 _128,
......@@ -510,6 +569,10 @@ pub const Inst = struct {
510569 /// Add scalar single-precision floating-point values
511570 /// Add packed double-precision floating-point values
512571 /// 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
513576 add,
514577 /// Logical and
515578 /// Bitwise logical and of packed single-precision floating-point values
......@@ -521,12 +584,15 @@ pub const Inst = struct {
521584 /// Bit scan reverse
522585 bs,
523586 /// Byte swap
524 bswap,
587 /// Swap GS base register
588 swap,
525589 /// Bit test
526590 /// Bit test and complement
527591 /// Bit test and reset
528592 /// Bit test and set
529593 bt,
594 /// Check array index against bounds
595 bound,
530596 /// Call
531597 /// Fast system call
532598 call,
......@@ -542,17 +608,12 @@ pub const Inst = struct {
542608 /// Clear interrupt flag
543609 /// Clear task-switched flag in CR0
544610 /// Clear user interrupt flag
545 cl,
546611 /// Cache line demote
547 cldemote,
548612 /// Flush cache line
549 clflush,
550613 /// Flush cache line optimized
551 clflushopt,
552614 /// Clear busy flag in a supervisor shadow stack token
553 clrssbsy,
554615 /// Cache line write back
555 clwb,
616 cl,
556617 /// Complement carry flag
557618 cmc,
558619 /// Conditional move
......@@ -650,15 +711,16 @@ pub const Inst = struct {
650711 lzcnt,
651712 /// Move
652713 /// Move data from string to string
714 /// Move data after swapping bytes
653715 /// Move scalar single-precision floating-point value
654716 /// Move scalar double-precision floating-point value
655717 /// Move doubleword
656718 /// Move quadword
657719 /// Move aligned packed integer values
658720 /// Move unaligned packed integer values
721 /// Move quadword from XMM to MMX technology register
722 /// Move quadword from MMX technology to XMM register
659723 mov,
660 /// Move data after swapping bytes
661 movbe,
662724 /// Move with sign extension
663725 movsx,
664726 /// Move with zero extension
......@@ -671,6 +733,7 @@ pub const Inst = struct {
671733 /// Multiply scalar double-precision floating-point values
672734 /// Multiply packed unsigned doubleword integers
673735 /// Multiply packed doubleword integers
736 /// Carry-less multiplication quadword
674737 mul,
675738 /// Two's complement negation
676739 neg,
......@@ -737,6 +800,8 @@ pub const Inst = struct {
737800 sca,
738801 /// Send user interprocessor interrupt
739802 senduipi,
803 /// Serialize instruction execution
804 serialize,
740805 /// Set byte on condition
741806 set,
742807 /// Logical shift left
......@@ -758,6 +823,10 @@ pub const Inst = struct {
758823 /// Subtract scalar single-precision floating-point values
759824 /// Subtract packed double-precision floating-point values
760825 /// 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
761830 sub,
762831 /// Set carry flag
763832 /// Set direction flag
......@@ -772,8 +841,6 @@ pub const Inst = struct {
772841 st,
773842 /// Store string
774843 sto,
775 /// Swap GS base register
776 swapgs,
777844 /// Test condition
778845 /// Logical compare
779846 /// Packed bit test
......@@ -788,6 +855,8 @@ pub const Inst = struct {
788855 /// Write to model specific register
789856 /// Write to model specific register
790857 /// Write to model specific register
858 /// Write to shadow stack
859 /// Write to user shadow stack
791860 wr,
792861 /// Exchange and add
793862 xadd,
......@@ -904,6 +973,10 @@ pub const Inst = struct {
904973 cmpgt,
905974 /// Empty MMX technology state
906975 emms,
976 /// Multiply and add packed signed and unsigned bytes
977 maddubs,
978 /// Multiply and add packed integers
979 maddw,
907980 /// Multiply packed signed integers and store low result
908981 mull,
909982 /// Multiply packed signed integers and store high result
......@@ -932,6 +1005,8 @@ pub const Inst = struct {
9321005 unpcklwd,
9331006
9341007 // SSE
1008 /// Average packed integers
1009 avg,
9351010 /// Convert packed doubleword integers to packed single-precision floating-point values
9361011 /// Convert packed doubleword integers to packed double-precision floating-point values
9371012 cvtpi2,
......@@ -994,9 +1069,13 @@ pub const Inst = struct {
9941069 /// Move unaligned packed single-precision floating-point values
9951070 /// Move unaligned packed double-precision floating-point values
9961071 movu,
1072 /// Multiply packed unsigned integers and store high result
1073 mulhu,
9971074 /// Prefetch data into caches
9981075 /// Prefetch data into caches with intent to write
9991076 prefetch,
1077 /// Compute sum of absolute differences
1078 sadb,
10001079 /// Packed interleave shuffle of quadruplets of single-precision floating-point values
10011080 /// Packed interleave shuffle of pairs of double-precision floating-point values
10021081 /// Shuffle packed doublewords
......@@ -1056,9 +1135,6 @@ pub const Inst = struct {
10561135 /// Packed single-precision floating-point add/subtract
10571136 /// Packed double-precision floating-point add/subtract
10581137 addsub,
1059 /// Packed single-precision floating-point horizontal add
1060 /// Packed double-precision floating-point horizontal add
1061 hadd,
10621138 /// Replicate double floating-point values
10631139 movddup,
10641140 /// Replicate single floating-point values
......@@ -1069,6 +1145,10 @@ pub const Inst = struct {
10691145 // SSSE3
10701146 /// Packed align right
10711147 alignr,
1148 /// Packed multiply high with round and scale
1149 mulhrs,
1150 /// Packed sign
1151 sign,
10721152
10731153 // SSE4.1
10741154 /// Pack with unsigned saturation
......@@ -1090,6 +1170,8 @@ pub const Inst = struct {
10901170 /// Extract packed floating-point values
10911171 /// Extract packed integer values
10921172 extract,
1173 /// Packed horizontal word minimum
1174 hminposu,
10931175 /// Insert scalar single-precision floating-point value
10941176 /// Insert packed floating-point values
10951177 insert,
......@@ -1111,10 +1193,6 @@ pub const Inst = struct {
11111193 /// Accumulate CRC32 value
11121194 crc32,
11131195
1114 // PCLMUL
1115 /// Carry-less multiplication quadword
1116 clmulq,
1117
11181196 // AES
11191197 /// Perform one round of an AES decryption flow
11201198 /// Perform ten rounds of AES decryption flow with key locker using 128-bit key
......@@ -1634,12 +1712,51 @@ pub const Inst = struct {
16341712 reg_list: RegisterList,
16351713 };
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.
16391715 comptime {
16401716 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.
16411719 assert(@sizeOf(Data) == 8);
16421720 }
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 }
16431760 }
16441761};
16451762
src/arch/x86_64/encodings.zon+78-2
......@@ -684,8 +684,8 @@
684684 .{ .rdseed, .m, .{ .r32 }, .{ 0x0f, 0xc7 }, 7, .none, .rdseed },
685685 .{ .rdseed, .m, .{ .r64 }, .{ 0x0f, 0xc7 }, 7, .long, .rdseed },
686686
687 .{ .rdssd, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0x1e }, 1, .none, .shstk },
688 .{ .rdssq, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0x1e }, 1, .long, .shstk },
687 .{ .rdsspd, .m, .{ .r32 }, .{ 0xf3, 0x0f, 0x1e }, 1, .none, .shstk },
688 .{ .rdsspq, .m, .{ .r64 }, .{ 0xf3, 0x0f, 0x1e }, 1, .long, .shstk },
689689
690690 .{ .rdtsc, .z, .{}, .{ 0x0f, 0x31 }, 0, .none, .none },
691691
......@@ -1524,6 +1524,8 @@
15241524
15251525 .{ .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
15271529 .{ .pmaxsw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .none, .sse2 },
15281530
15291531 .{ .pmaxub, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xde }, 0, .none, .sse2 },
......@@ -1532,6 +1534,8 @@
15321534
15331535 .{ .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
15351539 .{ .pmulhw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .none, .sse2 },
15361540
15371541 .{ .pmullw, .rm, .{ .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xd5 }, 0, .none, .sse2 },
......@@ -1540,6 +1544,8 @@
15401544
15411545 .{ .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
15431549 .{ .pshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .none, .sse2 },
15441550
15451551 .{ .pshufhw, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0xf3, 0x0f, 0x70 }, 0, .none, .sse2 },
......@@ -1642,8 +1648,26 @@
16421648
16431649 .{ .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
16451665 .{ .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
16471671 // SSE4.1
16481672 .{ .blendpd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x0d }, 0, .none, .sse4_1 },
16491673
......@@ -1678,6 +1702,8 @@
16781702
16791703 .{ .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
16811707 .{ .pinsrb, .rmi, .{ .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .none, .sse4_1 },
16821708 .{ .pinsrd, .rmi, .{ .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .none, .sse4_1 },
16831709 .{ .pinsrq, .rmi, .{ .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .long, .sse4_1 },
......@@ -2129,12 +2155,28 @@
21292155 .{ .vpextrw, .rmi, .{ .r32, .xmm, .imm8 }, .{ 0x66, 0x0f, 0xc5 }, 0, .vex_128_w0, .avx },
21302156 .{ .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
21322170 .{ .vpinsrb, .rvmi, .{ .xmm, .xmm, .r32_m8, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x20 }, 0, .vex_128_w0, .avx },
21332171 .{ .vpinsrd, .rvmi, .{ .xmm, .xmm, .rm32, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w0, .avx },
21342172 .{ .vpinsrq, .rvmi, .{ .xmm, .xmm, .rm64, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x22 }, 0, .vex_128_w1, .avx },
21352173
21362174 .{ .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
21382180 .{ .vpmaxsb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3c }, 0, .vex_128_wig, .avx },
21392181 .{ .vpmaxsw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xee }, 0, .vex_128_wig, .avx },
21402182 .{ .vpmaxsd, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x3d }, 0, .vex_128_wig, .avx },
......@@ -2172,6 +2214,10 @@
21722214
21732215 .{ .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
21752221 .{ .vpmulhw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_128_wig, .avx },
21762222
21772223 .{ .vpmulld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_128_wig, .avx },
......@@ -2182,6 +2228,8 @@
21822228
21832229 .{ .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
21852233 .{ .vpshufb, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_128_wig, .avx },
21862234
21872235 .{ .vpshufd, .rmi, .{ .xmm, .xmm_m128, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_128_wig, .avx },
......@@ -2190,6 +2238,10 @@
21902238
21912239 .{ .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
21932245 .{ .vpsllw, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_128_wig, .avx },
21942246 .{ .vpsllw, .vmi, .{ .xmm, .xmm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_128_wig, .avx },
21952247 .{ .vpslld, .rvm, .{ .xmm, .xmm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf2 }, 0, .vex_128_wig, .avx },
......@@ -2447,6 +2499,16 @@
24472499
24482500 .{ .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
24502512 .{ .vperm2i128, .rvmi, .{ .ymm, .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x3a, 0x46 }, 0, .vex_256_w0, .avx2 },
24512513
24522514 .{ .vpermd, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x36 }, 0, .vex_256_w0, .avx2 },
......@@ -2457,6 +2519,10 @@
24572519
24582520 .{ .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
24602526 .{ .vpmaskmovd, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w0, .avx2 },
24612527 .{ .vpmaskmovd, .rvm, .{ .ymm, .ymm, .m256 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_256_w0, .avx2 },
24622528 .{ .vpmaskmovq, .rvm, .{ .xmm, .xmm, .m128 }, .{ 0x66, 0x0f, 0x38, 0x8c }, 0, .vex_128_w1, .avx2 },
......@@ -2503,6 +2569,10 @@
25032569
25042570 .{ .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
25062576 .{ .vpmulhw, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0xe5 }, 0, .vex_256_wig, .avx2 },
25072577
25082578 .{ .vpmulld, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x40 }, 0, .vex_256_wig, .avx2 },
......@@ -2513,6 +2583,8 @@
25132583
25142584 .{ .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
25162588 .{ .vpshufb, .rvm, .{ .ymm, .ymm, .ymm_m256 }, .{ 0x66, 0x0f, 0x38, 0x00 }, 0, .vex_256_wig, .avx2 },
25172589 .{ .vpshufd, .rmi, .{ .ymm, .ymm_m256, .imm8 }, .{ 0x66, 0x0f, 0x70 }, 0, .vex_256_wig, .avx2 },
25182590
......@@ -2520,6 +2592,10 @@
25202592
25212593 .{ .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
25232599 .{ .vpsllw, .rvm, .{ .ymm, .ymm, .xmm_m128 }, .{ 0x66, 0x0f, 0xf1 }, 0, .vex_256_wig, .avx2 },
25242600 .{ .vpsllw, .vmi, .{ .ymm, .ymm, .imm8 }, .{ 0x66, 0x0f, 0x71 }, 6, .vex_256_wig, .avx2 },
25252601 .{ .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" {
290290}
291291
292292test "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
295300 try testCmpVector(f80);
296301 try comptime testCmpVector(f80);
297302 try testCmpVector(c_longdouble);
298303 try comptime testCmpVector(c_longdouble);
299304}
305
300306fn testCmpVector(comptime T: type) !void {
307 @setEvalBranchQuota(2_000);
301308 var edges = [_]T{
302309 -math.inf(T),
303310 -math.floatMax(T),
test/behavior/x86_64/build.zig+3-3
......@@ -87,7 +87,7 @@ pub fn build(b: *std.Build) void {
8787 .{
8888 .cpu_arch = .x86_64,
8989 .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 }),
9191 },
9292 .{
9393 .cpu_arch = .x86_64,
......@@ -97,6 +97,7 @@ pub fn build(b: *std.Build) void {
9797 .{
9898 .cpu_arch = .x86_64,
9999 .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 }),
100101 .cpu_features_sub = std.Target.x86.featureSet(&.{.avx2}),
101102 },
102103 .{
......@@ -106,12 +107,11 @@ pub fn build(b: *std.Build) void {
106107 .{
107108 .cpu_arch = .x86_64,
108109 .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 }),
110111 },
111112 .{
112113 .cpu_arch = .x86_64,
113114 .cpu_model = .{ .explicit = &std.Target.x86.cpu.x86_64_v4 },
114 .cpu_features_add = std.Target.x86.featureSet(&.{.vpclmulqdq}),
115115 },
116116 }) |query| {
117117 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 {
44514451 }
44524452 fn testFloatVectors() !void {
44534453 try testArgs(@Vector(1, f16), .{
4454 -0x1.17cp-12,
4454 0x1.7d8p12,
44554455 });
44564456 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,
44584461 });
44594462 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,
44614470 });
44624471 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,
44644481 });
44654482 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,
4467 -0x1.2dp13, 0x1.6c4p12, 0x1.a9cp-11, -0x1.0ecp8, 0x0.4ccp-14, -0x1.0a8p-6, -0x1.5bcp-14, 0x1.6d8p-9,
4483 0x1.308p6, -0x1.078p-1, 0x0.81p-14, 0x1.1b4p-14, 0x1.4ep-7, 0x1.75p12, 0x1.264p-8, 0x1.a6p2,
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,
44684496 });
44694497 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,
4471 -0x1.0d8p-3, -0x1.5c4p-2, 0x1.f84p-2, 0x1.664p1, -0x1.f64p13, -0x1.bf4p4, -0x1.4b8p0, -0x0.f64p-14,
4472 -0x1.3f8p1, 0x1.098p2, -0x1.a44p8, 0x1.048p13, 0x1.fd4p-11, 0x1.18p-9, -0x1.504p2, 0x1.d04p7,
4473 -nan(f16), 0x1.a94p2, 0x0.5e8p-14, -0x1.7acp-7, 0x1.4c8p-3, 0x1.518p-4, nan(f16), 0x1.8f8p10,
4498 -0x0.11p-14, 0x0.29cp-14, 0x1.7a8p5, 0x1.49cp-11, 0x1.6c4p-3, -0x1.85cp-11, 0x1.ap-8, -0x0.49cp-14,
4499 0x1.dfp2, -0x1.4cp1, 0x1.138p-5, -0x1.45p-9, 0x0.88cp-14, 0x1.6acp10, 0x1.594p3, 0x1.704p6,
4500 -0x1.c34p13, 0x1.44cp0, -0x1.cfcp-10, 0x1.5c8p-4, -0x1.b2cp-10, -0x1.178p1, -0x1.b74p7, -0x1.d18p0,
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,
44744519 });
44754520 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,
4477 0x1.348p14, 0x1.2dcp7, -0x1.8acp-12, -0x1.2cp2, 0x1.868p1, -0x1.1f8p-14, 0x1.638p7, -0x1.734p-5,
4478 0x0.b98p-14, -0x1.7f4p-12, -0x1.38cp15, 0x1.50cp15, 0x1.91cp8, 0x1.cb4p-1, 0x1.fc4p-13, 0x1.9a4p0,
4479 0x1.18p-4, 0x1.60cp10, 0x1.6fp-12, 0x1.b48p6, 0x1.37cp-11, 0x1.424p7, 0x1.44cp13, 0x1.aep5,
4480 0x1.968p14, 0x1.e8p13, -0x1.bp2, -0x1.644p5, 0x1.de4p-8, -0x1.5b4p-14, -0x1.4ap1, -0x1.868p9,
4481 -0x1.d14p0, 0x1.d7cp15, 0x1.3c8p14, 0x1.2ccp-14, -0x1.ee4p8, 0x1.49p-3, 0x1.35cp12, 0x1.d34p6,
4482 0x1.7acp3, -0x1.fa4p2, 0x1.7b4p13, -0x1.cf4p-12, -0x1.ebcp-10, -0x1.5p-3, 0x1.4bp-6, 0x1.83p12,
4483 -0x1.f9cp-8, -0x1.43p-8, -0x1.99p-1, -0x1.dacp3, -0x1.728p-4, -0x1.03cp4, 0x1.604p-2, -0x1.0ep13,
4521 -0x1.67cp-13, 0x1.f2cp-10, 0x1.69cp11, -0x1.0dp-2, 0x1.a8p9, 0x1.7dp-11, 0x1.908p-5, -0x1.37cp0,
4522 0x1.8f8p5, 0x1.38p11, 0x1.d2p8, 0x1.b74p-10, -0x1.188p-7, 0x1.578p5, 0x1.68p-11, -0x1.b9cp8,
4523 -0x1.ba4p2, 0x0.b78p-14, 0x1.458p-8, 0x0.054p-14, -0x0.63p-14, 0x1.83p10, 0x1.94cp-2, -0x1.d7p2,
4524 -0x1.62p4, 0x1.b34p4, -0x1.4cp-11, -0x1.714p9, -0x1.ce4p1, 0x1.75p-3, -0x1.cbp-13, 0x1.714p6,
4525 -0x1.cb8p7, -0x1.b98p-4, 0x1.facp-13, -0x1.1f4p8, -0x1.92p-3, 0x0.144p-14, 0x1.504p-4, 0x1.a9p-10,
4526 0x1.a94p3, 0x1.708p-2, 0x1.c84p-14, 0x1.77cp9, -0x0.1e4p-14, -0x0.3d8p-14, -0x1.f8p4, -0x1.2bp5,
4527 0x1.5b8p-14, 0x1.898p14, -0x1.e2p3, -0x1.0e8p-5, 0x1.4dcp-12, 0x1.368p8, 0x1.968p-7, -0x1.98cp-5,
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,
44844540 });
44854541
44864542 try testArgs(@Vector(1, f32), .{
4487 -0x1.17cp-12,
4543 0x1.12e082p8,
44884544 });
44894545 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,
44914550 });
44924551 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,
44944561 });
44954562 try testArgs(@Vector(8, f32), .{
4496 0x1.943da4p-86, 0x1.528792p95, -0x1.9c9bfap-26, -0x1.8df936p-90,
4497 -0x1.6a70cep56, 0x1.626638p-48, 0x1.7bb2bap-57, -0x1.ac5104p94,
4563 -0x1.9dd6cap3, 0x1.726066p-42, 0x1.5b1f5ep-20, -0x1.347ed6p29,
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,
44984576 });
44994577 try testArgs(@Vector(16, f32), .{
4500 0x1.157044p115, -0x1.416c04p-111, 0x1.a8f164p-104, 0x1.9b6678p84,
4501 -0x1.9d065cp9, -0x1.e8c4b4p126, -0x1.ddb968p84, -0x1.fec8c8p74,
4502 0x1.64ffb2p59, 0x1.548922p20, 0x1.7270fcp22, -0x1.abac68p33,
4503 0x1.faabfp33, -0x1.8aee82p55, 0x1.1bf8fp75, 0x1.33c46ap-66,
4578 0x1.348b38p103, 0x1.bbc8e4p8, -0x1.03f48ap-119, -0x1.90f87cp115,
4579 -0x1.88aaaep28, -0x1.21ec4p-94, 0x1.e1f21cp-57, 0x1.0e7dd2p-37,
4580 -0x1.5963a2p-24, 0x1.4c314cp-61, -0x1.753d5ap113, -0x1.65705p-12,
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,
45044599 });
45054600 try testArgs(@Vector(32, f32), .{
4506 -0x1.039b68p37, -0x1.34de4ap-74, -0x1.05d78ap-76, -0x1.be0f5ap-47,
4507 0x1.032204p-38, 0x1.ef8e2ap-78, -0x1.b013ecp-80, 0x1.71fe4cp99,
4508 0x1.abdadap-14, 0x1.56a9a8p-48, -0x1.8bbd7ep9, 0x1.edd308p-72,
4509 -0x1.92fafcp-121, -0x1.50812p19, 0x1.f4ddc4p28, -0x1.6f0b12p-50,
4510 -0x1.12ab02p127, 0x1.24df48p21, -0x1.993c3p-14, -0x1.4cc476p-112,
4511 0x1.13d9a8p-40, 0x1.a6e652p-9, -0x1.9c730cp-21, -0x1.a75aaap-70,
4512 -0x1.39e632p-111, 0x1.8e8da8p-45, 0x1.b5652cp31, 0x1.258366p44,
4513 0x1.d473aap92, -0x1.951b64p9, 0x1.542edp15, -0x0.f6222ap-126,
4601 -0x1.95dec4p-65, 0x1.3833cp65, -0x1.0ef5ap-53, 0x1.86e4c8p101,
4602 -0x1.713132p24, -0x1.c6fd0ep123, -0x1.75aadcp88, -0x1.b8f0fp18,
4603 0x1.0f5b8ep-34, -0x1.0d0d66p-15, 0x0.842836p-126, -0x1.157782p22,
4604 -0x1.025e8ap-100, 0x1.be825ep117, 0x1.d3efc6p-45, 0x1.ed8462p-34,
4605 -0x1.b373c8p-118, -0x1.dbfd16p4, 0x1.73ee9p-56, -0x1.cdff48p-69,
4606 0x1.1b806ep-78, 0x1.65a58ap-4, -0x1.0d851cp77, 0x1.442c12p41,
4607 0x1.215116p47, -0x1.75f266p-48, 0x1.2273d4p89, 0x1.1bab24p-100,
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,
45144620 });
45154621
45164622 try testArgs(@Vector(1, f64), .{
4517 -0x1.0114613df6f97p816,
4623 0x1.58849bfb1303cp-254,
45184624 });
45194625 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,
45214631 });
45224632 try testArgs(@Vector(4, f64), .{
4523 -0x1.04e1acbfddd9cp681, -0x1.ed553cc056da7p-749,
4524 0x1.3d3f703a0c893p-905, 0x1.0b35633fa78fp691,
4633 0x1.70f298f25a9bfp826, 0x1.4b944832c8eecp-319,
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,
45254646 });
45264647 try testArgs(@Vector(8, f64), .{
4527 -0x1.901a2a60f0562p-301, -0x1.2516175ad61ecp-447,
4528 0x1.e7b12124846bfp564, 0x1.9291384bd7259p209,
4529 -0x1.a7bf62f803c98p900, 0x1.4e2e26257bb3p987,
4530 -0x1.413ca9a32d894p811, 0x1.61b1dd9432e95p479,
4648 -0x1.2a8fb1782b7f2p-126, -0x1.b246d12815c21p606,
4649 0x1.6bc24f2a268b9p837, 0x1.1d550478ebd71p1016,
4650 0x1.d2ba52815edc2p252, 0x1.a8d87e5eb97ecp-450,
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,
45314669 });
45324670 try testArgs(@Vector(16, f64), .{
4533 -0x1.8fc7286d95f54p-235, -0x1.796a7ea8372b6p-837,
4534 -0x1.8c0f930539acbp-98, -0x1.ec80dfbf0b931p-430,
4535 -0x1.e3d80c640652fp-1019, 0x1.8241238fb542fp161,
4536 -0x1.e1f1a79d50263p137, -0x1.9ac5cb2771c28p-791,
4537 0x1.4d8f00fe881e7p-401, -0x1.87fbd7bfd99d7p346,
4538 -0x1.a8a7cc575335ep1017, 0x1.37bb88dc3fd8bp-355,
4539 0x1.9d53d346c0e65p929, -0x1.bbae3d0229c34p289,
4540 -0x1.cb8ef994d5ce5p25, 0x1.ba20af512616ap50,
4671 0x1.fd61de463a33cp898, -0x1.47be52b4f1241p-18,
4672 0x1.729aa777312a3p-930, -0x1.2db258cd9984dp895,
4673 0x1.a1fbc900c10cbp517, -0x1.e93dfa8923807p815,
4674 -0x1.e8f19fc0aa2a8p191, -0x1.1b084206321d5p861,
4675 -0x1.0be3c6310c58ep457, 0x1.816c3bcf4b9f5p-504,
4676 0x1.ec4b026b00c91p-831, 0x1.e42d18f5c7e4bp924,
4677 -0x1.f1483ecd74646p560, -0x1.cc5aea97d2264p447,
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,
45414690 });
45424691
45434692 try testArgs(@Vector(1, f80), .{
4544 -0x1.a2e9410a7dfedabp-2324,
4693 -0x1.482098130df28b74p12578,
45454694 });
45464695 try testArgs(@Vector(2, f80), .{
4547 -0x1.a2e9410a7dfedabp-2324,
4548 0x1.2b17da3b9746885p-8665,
4696 -0x1.275157565b1eee5ep14003,
4697 0x1.a27b82ef4be6132ap3681,
4698 });
4699 try testArgs(@Vector(3, f80), .{
4700 0x1.9825fbd9b22021fep-10432,
4701 -0x1.b8c8c4e5e3911ca8p13568,
4702 0x1.aa99cc199c8e524p9865,
45494703 });
45504704 try testArgs(@Vector(4, f80), .{
4551 -0x1.c488fedb7ab646cep-13007,
4552 0x1.e914deaccaa50016p2073,
4553 -0x1.d1c7ae8ec3c9df86p10642,
4554 -0x1.2da1658f337fa01p9893,
4705 -0x1.9d8ab0a36953d0f6p-760,
4706 0x1.869b464121ce6576p-13660,
4707 0x1.a54b1d1e8ae2b62ap12073,
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,
45554725 });
45564726 try testArgs(@Vector(8, f80), .{
4557 -0x1.bed8a74c43750656p890,
4558 -0x1.7bf57f38004ac976p8481,
4559 -0x1.9cdc10ac0657d328p7884,
4560 0x1.c86f61883da149fp12293,
4561 -0x1.528d6957df6bfdd8p14125,
4562 -0x1.5ebb4006d0243bfep14530,
4563 -0x1.94b9b18636d12402p-1845,
4564 -0x1.25439a6d68add188p5962,
4727 -0x1.9bb73ea024f4167cp3116,
4728 0x1.adf6241753b29ed2p-4428,
4729 -0x1.1494fa8680f9f5f4p2008,
4730 -0x1.c68a673c59edeb24p2377,
4731 0x1.26c7ab4021afb6dcp1376,
4732 0x1.c829b0b3935a2ac6p-11758,
4733 -0x1.11e39b110c2fb122p-3836,
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,
45654746 });
45664747
45674748 try testArgs(@Vector(1, f128), .{
4568 -0x1.d1e6fc3b1e66632e7b79051a47dap14300,
4749 -0x1.274ece23c1832bfe66a1bc59cf87p-8354,
45694750 });
45704751 try testArgs(@Vector(2, f128), .{
4571 0x1.84b3ac8ffe5893b2c6af8d68de9dp-83,
4572 -0x1.438ca2c8a0d8e3ee9062d351c46ep-10235,
4752 0x1.838a4e7ba1e2191cebe701eac5d4p6581,
4753 0x1.cdfbda51a2adbce757d7c2e0981bp446,
4754 });
4755 try testArgs(@Vector(3, f128), .{
4756 -0x1.ff45938938f76db417c980c368c6p-7215,
4757 -0x1.277a316793a0172e49c7227952ccp10618,
4758 0x1.d85027eb4f4ed3512c10bff9a199p-8465,
45734759 });
45744760 try testArgs(@Vector(4, f128), .{
4575 0x1.04eb03882d4fd1b090e714d3e5ep806,
4576 -0x1.4082b29f7c26e701764c915642ffp-6182,
4577 -0x1.b6f1e8565e5040415110f18b519ap13383,
4578 0x1.1c29f8c162cead9061c5797ea15ap11957,
4761 -0x1.43d8ecf283d4ec6fc4993f385386p-12233,
4762 -0x1.384424d239aa2ed9719d2c2d1e58p7346,
4763 -0x1.d33fd11001f0ab6d0f9a2790b41cp14692,
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,
45794781 });
45804782 try testArgs(@Vector(8, f128), .{
4581 -0x1.53d7f00cd204d80e5ff5bb665773p11218,
4582 -0x1.4daa1c81cffe28e8fa5cd703c287p2362,
4583 -0x1.cc6a71c3ad4560871efdbd025cd7p-8116,
4584 -0x1.87f8553cf8772fb6b78e7df3e3bap14523,
4585 -0x1.14b6880f6678f86dfb543dde1c6ep2105,
4586 0x1.9d2d4398414da9d857e76e8fd7ccp-13668,
4587 0x1.a37f07af240ded458d103c022064p-1158,
4588 0x1.425d53e6bd6070b847e5da1ed593p1394,
4783 -0x1.05fe5035b415bdc5f8f9ae4c8815p455,
4784 -0x1.fafde904d5cad82413daee7b88b8p-244,
4785 0x1.53041230913c654449b12eb4d89bp2214,
4786 -0x1.12d9f4b006063e9c0c7bdf19f61ap-2483,
4787 0x1.aee9d4ba013f668773e4f0fd9002p5461,
4788 0x1.a6776670633403e78a3cc6fcf8fdp8324,
4789 -0x1.392aa756df3b993ea9db22def53ep15136,
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,
45894802 });
45904803 }
45914804 };
......@@ -4897,6 +5110,15 @@ test reduceMul {
48975110 try test_reduce_mul.testIntVectors();
48985111}
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
49005122inline fn splat(comptime Type: type, rhs: Type) Type {
49015123 return @splat(rhs[0]);
49025124}
test/cases/float_mode_optimized_reduce.zig+2-2
......@@ -8,5 +8,5 @@ pub fn main() void {
88}
99
1010// run
11// backend=llvm
12//
11// backend=stage2,llvm
12// target=x86_64-linux