authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-14 07:42:58-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-05-17 18:00:17-04:00
logd3dfe61eaabb88211565a0e14d162aea1d7bfe47
treeaf4d780abb3c50660ee8afa94ff806799c241e19
parent96e35b3652f1b823f8700ae7ff92999e805e9182

x86_64: rewrite scalar `*|`


5 files changed, 6495 insertions(+), 1154 deletions(-)

src/arch/x86_64/CodeGen.zig+6406-1146
......@@ -486,7 +486,7 @@ pub const MCValue = union(enum) {
486486 } },
487487 } else .{ .base = .{ .reg = .ds }, .mod = .{ .off = addr } },
488488 .indirect => |reg_off| .{
489 .base = .{ .reg = registerAlias(reg_off.reg, @divExact(function.target.ptrBitWidth(), 8)) },
489 .base = .{ .reg = reg_off.reg.toSize(.ptr, function.target) },
490490 .mod = .{ .rm = .{
491491 .size = mod_rm.size,
492492 .index = mod_rm.index,
......@@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24082408}
24092409
24102410fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2411 @setEvalBranchQuota(18_100);
2411 @setEvalBranchQuota(19_300);
24122412 const pt = cg.pt;
24132413 const zcu = pt.zcu;
24142414 const ip = &zcu.intern_pool;
......@@ -2444,7 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
24442444 try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1);
24452445 switch (air_tags[@intFromEnum(inst)]) {
24462446 // zig fmt: off
2447 .mul_sat => try cg.airMulSat(inst),
24482447 .shl_sat => try cg.airShlSat(inst),
24492448
24502449 .bitcast => try cg.airBitCast(inst),
......@@ -4493,7 +4492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
44934492 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
44944493 },
44954494 .extra_temps = .{
4496 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
4495 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
44974496 .unused,
44984497 .unused,
44994498 .unused,
......@@ -4523,7 +4522,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
45234522 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
45244523 },
45254524 .extra_temps = .{
4526 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
4525 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
45274526 .unused,
45284527 .unused,
45294528 .unused,
......@@ -4670,7 +4669,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
46704669 },
46714670 .extra_temps = .{
46724671 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4673 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4672 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
46744673 .unused,
46754674 .unused,
46764675 .unused,
......@@ -4700,7 +4699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47004699 },
47014700 .extra_temps = .{
47024701 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4703 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4702 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
47044703 .unused,
47054704 .unused,
47064705 .unused,
......@@ -4731,7 +4730,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47314730 },
47324731 .extra_temps = .{
47334732 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4734 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4733 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
47354734 .unused,
47364735 .unused,
47374736 .unused,
......@@ -4763,7 +4762,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47634762 },
47644763 .extra_temps = .{
47654764 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4766 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4765 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
47674766 .unused,
47684767 .unused,
47694768 .unused,
......@@ -4795,7 +4794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
47954794 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
47964795 },
47974796 .extra_temps = .{
4798 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4797 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
47994798 .unused,
48004799 .unused,
48014800 .unused,
......@@ -4824,7 +4823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48244823 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
48254824 },
48264825 .extra_temps = .{
4827 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4826 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
48284827 .unused,
48294828 .unused,
48304829 .unused,
......@@ -4853,7 +4852,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48534852 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
48544853 },
48554854 .extra_temps = .{
4856 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4855 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
48574856 .unused,
48584857 .unused,
48594858 .unused,
......@@ -4883,7 +4882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
48834882 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
48844883 },
48854884 .extra_temps = .{
4886 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4885 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
48874886 .unused,
48884887 .unused,
48894888 .unused,
......@@ -4916,7 +4915,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49164915 },
49174916 .extra_temps = .{
49184917 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4919 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4918 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
49204919 .unused,
49214920 .unused,
49224921 .unused,
......@@ -4946,7 +4945,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49464945 },
49474946 .extra_temps = .{
49484947 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4949 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4948 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
49504949 .unused,
49514950 .unused,
49524951 .unused,
......@@ -4977,7 +4976,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
49774976 },
49784977 .extra_temps = .{
49794978 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4980 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
4979 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
49814980 .unused,
49824981 .unused,
49834982 .unused,
......@@ -5009,7 +5008,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50095008 },
50105009 .extra_temps = .{
50115010 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5012 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5011 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
50135012 .unused,
50145013 .unused,
50155014 .unused,
......@@ -5042,7 +5041,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50425041 },
50435042 .extra_temps = .{
50445043 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5045 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5044 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
50465045 .unused,
50475046 .unused,
50485047 .unused,
......@@ -5073,7 +5072,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
50735072 },
50745073 .extra_temps = .{
50755074 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5076 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5075 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
50775076 .unused,
50785077 .unused,
50795078 .unused,
......@@ -5105,7 +5104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51055104 },
51065105 .extra_temps = .{
51075106 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5108 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5107 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
51095108 .unused,
51105109 .unused,
51115110 .unused,
......@@ -5138,7 +5137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51385137 },
51395138 .extra_temps = .{
51405139 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5141 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5140 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
51425141 .unused,
51435142 .unused,
51445143 .unused,
......@@ -5171,7 +5170,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
51715170 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
51725171 },
51735172 .extra_temps = .{
5174 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5173 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
51755174 .unused,
51765175 .unused,
51775176 .unused,
......@@ -5201,7 +5200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
52015200 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
52025201 },
52035202 .extra_temps = .{
5204 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5203 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
52055204 .unused,
52065205 .unused,
52075206 .unused,
......@@ -5231,7 +5230,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
52315230 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
52325231 },
52335232 .extra_temps = .{
5234 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5233 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
52355234 .unused,
52365235 .unused,
52375236 .unused,
......@@ -5262,7 +5261,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
52625261 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
52635262 },
52645263 .extra_temps = .{
5265 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
5264 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
52665265 .unused,
52675266 .unused,
52685267 .unused,
......@@ -5295,7 +5294,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
52955294 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
52965295 },
52975296 .extra_temps = .{
5298 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
5297 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
52995298 .unused,
53005299 .unused,
53015300 .unused,
......@@ -5322,7 +5321,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53225321 .{ .src = .{ .mem, .to_mut_gpr, .none }, .commute = .{ 0, 1 } },
53235322 },
53245323 .extra_temps = .{
5325 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
5324 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
53265325 .unused,
53275326 .unused,
53285327 .unused,
......@@ -5351,7 +5350,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
53515350 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
53525351 },
53535352 .extra_temps = .{
5354 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
5353 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
53555354 .unused,
53565355 .unused,
53575356 .unused,
......@@ -5492,7 +5491,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
54925491 },
54935492 .extra_temps = .{
54945493 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5495 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5494 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
54965495 .unused,
54975496 .unused,
54985497 .unused,
......@@ -5524,7 +5523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55245523 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
55255524 },
55265525 .extra_temps = .{
5527 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5526 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
55285527 .unused,
55295528 .unused,
55305529 .unused,
......@@ -5558,7 +5557,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55585557 },
55595558 .extra_temps = .{
55605559 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5561 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5560 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
55625561 .unused,
55635562 .unused,
55645563 .unused,
......@@ -5592,7 +5591,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
55925591 },
55935592 .extra_temps = .{
55945593 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5595 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5594 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
55965595 .unused,
55975596 .unused,
55985597 .unused,
......@@ -5625,7 +5624,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56255624 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
56265625 },
56275626 .extra_temps = .{
5628 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
5627 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
56295628 .unused,
56305629 .unused,
56315630 .unused,
......@@ -5658,7 +5657,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56585657 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
56595658 },
56605659 .extra_temps = .{
5661 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
5660 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
56625661 .unused,
56635662 .unused,
56645663 .unused,
......@@ -5688,7 +5687,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
56885687 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
56895688 },
56905689 .extra_temps = .{
5691 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
5690 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
56925691 .unused,
56935692 .unused,
56945693 .unused,
......@@ -5737,7 +5736,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57375736 },
57385737 .extra_temps = .{
57395738 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5740 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5739 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
57415740 .unused,
57425741 .unused,
57435742 .unused,
......@@ -5769,7 +5768,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
57695768 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
57705769 },
57715770 .extra_temps = .{
5772 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5771 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
57735772 .unused,
57745773 .unused,
57755774 .unused,
......@@ -5802,7 +5801,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58025801 },
58035802 .extra_temps = .{
58045803 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5805 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5804 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
58065805 .unused,
58075806 .unused,
58085807 .unused,
......@@ -5836,7 +5835,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58365835 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
58375836 },
58385837 .extra_temps = .{
5839 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5838 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
58405839 .unused,
58415840 .unused,
58425841 .unused,
......@@ -5871,7 +5870,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
58715870 },
58725871 .extra_temps = .{
58735872 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5874 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5873 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
58755874 .unused,
58765875 .unused,
58775876 .unused,
......@@ -5906,7 +5905,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59065905 },
59075906 .extra_temps = .{
59085907 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5909 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5908 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
59105909 .unused,
59115910 .unused,
59125911 .unused,
......@@ -5941,7 +5940,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59415940 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
59425941 },
59435942 .extra_temps = .{
5944 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
5943 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
59455944 .unused,
59465945 .unused,
59475946 .unused,
......@@ -5976,7 +5975,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
59765975 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
59775976 },
59785977 .extra_temps = .{
5979 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
5978 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
59805979 .unused,
59815980 .unused,
59825981 .unused,
......@@ -6006,7 +6005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
60066005 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
60076006 },
60086007 .extra_temps = .{
6009 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
6008 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
60106009 .unused,
60116010 .unused,
60126011 .unused,
......@@ -6037,7 +6036,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
60376036 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
60386037 },
60396038 .extra_temps = .{
6040 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
6039 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
60416040 .unused,
60426041 .unused,
60436042 .unused,
......@@ -6079,8 +6078,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
60796078 }, .{
60806079 .required_features = .{ .@"64bit", null, null, null },
60816080 .src_constraints = .{
6082 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
6083 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
6081 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
6082 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
60846083 .any,
60856084 },
60866085 .patterns = &.{
......@@ -6123,8 +6122,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61236122 }, .{
61246123 .required_features = .{ .@"64bit", null, null, null },
61256124 .src_constraints = .{
6126 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
6127 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
6125 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
6126 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
61286127 .any,
61296128 },
61306129 .patterns = &.{
......@@ -6162,8 +6161,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
61626161 }, .{
61636162 .required_features = .{ .@"64bit", null, null, null },
61646163 .src_constraints = .{
6165 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
6166 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
6164 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
6165 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
61676166 .any,
61686167 },
61696168 .patterns = &.{
......@@ -6208,8 +6207,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
62086207 }, .{
62096208 .required_features = .{ .@"64bit", null, null, null },
62106209 .src_constraints = .{
6211 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
6212 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
6210 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
6211 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
62136212 .any,
62146213 },
62156214 .patterns = &.{
......@@ -14984,7 +14983,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1498414983 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1498514984 },
1498614985 .extra_temps = .{
14987 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
14986 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1498814987 .unused,
1498914988 .unused,
1499014989 .unused,
......@@ -15104,7 +15103,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1510415103 },
1510515104 .extra_temps = .{
1510615105 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15107 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15106 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1510815107 .unused,
1510915108 .unused,
1511015109 .unused,
......@@ -15134,7 +15133,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1513415133 },
1513515134 .extra_temps = .{
1513615135 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15137 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15136 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1513815137 .unused,
1513915138 .unused,
1514015139 .unused,
......@@ -15164,7 +15163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1516415163 },
1516515164 .extra_temps = .{
1516615165 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15167 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15166 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1516815167 .unused,
1516915168 .unused,
1517015169 .unused,
......@@ -15195,7 +15194,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1519515194 },
1519615195 .extra_temps = .{
1519715196 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15198 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15197 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1519915198 .unused,
1520015199 .unused,
1520115200 .unused,
......@@ -15225,7 +15224,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1522515224 .{ .src = .{ .to_mut_gpr, .mem, .none } },
1522615225 },
1522715226 .extra_temps = .{
15228 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15227 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1522915228 .unused,
1523015229 .unused,
1523115230 .unused,
......@@ -15254,7 +15253,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1525415253 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1525515254 },
1525615255 .extra_temps = .{
15257 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15256 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1525815257 .unused,
1525915258 .unused,
1526015259 .unused,
......@@ -15282,7 +15281,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1528215281 .{ .src = .{ .to_mut_gpr, .mem, .none } },
1528315282 },
1528415283 .extra_temps = .{
15285 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15284 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1528615285 .unused,
1528715286 .unused,
1528815287 .unused,
......@@ -15311,7 +15310,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1531115310 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1531215311 },
1531315312 .extra_temps = .{
15314 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15313 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1531515314 .unused,
1531615315 .unused,
1531715316 .unused,
......@@ -15342,7 +15341,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1534215341 },
1534315342 .extra_temps = .{
1534415343 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15345 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15344 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1534615345 .unused,
1534715346 .unused,
1534815347 .unused,
......@@ -15372,7 +15371,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1537215371 },
1537315372 .extra_temps = .{
1537415373 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15375 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15374 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1537615375 .unused,
1537715376 .unused,
1537815377 .unused,
......@@ -15402,7 +15401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1540215401 },
1540315402 .extra_temps = .{
1540415403 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15405 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15404 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1540615405 .unused,
1540715406 .unused,
1540815407 .unused,
......@@ -15433,7 +15432,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1543315432 },
1543415433 .extra_temps = .{
1543515434 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15436 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15435 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1543715436 .unused,
1543815437 .unused,
1543915438 .unused,
......@@ -15464,7 +15463,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1546415463 },
1546515464 .extra_temps = .{
1546615465 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15467 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15466 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1546815467 .unused,
1546915468 .unused,
1547015469 .unused,
......@@ -15495,7 +15494,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1549515494 },
1549615495 .extra_temps = .{
1549715496 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15498 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15497 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1549915498 .unused,
1550015499 .unused,
1550115500 .unused,
......@@ -15526,7 +15525,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1552615525 },
1552715526 .extra_temps = .{
1552815527 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15529 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15528 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1553015529 .unused,
1553115530 .unused,
1553215531 .unused,
......@@ -15558,7 +15557,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1555815557 },
1555915558 .extra_temps = .{
1556015559 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15561 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15560 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1556215561 .unused,
1556315562 .unused,
1556415563 .unused,
......@@ -15589,7 +15588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1558915588 .{ .src = .{ .to_mut_gpr, .mem, .none } },
1559015589 },
1559115590 .extra_temps = .{
15592 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15591 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1559315592 .unused,
1559415593 .unused,
1559515594 .unused,
......@@ -15619,7 +15618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1561915618 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1562015619 },
1562115620 .extra_temps = .{
15622 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15621 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1562315622 .unused,
1562415623 .unused,
1562515624 .unused,
......@@ -15648,7 +15647,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1564815647 .{ .src = .{ .to_mut_gpr, .mem, .none } },
1564915648 },
1565015649 .extra_temps = .{
15651 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15650 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1565215651 .unused,
1565315652 .unused,
1565415653 .unused,
......@@ -15678,7 +15677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1567815677 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1567915678 },
1568015679 .extra_temps = .{
15681 .{ .type = .i16, .kind = .{ .rc = .general_purpose } },
15680 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1568215681 .unused,
1568315682 .unused,
1568415683 .unused,
......@@ -15737,7 +15736,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1573715736 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1573815737 },
1573915738 .extra_temps = .{
15740 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
15739 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1574115740 .unused,
1574215741 .unused,
1574315742 .unused,
......@@ -15812,7 +15811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1581215811 },
1581315812 .extra_temps = .{
1581415813 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15815 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15814 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1581615815 .unused,
1581715816 .unused,
1581815817 .unused,
......@@ -15842,7 +15841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1584215841 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1584315842 },
1584415843 .extra_temps = .{
15845 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15844 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1584615845 .unused,
1584715846 .unused,
1584815847 .unused,
......@@ -15874,7 +15873,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1587415873 },
1587515874 .extra_temps = .{
1587615875 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15877 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15876 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1587815877 .unused,
1587915878 .unused,
1588015879 .unused,
......@@ -15906,7 +15905,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1590615905 },
1590715906 .extra_temps = .{
1590815907 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15909 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15908 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1591015909 .unused,
1591115910 .unused,
1591215911 .unused,
......@@ -15937,7 +15936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1593715936 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1593815937 },
1593915938 .extra_temps = .{
15940 .{ .type = .i32, .kind = .{ .rc = .general_purpose } },
15939 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1594115940 .unused,
1594215941 .unused,
1594315942 .unused,
......@@ -15996,7 +15995,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1599615995 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1599715996 },
1599815997 .extra_temps = .{
15999 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
15998 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1600015999 .unused,
1600116000 .unused,
1600216001 .unused,
......@@ -16056,7 +16055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1605616055 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1605716056 },
1605816057 .extra_temps = .{
16059 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16058 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1606016059 .unused,
1606116060 .unused,
1606216061 .unused,
......@@ -16087,7 +16086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1608716086 },
1608816087 .extra_temps = .{
1608916088 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16090 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16089 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1609116090 .unused,
1609216091 .unused,
1609316092 .unused,
......@@ -16119,7 +16118,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1611916118 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1612016119 },
1612116120 .extra_temps = .{
16122 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16121 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1612316122 .unused,
1612416123 .unused,
1612516124 .unused,
......@@ -16152,7 +16151,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1615216151 },
1615316152 .extra_temps = .{
1615416153 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16155 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16154 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1615616155 .unused,
1615716156 .unused,
1615816157 .unused,
......@@ -16185,7 +16184,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1618516184 },
1618616185 .extra_temps = .{
1618716186 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16188 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16187 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1618916188 .unused,
1619016189 .unused,
1619116190 .unused,
......@@ -16218,7 +16217,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1621816217 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1621916218 },
1622016219 .extra_temps = .{
16221 .{ .type = .i64, .kind = .{ .rc = .general_purpose } },
16220 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1622216221 .unused,
1622316222 .unused,
1622416223 .unused,
......@@ -16279,7 +16278,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1627916278 .{ .src = .{ .to_mut_gpr, .to_gpr, .none } },
1628016279 },
1628116280 .extra_temps = .{
16282 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
16281 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
1628316282 .unused,
1628416283 .unused,
1628516284 .unused,
......@@ -16302,8 +16301,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1630216301 }, .{
1630316302 .required_features = .{ .@"64bit", null, null, null },
1630416303 .src_constraints = .{
16305 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
16306 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
16304 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
16305 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
1630716306 .any,
1630816307 },
1630916308 .patterns = &.{
......@@ -16346,8 +16345,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
1634616345 }, .{
1634716346 .required_features = .{ .@"64bit", null, null, null },
1634816347 .src_constraints = .{
16349 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
16350 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
16348 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
16349 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
1635116350 .any,
1635216351 },
1635316352 .patterns = &.{
......@@ -27013,27 +27012,35 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2701327012 };
2701427013 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
2701527014 },
27016 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
27017 else => unreachable,
27018 .div_float, .div_float_optimized => .div_float,
27019 .div_exact, .div_exact_optimized => .div_exact,
27020 }) else {
27015 .mul_sat => |air_tag| if (use_old) try cg.airMulSat(inst) else fallback: {
2702127016 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
27022 const ty = cg.typeOf(bin_op.lhs);
27017 if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airMulSat(inst);
2702327018 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
2702427019 var res: [1]Temp = undefined;
27025 (if (cg.floatBits(ty.scalarType(zcu))) |_| cg.select(&res, &.{ty}, &ops, comptime &.{ .{
27026 .required_features = .{ .f16c, null, null, null },
27027 .src_constraints = .{
27028 .{ .scalar_float = .{ .of = .word, .is = .word } },
27029 .{ .scalar_float = .{ .of = .word, .is = .word } },
27030 .any,
27020 cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{
27021 .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 8 }, .any },
27022 .patterns = &.{
27023 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
27024 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
27025 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
2703127026 },
27027 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27028 .clobbers = .{ .eflags = true },
27029 .each = .{ .once = &.{
27030 .{ ._, .i_, .mul, .src1b, ._, ._, ._ },
27031 .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
27032 .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
27033 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ },
27034 } },
27035 }, .{
27036 .src_constraints = .{ .{ .signed_int = .byte }, .{ .signed_int = .byte }, .any },
2703227037 .patterns = &.{
27033 .{ .src = .{ .to_sse, .to_sse, .none } },
27038 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
27039 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
27040 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
2703427041 },
2703527042 .extra_temps = .{
27036 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27043 .{ .type = .i8, .kind = .{ .rc = .gphi } },
2703727044 .unused,
2703827045 .unused,
2703927046 .unused,
......@@ -27045,26 +27052,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2704527052 .unused,
2704627053 .unused,
2704727054 },
27048 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27055 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27056 .clobbers = .{ .eflags = true },
2704927057 .each = .{ .once = &.{
27050 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
27051 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
27052 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
27053 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
27058 .{ ._, .i_, .mul, .src1b, ._, ._, ._ },
27059 .{ ._, ._c, .j, .@"1f", ._, ._, ._ },
27060 .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ },
27061 .{ ._, ._r, .sa, .tmp0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
27062 .{ ._, ._, .cmp, .tmp0b, .dst0h, ._, ._ },
27063 .{ ._, ._e, .j, .@"0f", ._, ._, ._ },
27064 .{ .@"1:", ._r, .sa, .dst0w, .ui(15), ._, ._ },
27065 .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ },
2705427066 } },
2705527067 }, .{
27056 .required_features = .{ .sse, null, null, null },
27057 .src_constraints = .{
27058 .{ .scalar_float = .{ .of = .word, .is = .word } },
27059 .{ .scalar_float = .{ .of = .word, .is = .word } },
27060 .any,
27061 },
27068 .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_unsigned_int = 8 }, .any },
2706227069 .patterns = &.{
27063 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
27070 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
27071 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
27072 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
2706427073 },
27065 .call_frame = .{ .alignment = .@"16" },
2706627074 .extra_temps = .{
27067 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
27075 .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2706827076 .unused,
2706927077 .unused,
2707027078 .unused,
......@@ -27077,25 +27085,22 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2707727085 .unused,
2707827086 },
2707927087 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27080 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27088 .clobbers = .{ .eflags = true },
2708127089 .each = .{ .once = &.{
27082 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
27090 .{ ._, ._, .mul, .src1b, ._, ._, ._ },
27091 .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ },
27092 .{ ._, ._, .@"or", .dst0b, .tmp0b, ._, ._ },
2708327093 } },
2708427094 }, .{
27085 .required_features = .{ .f16c, null, null, null },
27086 .src_constraints = .{
27087 .{ .scalar_float = .{ .of = .qword, .is = .word } },
27088 .{ .scalar_float = .{ .of = .qword, .is = .word } },
27089 .any,
27090 },
27095 .required_features = .{ .cmov, null, null, null },
27096 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
2709127097 .patterns = &.{
27092 .{ .src = .{ .mem, .mem, .none } },
27093 .{ .src = .{ .to_sse, .mem, .none } },
27094 .{ .src = .{ .mem, .to_sse, .none } },
27095 .{ .src = .{ .to_sse, .to_sse, .none } },
27098 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
27099 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
27100 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
2709627101 },
2709727102 .extra_temps = .{
27098 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27103 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2709927104 .unused,
2710027105 .unused,
2710127106 .unused,
......@@ -27107,28 +27112,23 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2710727112 .unused,
2710827113 .unused,
2710927114 },
27110 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27115 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27116 .clobbers = .{ .eflags = true },
2711127117 .each = .{ .once = &.{
27112 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
27113 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
27114 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
27115 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
27118 .{ ._, ._, .mul, .src1b, ._, ._, ._ },
27119 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
27120 .{ ._, ._, .cmp, .dst0w, .tmp0w, ._, ._ },
27121 .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ },
2711627122 } },
2711727123 }, .{
27118 .required_features = .{ .f16c, null, null, null },
27119 .src_constraints = .{
27120 .{ .scalar_float = .{ .of = .xword, .is = .word } },
27121 .{ .scalar_float = .{ .of = .xword, .is = .word } },
27122 .any,
27123 },
27124 .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any },
2712427125 .patterns = &.{
27125 .{ .src = .{ .mem, .mem, .none } },
27126 .{ .src = .{ .to_sse, .mem, .none } },
27127 .{ .src = .{ .mem, .to_sse, .none } },
27128 .{ .src = .{ .to_sse, .to_sse, .none } },
27126 .{ .src = .{ .{ .to_reg = .al }, .mem, .none } },
27127 .{ .src = .{ .mem, .{ .to_reg = .al }, .none }, .commute = .{ 0, 1 } },
27128 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
2712927129 },
2713027130 .extra_temps = .{
27131 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
27131 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2713227132 .unused,
2713327133 .unused,
2713427134 .unused,
......@@ -27140,27 +27140,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2714027140 .unused,
2714127141 .unused,
2714227142 },
27143 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27143 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27144 .clobbers = .{ .eflags = true },
2714427145 .each = .{ .once = &.{
27145 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
27146 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
27147 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
27148 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
27146 .{ ._, ._, .mul, .src1b, ._, ._, ._ },
27147 .{ ._, ._, .cmp, .dst0w, .ua(.src0, .add_umax), ._, ._ },
27148 .{ ._, ._na, .j, .@"0f", ._, ._, ._ },
27149 .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
2714927150 } },
2715027151 }, .{
27151 .required_features = .{ .f16c, null, null, null },
27152 .src_constraints = .{
27153 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
27154 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
27155 .any,
27156 },
27152 .required_features = .{ .fast_imm16, null, null, null },
27153 .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any },
2715727154 .patterns = &.{
27158 .{ .src = .{ .to_mem, .to_mem, .none } },
27155 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27156 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27157 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2715927158 },
2716027159 .extra_temps = .{
27161 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27162 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
27163 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
27160 .{ .type = .i16, .kind = .{ .reg = .dx } },
27161 .unused,
27162 .unused,
2716427163 .unused,
2716527164 .unused,
2716627165 .unused,
......@@ -27170,33 +27169,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2717027169 .unused,
2717127170 .unused,
2717227171 },
27173 .dst_temps = .{ .mem, .unused },
27172 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2717427173 .clobbers = .{ .eflags = true },
2717527174 .each = .{ .once = &.{
27176 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27177 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
27178 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
27179 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
27180 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
27181 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27182 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27175 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27176 .{ ._, .i_, .mul, .src1w, ._, ._, ._ },
27177 .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
27178 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
27179 .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
27180 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ },
2718327181 } },
2718427182 }, .{
27185 .required_features = .{ .avx, null, null, null },
27186 .src_constraints = .{
27187 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27188 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27189 .any,
27190 },
27183 .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 16 }, .any },
2719127184 .patterns = &.{
27192 .{ .src = .{ .to_mem, .to_mem, .none } },
27185 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27186 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27187 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2719327188 },
27194 .call_frame = .{ .alignment = .@"16" },
2719527189 .extra_temps = .{
27196 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27197 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
27198 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
27199 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
27190 .{ .type = .i16, .kind = .{ .reg = .dx } },
27191 .unused,
27192 .unused,
27193 .unused,
2720027194 .unused,
2720127195 .unused,
2720227196 .unused,
......@@ -27205,34 +27199,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2720527199 .unused,
2720627200 .unused,
2720727201 },
27208 .dst_temps = .{ .mem, .unused },
27209 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27202 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27203 .clobbers = .{ .eflags = true },
2721027204 .each = .{ .once = &.{
27211 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27212 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
27213 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
27214 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
27215 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
27216 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
27217 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27218 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27205 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27206 .{ ._, .i_, .mul, .src1w, ._, ._, ._ },
27207 .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
27208 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
27209 .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
27210 .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
2721927211 } },
2722027212 }, .{
27221 .required_features = .{ .sse4_1, null, null, null },
27222 .src_constraints = .{
27223 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27224 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27225 .any,
27226 },
27213 .required_features = .{ .fast_imm16, null, null, null },
27214 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
2722727215 .patterns = &.{
27228 .{ .src = .{ .to_mem, .to_mem, .none } },
27216 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27217 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27218 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2722927219 },
27230 .call_frame = .{ .alignment = .@"16" },
2723127220 .extra_temps = .{
27232 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27233 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
27234 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
27235 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
27221 .{ .type = .i16, .kind = .{ .reg = .dx } },
27222 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27223 .unused,
27224 .unused,
2723627225 .unused,
2723727226 .unused,
2723827227 .unused,
......@@ -27241,36 +27230,33 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2724127230 .unused,
2724227231 .unused,
2724327232 },
27244 .dst_temps = .{ .mem, .unused },
27245 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27233 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27234 .clobbers = .{ .eflags = true },
2724627235 .each = .{ .once = &.{
27247 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27248 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
27249 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
27250 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
27251 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
27252 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
27253 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
27254 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27255 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27236 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27237 .{ ._, .i_, .mul, .src1w, ._, ._, ._ },
27238 .{ ._, ._c, .j, .@"1f", ._, ._, ._ },
27239 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27240 .{ ._, ._r, .sa, .tmp1w, .sia(-1, .src0, .add_bit_size), ._, ._ },
27241 .{ ._, ._, .cmp, .tmp1w, .tmp0w, ._, ._ },
27242 .{ ._, ._e, .j, .@"0f", ._, ._, ._ },
27243 .{ .@"1:", ._, .mov, .dst0d, .tmp0d, ._, ._ },
27244 .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
27245 .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ },
2725627246 } },
2725727247 }, .{
27258 .required_features = .{ .sse2, null, null, null },
27259 .src_constraints = .{
27260 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27261 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27262 .any,
27263 },
27248 .src_constraints = .{ .{ .signed_int = .word }, .{ .signed_int = .word }, .any },
2726427249 .patterns = &.{
27265 .{ .src = .{ .to_mem, .to_mem, .none } },
27250 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27251 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27252 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2726627253 },
27267 .call_frame = .{ .alignment = .@"16" },
2726827254 .extra_temps = .{
27269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27270 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
27271 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
27272 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
27273 .{ .type = .f16, .kind = .{ .reg = .ax } },
27255 .{ .type = .i16, .kind = .{ .reg = .dx } },
27256 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27257 .unused,
27258 .unused,
27259 .unused,
2727427260 .unused,
2727527261 .unused,
2727627262 .unused,
......@@ -27278,149 +27264,122 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2727827264 .unused,
2727927265 .unused,
2728027266 },
27281 .dst_temps = .{ .mem, .unused },
27282 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27267 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27268 .clobbers = .{ .eflags = true },
2728327269 .each = .{ .once = &.{
27284 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27285 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
27286 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
27287 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
27288 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
27289 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
27290 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
27291 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
27292 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27293 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27270 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27271 .{ ._, .i_, .mul, .src1w, ._, ._, ._ },
27272 .{ ._, ._c, .j, .@"1f", ._, ._, ._ },
27273 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27274 .{ ._, ._r, .sa, .tmp1w, .sia(-1, .src0, .add_bit_size), ._, ._ },
27275 .{ ._, ._, .cmp, .tmp1w, .tmp0w, ._, ._ },
27276 .{ ._, ._e, .j, .@"0f", ._, ._, ._ },
27277 .{ .@"1:", ._, .mov, .dst0d, .tmp0d, ._, ._ },
27278 .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ },
27279 .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
2729427280 } },
2729527281 }, .{
27296 .required_features = .{ .sse, null, null, null },
27297 .src_constraints = .{
27298 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27299 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
27300 .any,
27301 },
27282 .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_unsigned_int = 16 }, .any },
2730227283 .patterns = &.{
27303 .{ .src = .{ .to_mem, .to_mem, .none } },
27284 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27285 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27286 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2730427287 },
27305 .call_frame = .{ .alignment = .@"16" },
2730627288 .extra_temps = .{
27307 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27308 .{ .type = .f16, .kind = .{ .reg = .ax } },
27309 .{ .type = .f32, .kind = .mem },
27310 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
27311 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
27312 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
27289 .{ .type = .u16, .kind = .{ .reg = .dx } },
27290 .unused,
27291 .unused,
27292 .unused,
27293 .unused,
27294 .unused,
2731327295 .unused,
2731427296 .unused,
2731527297 .unused,
2731627298 .unused,
2731727299 .unused,
2731827300 },
27319 .dst_temps = .{ .mem, .unused },
27320 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27301 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27302 .clobbers = .{ .eflags = true },
2732127303 .each = .{ .once = &.{
27322 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27323 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
27324 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
27325 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
27326 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
27327 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
27328 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
27329 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
27330 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
27331 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
27332 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
27333 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
27334 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27304 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27305 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
27306 .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ },
27307 .{ ._, ._, .@"or", .dst0d, .tmp0d, ._, ._ },
2733527308 } },
2733627309 }, .{
27337 .required_features = .{ .avx, null, null, null },
27338 .src_constraints = .{
27339 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
27340 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
27341 .any,
27342 },
27310 .required_features = .{ .bmi, .cmov, null, null },
27311 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
2734327312 .patterns = &.{
27344 .{ .src = .{ .to_sse, .mem, .none } },
27345 .{ .src = .{ .to_sse, .to_sse, .none } },
27346 },
27347 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27348 .each = .{ .once = &.{
27349 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
27350 } },
27351 }, .{
27352 .required_features = .{ .sse, null, null, null },
27353 .src_constraints = .{
27354 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
27355 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
27356 .any,
27313 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27314 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27315 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2735727316 },
27358 .patterns = &.{
27359 .{ .src = .{ .to_mut_sse, .mem, .none } },
27360 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
27317 .extra_temps = .{
27318 .{ .type = .u16, .kind = .{ .reg = .dx } },
27319 .{ .type = .u16, .kind = .{ .rc = .general_purpose } },
27320 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27321 .unused,
27322 .unused,
27323 .unused,
27324 .unused,
27325 .unused,
27326 .unused,
27327 .unused,
27328 .unused,
2736127329 },
2736227330 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27331 .clobbers = .{ .eflags = true },
2736327332 .each = .{ .once = &.{
27364 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
27333 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27334 .{ ._, ._, .mov, .tmp1d, .ua(.src0, .add_umax), ._, ._ },
27335 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
27336 .{ ._, ._, .andn, .tmp2d, .tmp1d, .dst0d, ._ },
27337 .{ ._, ._, .@"or", .tmp2w, .tmp0w, ._, ._ },
27338 .{ ._, ._nz, .cmov, .dst0d, .tmp1d, ._, ._ },
2736527339 } },
2736627340 }, .{
27367 .required_features = .{ .avx, null, null, null },
27368 .src_constraints = .{
27369 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
27370 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
27371 .any,
27372 },
27341 .required_features = .{ .cmov, .fast_imm16, null, null },
27342 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
2737327343 .patterns = &.{
27374 .{ .src = .{ .to_sse, .mem, .none } },
27375 .{ .src = .{ .to_sse, .to_sse, .none } },
27376 },
27377 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27378 .each = .{ .once = &.{
27379 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
27380 } },
27381 }, .{
27382 .required_features = .{ .sse, null, null, null },
27383 .src_constraints = .{
27384 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
27385 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
27386 .any,
27344 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27345 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27346 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2738727347 },
27388 .patterns = &.{
27389 .{ .src = .{ .to_mut_sse, .mem, .none } },
27390 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
27348 .extra_temps = .{
27349 .{ .type = .u16, .kind = .{ .reg = .dx } },
27350 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27351 .unused,
27352 .unused,
27353 .unused,
27354 .unused,
27355 .unused,
27356 .unused,
27357 .unused,
27358 .unused,
27359 .unused,
2739127360 },
2739227361 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27362 .clobbers = .{ .eflags = true },
2739327363 .each = .{ .once = &.{
27394 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
27395 } },
27396 }, .{
27397 .required_features = .{ .avx, null, null, null },
27398 .src_constraints = .{
27399 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
27400 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
27401 .any,
27402 },
27403 .patterns = &.{
27404 .{ .src = .{ .to_sse, .mem, .none } },
27405 .{ .src = .{ .to_sse, .to_sse, .none } },
27406 },
27407 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27408 .each = .{ .once = &.{
27409 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
27364 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27365 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
27366 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27367 .{ ._, ._, .@"and", .tmp1w, .sa(.src0, .add_2_smin), ._, ._ },
27368 .{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
27369 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
27370 .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
2741027371 } },
2741127372 }, .{
27412 .required_features = .{ .avx, null, null, null },
27413 .src_constraints = .{
27414 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
27415 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
27416 .any,
27417 },
27373 .required_features = .{ .cmov, null, null, null },
27374 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
2741827375 .patterns = &.{
27419 .{ .src = .{ .to_mem, .to_mem, .none } },
27376 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27377 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27378 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2742027379 },
2742127380 .extra_temps = .{
27422 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27423 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
27381 .{ .type = .u16, .kind = .{ .reg = .dx } },
27382 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2742427383 .unused,
2742527384 .unused,
2742627385 .unused,
......@@ -27431,29 +27390,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2743127390 .unused,
2743227391 .unused,
2743327392 },
27434 .dst_temps = .{ .mem, .unused },
27393 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2743527394 .clobbers = .{ .eflags = true },
2743627395 .each = .{ .once = &.{
27437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27438 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
27439 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
27440 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27441 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
27442 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27396 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27397 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
27398 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27399 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_2_smin), ._, ._ },
27400 .{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
27401 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
27402 .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
2744327403 } },
2744427404 }, .{
27445 .required_features = .{ .sse, null, null, null },
27446 .src_constraints = .{
27447 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
27448 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
27449 .any,
27450 },
27405 .required_features = .{ .fast_imm16, null, null, null },
27406 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
2745127407 .patterns = &.{
27452 .{ .src = .{ .to_mem, .to_mem, .none } },
27408 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27409 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27410 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2745327411 },
2745427412 .extra_temps = .{
27455 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27456 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
27413 .{ .type = .u16, .kind = .{ .reg = .dx } },
27414 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2745727415 .unused,
2745827416 .unused,
2745927417 .unused,
......@@ -27464,59 +27422,58 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2746427422 .unused,
2746527423 .unused,
2746627424 },
27467 .dst_temps = .{ .mem, .unused },
27425 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2746827426 .clobbers = .{ .eflags = true },
2746927427 .each = .{ .once = &.{
27470 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27471 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
27472 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
27473 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27474 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27475 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27428 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27429 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
27430 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27431 .{ ._, ._, .@"and", .tmp1w, .sa(.src0, .add_2_smin), ._, ._ },
27432 .{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
27433 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
27434 .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
2747627435 } },
2747727436 }, .{
27478 .required_features = .{ .avx, null, null, null },
27479 .src_constraints = .{
27480 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
27481 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
27482 .any,
27483 },
27437 .src_constraints = .{ .{ .unsigned_int = .word }, .{ .unsigned_int = .word }, .any },
2748427438 .patterns = &.{
27485 .{ .src = .{ .to_sse, .mem, .none } },
27486 .{ .src = .{ .to_sse, .to_sse, .none } },
27487 },
27488 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27489 .each = .{ .once = &.{
27490 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
27491 } },
27492 }, .{
27493 .required_features = .{ .sse2, null, null, null },
27494 .src_constraints = .{
27495 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
27496 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
27497 .any,
27439 .{ .src = .{ .{ .to_reg = .ax }, .mem, .none } },
27440 .{ .src = .{ .mem, .{ .to_reg = .ax }, .none }, .commute = .{ 0, 1 } },
27441 .{ .src = .{ .{ .to_reg = .ax }, .to_gpr, .none } },
2749827442 },
27499 .patterns = &.{
27500 .{ .src = .{ .to_mut_sse, .mem, .none } },
27501 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
27443 .extra_temps = .{
27444 .{ .type = .u16, .kind = .{ .reg = .dx } },
27445 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27446 .unused,
27447 .unused,
27448 .unused,
27449 .unused,
27450 .unused,
27451 .unused,
27452 .unused,
27453 .unused,
27454 .unused,
2750227455 },
2750327456 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27457 .clobbers = .{ .eflags = true },
2750427458 .each = .{ .once = &.{
27505 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
27459 .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
27460 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
27461 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27462 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_2_smin), ._, ._ },
27463 .{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
27464 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
27465 .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
2750627466 } },
2750727467 }, .{
27508 .required_features = .{ .x87, null, null, null },
27509 .src_constraints = .{
27510 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
27511 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
27512 .any,
27513 },
27468 .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any },
2751427469 .patterns = &.{
27515 .{ .src = .{ .mem, .mem, .none } },
27470 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
27471 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
27472 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
2751627473 },
2751727474 .extra_temps = .{
27518 .{ .type = .f64, .kind = .{ .reg = .st6 } },
27519 .{ .type = .f64, .kind = .{ .reg = .st7 } },
27475 .{ .type = .i32, .kind = .{ .reg = .edx } },
27476 .unused,
2752027477 .unused,
2752127478 .unused,
2752227479 .unused,
......@@ -27527,71 +27484,87 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2752727484 .unused,
2752827485 .unused,
2752927486 },
27530 .dst_temps = .{ .mem, .unused },
27487 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27488 .clobbers = .{ .eflags = true },
2753127489 .each = .{ .once = &.{
27532 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
27533 .{ ._, .f_, .div, .src1q, ._, ._, ._ },
27534 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
27490 .{ ._, .i_, .mul, .src1d, ._, ._, ._ },
27491 .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
27492 .{ ._, ._, .mov, .dst0d, .tmp0d, ._, ._ },
27493 .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ },
27494 .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
2753527495 } },
2753627496 }, .{
27537 .required_features = .{ .avx, null, null, null },
27538 .src_constraints = .{
27539 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
27540 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
27541 .any,
27542 },
27497 .src_constraints = .{ .{ .signed_int = .dword }, .{ .signed_int = .dword }, .any },
2754327498 .patterns = &.{
27544 .{ .src = .{ .to_sse, .mem, .none } },
27545 .{ .src = .{ .to_sse, .to_sse, .none } },
27546 },
27547 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27548 .each = .{ .once = &.{
27549 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
27550 } },
27551 }, .{
27552 .required_features = .{ .sse2, null, null, null },
27553 .src_constraints = .{
27554 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
27555 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
27556 .any,
27499 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
27500 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
27501 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
2755727502 },
27558 .patterns = &.{
27559 .{ .src = .{ .to_mut_sse, .mem, .none } },
27560 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
27503 .extra_temps = .{
27504 .{ .type = .i32, .kind = .{ .reg = .edx } },
27505 .{ .type = .i32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27506 .unused,
27507 .unused,
27508 .unused,
27509 .unused,
27510 .unused,
27511 .unused,
27512 .unused,
27513 .unused,
27514 .unused,
2756127515 },
2756227516 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27517 .clobbers = .{ .eflags = true },
2756327518 .each = .{ .once = &.{
27564 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
27519 .{ ._, .i_, .mul, .src1d, ._, ._, ._ },
27520 .{ ._, ._c, .j, .@"1f", ._, ._, ._ },
27521 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27522 .{ ._, ._r, .sa, .tmp1d, .sia(-1, .src0, .add_bit_size), ._, ._ },
27523 .{ ._, ._, .cmp, .tmp1d, .tmp0d, ._, ._ },
27524 .{ ._, ._e, .j, .@"0f", ._, ._, ._ },
27525 .{ .@"1:", ._, .mov, .dst0d, .tmp0d, ._, ._ },
27526 .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ },
27527 .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ },
2756527528 } },
2756627529 }, .{
27567 .required_features = .{ .avx, null, null, null },
27568 .src_constraints = .{
27569 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
27570 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
27571 .any,
27572 },
27530 .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_unsigned_int = 32 }, .any },
2757327531 .patterns = &.{
27574 .{ .src = .{ .to_sse, .mem, .none } },
27575 .{ .src = .{ .to_sse, .to_sse, .none } },
27532 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
27533 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
27534 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
2757627535 },
27577 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
27536 .extra_temps = .{
27537 .{ .type = .u32, .kind = .{ .reg = .edx } },
27538 .unused,
27539 .unused,
27540 .unused,
27541 .unused,
27542 .unused,
27543 .unused,
27544 .unused,
27545 .unused,
27546 .unused,
27547 .unused,
27548 },
27549 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27550 .clobbers = .{ .eflags = true },
2757827551 .each = .{ .once = &.{
27579 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
27552 .{ ._, ._, .mul, .src1d, ._, ._, ._ },
27553 .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ },
27554 .{ ._, ._, .@"or", .dst0d, .tmp0d, ._, ._ },
2758027555 } },
2758127556 }, .{
27582 .required_features = .{ .avx, null, null, null },
27583 .src_constraints = .{
27584 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
27585 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
27586 .any,
27587 },
27557 .required_features = .{ .bmi, .cmov, null, null },
27558 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
2758827559 .patterns = &.{
27589 .{ .src = .{ .to_mem, .to_mem, .none } },
27560 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
27561 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
27562 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
2759027563 },
2759127564 .extra_temps = .{
27592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27593 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
27594 .unused,
27565 .{ .type = .u32, .kind = .{ .reg = .edx } },
27566 .{ .type = .u32, .kind = .{ .rc = .general_purpose } },
27567 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2759527568 .unused,
2759627569 .unused,
2759727570 .unused,
......@@ -27601,29 +27574,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2760127574 .unused,
2760227575 .unused,
2760327576 },
27604 .dst_temps = .{ .mem, .unused },
27577 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2760527578 .clobbers = .{ .eflags = true },
2760627579 .each = .{ .once = &.{
27607 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27608 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
27609 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
27610 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
27611 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
27612 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27580 .{ ._, ._, .mov, .tmp1d, .ua(.src0, .add_umax), ._, ._ },
27581 .{ ._, ._, .mul, .src1d, ._, ._, ._ },
27582 .{ ._, ._, .andn, .tmp2d, .tmp1d, .dst0d, ._ },
27583 .{ ._, ._, .@"or", .tmp2d, .tmp0d, ._, ._ },
27584 .{ ._, ._nz, .cmov, .dst0d, .tmp1d, ._, ._ },
2761327585 } },
2761427586 }, .{
27615 .required_features = .{ .sse2, null, null, null },
27616 .src_constraints = .{
27617 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
27618 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
27619 .any,
27620 },
27587 .required_features = .{ .cmov, null, null, null },
27588 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
2762127589 .patterns = &.{
27622 .{ .src = .{ .to_mem, .to_mem, .none } },
27590 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
27591 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
27592 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
2762327593 },
2762427594 .extra_temps = .{
27625 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27626 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
27595 .{ .type = .u32, .kind = .{ .reg = .edx } },
27596 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2762727597 .unused,
2762827598 .unused,
2762927599 .unused,
......@@ -27634,30 +27604,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2763427604 .unused,
2763527605 .unused,
2763627606 },
27637 .dst_temps = .{ .mem, .unused },
27607 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2763827608 .clobbers = .{ .eflags = true },
2763927609 .each = .{ .once = &.{
27640 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27641 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
27642 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
27643 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27644 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27645 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27610 .{ ._, ._, .mul, .src1d, ._, ._, ._ },
27611 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27612 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_2_smin), ._, ._ },
27613 .{ ._, ._, .@"or", .tmp1d, .tmp0d, ._, ._ },
27614 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ },
27615 .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ },
2764627616 } },
2764727617 }, .{
27648 .required_features = .{ .x87, null, null, null },
27649 .src_constraints = .{
27650 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27651 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
27652 .any,
27653 },
27618 .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .unsigned_int = .dword }, .any },
2765427619 .patterns = &.{
27655 .{ .src = .{ .to_mem, .to_mem, .none } },
27620 .{ .src = .{ .{ .to_reg = .eax }, .mem, .none } },
27621 .{ .src = .{ .mem, .{ .to_reg = .eax }, .none }, .commute = .{ 0, 1 } },
27622 .{ .src = .{ .{ .to_reg = .eax }, .to_gpr, .none } },
2765627623 },
2765727624 .extra_temps = .{
27658 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27659 .{ .type = .f64, .kind = .{ .reg = .st6 } },
27660 .{ .type = .f64, .kind = .{ .reg = .st7 } },
27625 .{ .type = .u32, .kind = .{ .reg = .edx } },
27626 .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27627 .unused,
2766127628 .unused,
2766227629 .unused,
2766327630 .unused,
......@@ -27667,29 +27634,27 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2766727634 .unused,
2766827635 .unused,
2766927636 },
27670 .dst_temps = .{ .mem, .unused },
27637 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2767127638 .clobbers = .{ .eflags = true },
2767227639 .each = .{ .once = &.{
27673 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27674 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
27675 .{ ._, .f_, .div, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
27676 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
27677 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
27678 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27640 .{ ._, ._, .mul, .src1d, ._, ._, ._ },
27641 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
27642 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_2_smin), ._, ._ },
27643 .{ ._, ._, .@"or", .tmp1d, .tmp0d, ._, ._ },
27644 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
27645 .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ },
2767927646 } },
2768027647 }, .{
27681 .required_features = .{ .x87, null, null, null },
27682 .src_constraints = .{
27683 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
27684 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
27685 .any,
27686 },
27648 .required_features = .{ .@"64bit", null, null, null },
27649 .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 64 }, .any },
2768727650 .patterns = &.{
27688 .{ .src = .{ .mem, .mem, .none } },
27651 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
27652 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
27653 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
2768927654 },
2769027655 .extra_temps = .{
27691 .{ .type = .f80, .kind = .{ .reg = .st6 } },
27692 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27656 .{ .type = .i64, .kind = .{ .reg = .rdx } },
27657 .unused,
2769327658 .unused,
2769427659 .unused,
2769527660 .unused,
......@@ -27700,26 +27665,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2770027665 .unused,
2770127666 .unused,
2770227667 },
27703 .dst_temps = .{ .{ .rc = .x87 }, .unused },
27668 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27669 .clobbers = .{ .eflags = true },
2770427670 .each = .{ .once = &.{
27705 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
27706 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
27707 .{ ._, .f_p, .div, ._, ._, ._, ._ },
27708 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
27671 .{ ._, .i_, .mul, .src1q, ._, ._, ._ },
27672 .{ ._, ._nc, .j, .@"0f", ._, ._, ._ },
27673 .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_smax), ._, ._ },
27674 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
27675 .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ },
2770927676 } },
2771027677 }, .{
27711 .required_features = .{ .x87, null, null, null },
27712 .src_constraints = .{
27713 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
27714 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
27715 .any,
27716 },
27678 .required_features = .{ .@"64bit", null, null, null },
27679 .src_constraints = .{ .{ .signed_int = .qword }, .{ .signed_int = .qword }, .any },
2771727680 .patterns = &.{
27718 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
27681 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
27682 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
27683 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
2771927684 },
2772027685 .extra_temps = .{
27721 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27722 .unused,
27686 .{ .type = .i64, .kind = .{ .reg = .rdx } },
27687 .{ .type = .i64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2772327688 .unused,
2772427689 .unused,
2772527690 .unused,
......@@ -27730,25 +27695,29 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2773027695 .unused,
2773127696 .unused,
2773227697 },
27733 .dst_temps = .{ .{ .rc = .x87 }, .unused },
27698 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27699 .clobbers = .{ .eflags = true },
2773427700 .each = .{ .once = &.{
27735 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
27736 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
27737 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
27701 .{ ._, .i_, .mul, .src1q, ._, ._, ._ },
27702 .{ ._, ._c, .j, .@"1f", ._, ._, ._ },
27703 .{ ._, ._, .mov, .tmp1q, .dst0q, ._, ._ },
27704 .{ ._, ._r, .sa, .tmp1q, .sia(-1, .src0, .add_bit_size), ._, ._ },
27705 .{ ._, ._, .cmp, .tmp1q, .tmp0q, ._, ._ },
27706 .{ ._, ._e, .j, .@"0f", ._, ._, ._ },
27707 .{ .@"1:", ._, .mov, .dst0q, .ua(.src0, .add_smax), ._, ._ },
27708 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
27709 .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ },
2773827710 } },
2773927711 }, .{
27740 .required_features = .{ .x87, null, null, null },
27741 .src_constraints = .{
27742 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
27743 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
27744 .any,
27745 },
27712 .required_features = .{ .@"64bit", null, null, null },
27713 .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_unsigned_int = 64 }, .any },
2774627714 .patterns = &.{
27747 .{ .src = .{ .mem, .to_x87, .none } },
27748 .{ .src = .{ .to_x87, .to_x87, .none } },
27715 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
27716 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
27717 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
2774927718 },
2775027719 .extra_temps = .{
27751 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27720 .{ .type = .u64, .kind = .{ .reg = .rdx } },
2775227721 .unused,
2775327722 .unused,
2775427723 .unused,
......@@ -27760,26 +27729,25 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2776027729 .unused,
2776127730 .unused,
2776227731 },
27763 .dst_temps = .{ .{ .rc = .x87 }, .unused },
27732 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27733 .clobbers = .{ .eflags = true },
2776427734 .each = .{ .once = &.{
27765 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
27766 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
27767 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
27735 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
27736 .{ ._, ._, .sbb, .tmp0q, .tmp0q, ._, ._ },
27737 .{ ._, ._, .@"or", .dst0q, .tmp0q, ._, ._ },
2776827738 } },
2776927739 }, .{
27770 .required_features = .{ .x87, null, null, null },
27771 .src_constraints = .{
27772 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27773 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
27774 .any,
27775 },
27740 .required_features = .{ .@"64bit", .bmi, .cmov, null },
27741 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
2777627742 .patterns = &.{
27777 .{ .src = .{ .to_mem, .to_mem, .none } },
27743 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
27744 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
27745 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
2777827746 },
2777927747 .extra_temps = .{
27780 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27781 .{ .type = .f80, .kind = .{ .reg = .st6 } },
27782 .{ .type = .f80, .kind = .{ .reg = .st7 } },
27748 .{ .type = .u64, .kind = .{ .reg = .rdx } },
27749 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27750 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2778327751 .unused,
2778427752 .unused,
2778527753 .unused,
......@@ -27789,31 +27757,26 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2778927757 .unused,
2779027758 .unused,
2779127759 },
27792 .dst_temps = .{ .mem, .unused },
27760 .dst_temps = .{ .{ .ref = .src0 }, .unused },
2779327761 .clobbers = .{ .eflags = true },
2779427762 .each = .{ .once = &.{
27795 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27796 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
27797 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
27798 .{ ._, .f_p, .div, ._, ._, ._, ._ },
27799 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
27800 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27801 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27763 .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
27764 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
27765 .{ ._, ._, .andn, .tmp2q, .tmp1q, .dst0q, ._ },
27766 .{ ._, ._, .@"or", .tmp2q, .tmp0q, ._, ._ },
27767 .{ ._, ._nz, .cmov, .dst0q, .tmp1q, ._, ._ },
2780227768 } },
2780327769 }, .{
27804 .required_features = .{ .sse, null, null, null },
27805 .src_constraints = .{
27806 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
27807 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
27808 .any,
27809 },
27770 .required_features = .{ .@"64bit", .cmov, null, null },
27771 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
2781027772 .patterns = &.{
27811 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
27773 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
27774 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
27775 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
2781227776 },
27813 .call_frame = .{ .alignment = .@"16" },
2781427777 .extra_temps = .{
27815 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
27816 .unused,
27778 .{ .type = .u64, .kind = .{ .reg = .rdx } },
27779 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
2781727780 .unused,
2781827781 .unused,
2781927782 .unused,
......@@ -27825,26 +27788,28 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2782527788 .unused,
2782627789 },
2782727790 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27828 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27791 .clobbers = .{ .eflags = true },
2782927792 .each = .{ .once = &.{
27830 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
27793 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
27794 .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_2_smin), ._, ._ },
27795 .{ ._, ._, .@"and", .tmp1q, .dst0q, ._, ._ },
27796 .{ ._, ._, .@"or", .tmp1q, .tmp0q, ._, ._ },
27797 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
27798 .{ ._, ._nz, .cmov, .dst0q, .tmp0q, ._, ._ },
2783127799 } },
2783227800 }, .{
27833 .required_features = .{ .avx, null, null, null },
27834 .src_constraints = .{
27835 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27836 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27837 .any,
27838 },
27801 .required_features = .{ .@"64bit", null, null, null },
27802 .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .unsigned_int = .qword }, .any },
2783927803 .patterns = &.{
27840 .{ .src = .{ .to_mem, .to_mem, .none } },
27804 .{ .src = .{ .{ .to_reg = .rax }, .mem, .none } },
27805 .{ .src = .{ .mem, .{ .to_reg = .rax }, .none }, .commute = .{ 0, 1 } },
27806 .{ .src = .{ .{ .to_reg = .rax }, .to_gpr, .none } },
2784127807 },
27842 .call_frame = .{ .alignment = .@"16" },
2784327808 .extra_temps = .{
27844 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27845 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
27846 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
27847 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
27809 .{ .type = .u64, .kind = .{ .reg = .rdx } },
27810 .{ .type = .u64, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
27811 .unused,
27812 .unused,
2784827813 .unused,
2784927814 .unused,
2785027815 .unused,
......@@ -27853,28 +27818,5280 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
2785327818 .unused,
2785427819 .unused,
2785527820 },
27856 .dst_temps = .{ .mem, .unused },
27857 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
27821 .dst_temps = .{ .{ .ref = .src0 }, .unused },
27822 .clobbers = .{ .eflags = true },
2785827823 .each = .{ .once = &.{
27859 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
27860 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
27861 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
27862 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
27863 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
27864 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
27865 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
27824 .{ ._, ._, .mul, .src1q, ._, ._, ._ },
27825 .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_2_smin), ._, ._ },
27826 .{ ._, ._, .@"and", .tmp1q, .dst0q, ._, ._ },
27827 .{ ._, ._, .@"or", .tmp1q, .tmp0q, ._, ._ },
27828 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
27829 .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
2786627830 } },
2786727831 }, .{
27868 .required_features = .{ .sse2, null, null, null },
27832 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
2786927833 .src_constraints = .{
27870 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27871 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
27834 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
27835 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
2787227836 .any,
2787327837 },
2787427838 .patterns = &.{
2787527839 .{ .src = .{ .to_mem, .to_mem, .none } },
2787627840 },
27877 .call_frame = .{ .alignment = .@"16" },
27841 .extra_temps = .{
27842 .{ .type = .isize, .kind = .{ .reg = .rdi } },
27843 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27844 .{ .type = .usize, .kind = .{ .reg = .rcx } },
27845 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27846 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27847 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27848 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27849 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27850 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27851 .{ .type = .u64, .kind = .{ .reg = .rax } },
27852 .{ .type = .u64, .kind = .{ .reg = .rdx } },
27853 },
27854 .dst_temps = .{ .mem, .unused },
27855 .clobbers = .{ .eflags = true },
27856 .each = .{ .once = &.{
27857 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
27858 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
27859 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
27860 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
27861 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
27862 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
27863 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
27864 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
27865 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
27866 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
27867 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
27868 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
27869 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
27870 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
27871 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
27872 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
27873 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
27874 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
27875 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
27876 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
27877 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
27878 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
27879 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
27880 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
27881 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
27882 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
27883 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
27884 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
27885 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
27886 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
27887 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
27888 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
27889 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
27890 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
27891 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
27892 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
27893 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
27894 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
27895 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
27896 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
27897 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
27898 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
27899 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
27900 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
27901 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
27902 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
27903 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
27904 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
27905 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
27906 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
27907 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
27908 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
27909 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
27910 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
27911 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
27912 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27913 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
27914 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
27915 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
27916 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
27917 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
27918 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
27919 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
27920 .{ ._, ._c, .st, ._, ._, ._, ._ },
27921 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
27922 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
27923 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
27924 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
27925 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
27926 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
27927 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
27928 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
27929 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
27930 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
27931 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
27932 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
27933 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
27934 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
27935 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
27936 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
27937 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
27938 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
27939 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
27940 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
27941 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
27942 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
27943 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
27944 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
27945 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
27946 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
27947 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
27948 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
27949 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
27950 } },
27951 }, .{
27952 .required_features = .{ .@"64bit", .cmov, null, null },
27953 .src_constraints = .{
27954 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
27955 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
27956 .any,
27957 },
27958 .patterns = &.{
27959 .{ .src = .{ .to_mem, .to_mem, .none } },
27960 },
27961 .extra_temps = .{
27962 .{ .type = .isize, .kind = .{ .reg = .rdi } },
27963 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27964 .{ .type = .usize, .kind = .{ .reg = .rcx } },
27965 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27966 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27967 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
27968 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27969 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
27970 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
27971 .{ .type = .u64, .kind = .{ .reg = .rax } },
27972 .{ .type = .u64, .kind = .{ .reg = .rdx } },
27973 },
27974 .dst_temps = .{ .mem, .unused },
27975 .clobbers = .{ .eflags = true },
27976 .each = .{ .once = &.{
27977 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
27978 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
27979 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
27980 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
27981 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
27982 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
27983 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
27984 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
27985 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
27986 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
27987 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
27988 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
27989 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
27990 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
27991 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
27992 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
27993 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
27994 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
27995 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
27996 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
27997 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
27998 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
27999 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28000 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28001 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28002 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28003 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28004 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28005 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28006 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28007 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28008 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28009 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28010 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28011 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28012 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28013 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28014 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
28015 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28016 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28017 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28018 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28019 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28020 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28021 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28022 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
28023 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28024 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
28025 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28026 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28027 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28028 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28029 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28030 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28031 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28032 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28033 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28034 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28035 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28036 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28037 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28038 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28039 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28040 .{ ._, ._c, .st, ._, ._, ._, ._ },
28041 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28042 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28043 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28044 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28045 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28046 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28047 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28048 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28049 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28050 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28051 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28052 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28053 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28054 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28055 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28056 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28057 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28058 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28059 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28060 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28061 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28062 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28063 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28064 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28065 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28066 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28067 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28068 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28069 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
28070 } },
28071 }, .{
28072 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28073 .src_constraints = .{
28074 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
28075 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
28076 .any,
28077 },
28078 .patterns = &.{
28079 .{ .src = .{ .to_mem, .to_mem, .none } },
28080 },
28081 .extra_temps = .{
28082 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28083 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28084 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28085 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28086 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28088 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28089 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28090 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28091 .{ .type = .u64, .kind = .{ .reg = .rax } },
28092 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28093 },
28094 .dst_temps = .{ .mem, .unused },
28095 .clobbers = .{ .eflags = true },
28096 .each = .{ .once = &.{
28097 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28098 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28099 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28100 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28101 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28102 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
28103 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
28104 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28105 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28106 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28107 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28108 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28109 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28110 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28111 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28112 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28113 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28114 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28115 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28116 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28117 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28118 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28119 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28120 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28121 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28122 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28123 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28124 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28125 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28126 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28127 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28128 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28129 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28130 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28131 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28132 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28133 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28134 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
28135 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28136 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28137 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28138 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28139 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28140 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28141 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28142 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28143 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28144 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
28145 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28146 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28147 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28148 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28149 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28150 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28151 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28152 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28153 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28154 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28155 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28156 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28157 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28158 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28159 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28160 .{ ._, ._c, .st, ._, ._, ._, ._ },
28161 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28162 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28163 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28164 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28165 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28166 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28167 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28168 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28169 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28170 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28171 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28172 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28173 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28174 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28175 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28176 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28177 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28178 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28179 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28180 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28181 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28182 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28183 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28184 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28185 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28186 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28187 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28188 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28189 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
28190 } },
28191 }, .{
28192 .required_features = .{ .@"64bit", null, null, null },
28193 .src_constraints = .{
28194 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
28195 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
28196 .any,
28197 },
28198 .patterns = &.{
28199 .{ .src = .{ .to_mem, .to_mem, .none } },
28200 },
28201 .extra_temps = .{
28202 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28203 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28204 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28205 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28206 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28207 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28208 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28209 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28210 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28211 .{ .type = .u64, .kind = .{ .reg = .rax } },
28212 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28213 },
28214 .dst_temps = .{ .mem, .unused },
28215 .clobbers = .{ .eflags = true },
28216 .each = .{ .once = &.{
28217 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28218 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28219 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28220 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28221 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28222 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
28223 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
28224 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28225 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28226 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28227 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28228 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28229 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28230 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28231 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28232 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28233 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28234 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28235 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28236 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28237 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28238 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28239 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28240 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28241 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28242 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28243 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28244 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28245 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28246 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28247 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28248 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28249 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28250 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28251 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28252 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28253 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28254 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
28255 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28256 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28257 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28258 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28259 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28260 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28261 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28262 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28263 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28264 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
28265 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28266 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28267 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28268 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28269 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28270 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28271 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28272 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28273 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28274 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28275 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28276 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28277 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28278 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28279 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28280 .{ ._, ._c, .st, ._, ._, ._, ._ },
28281 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28282 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28283 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28284 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28285 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28286 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28287 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28288 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28289 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28290 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28291 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28292 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28293 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28294 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28295 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28296 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28297 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28298 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28299 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28300 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28301 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28302 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28303 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28304 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28305 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28306 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
28307 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28308 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28309 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
28310 } },
28311 }, .{
28312 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
28313 .src_constraints = .{
28314 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28315 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28316 .any,
28317 },
28318 .patterns = &.{
28319 .{ .src = .{ .to_mem, .to_mem, .none } },
28320 },
28321 .extra_temps = .{
28322 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28323 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28324 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28325 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28326 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28327 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28328 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28329 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28330 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28331 .{ .type = .u64, .kind = .{ .reg = .rax } },
28332 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28333 },
28334 .dst_temps = .{ .mem, .unused },
28335 .clobbers = .{ .eflags = true },
28336 .each = .{ .once = &.{
28337 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28338 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28339 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28340 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28341 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28342 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28343 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28344 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28345 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28346 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28347 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28348 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28349 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28350 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28351 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28352 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28353 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28354 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28355 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28356 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28357 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28358 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28359 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28360 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28361 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28362 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28363 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28364 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28365 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28366 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28367 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28368 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28369 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28370 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28371 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28372 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
28373 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28374 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28375 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28376 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28377 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28378 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28379 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28380 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
28381 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28382 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
28383 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28384 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28385 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28386 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28387 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28388 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28389 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28390 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28391 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28392 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28393 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28394 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28395 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28396 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28397 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28398 .{ ._, ._c, .st, ._, ._, ._, ._ },
28399 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28400 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28401 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28402 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28403 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28404 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28405 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28406 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28407 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28408 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28409 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28410 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28411 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28412 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28413 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28414 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28415 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28416 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28417 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28418 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28419 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
28420 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
28421 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
28422 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
28423 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
28424 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
28425 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28426 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28427 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28428 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28429 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28430 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28431 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28432 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28433 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
28434 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
28435 } },
28436 }, .{
28437 .required_features = .{ .@"64bit", .cmov, null, null },
28438 .src_constraints = .{
28439 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28440 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28441 .any,
28442 },
28443 .patterns = &.{
28444 .{ .src = .{ .to_mem, .to_mem, .none } },
28445 },
28446 .extra_temps = .{
28447 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28448 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28449 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28450 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28451 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28452 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28453 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28454 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28455 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28456 .{ .type = .u64, .kind = .{ .reg = .rax } },
28457 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28458 },
28459 .dst_temps = .{ .mem, .unused },
28460 .clobbers = .{ .eflags = true },
28461 .each = .{ .once = &.{
28462 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28463 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28464 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28465 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28466 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28467 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28468 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28469 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28470 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28471 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28472 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28473 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28474 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28475 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28476 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28477 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28478 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28479 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28480 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28481 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28482 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28483 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28484 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28485 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28486 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28487 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28488 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28489 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28490 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28491 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28492 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28493 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28494 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28495 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28496 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28497 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
28498 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28499 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28500 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28501 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28502 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28503 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28504 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28505 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
28506 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28507 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
28508 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28509 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28510 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28511 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28512 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28513 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28514 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28515 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28516 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28517 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28518 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28519 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28520 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28521 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28522 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28523 .{ ._, ._c, .st, ._, ._, ._, ._ },
28524 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28525 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28526 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28527 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28528 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28529 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28530 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28531 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28532 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28533 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28534 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28535 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28536 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28537 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28538 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28539 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28540 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28541 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28542 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28543 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28544 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
28545 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
28546 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
28547 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
28548 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
28549 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
28550 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28551 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28552 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28553 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28554 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28555 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28556 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28557 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28558 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
28559 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
28560 } },
28561 }, .{
28562 .required_features = .{ .@"64bit", .slow_incdec, null, null },
28563 .src_constraints = .{
28564 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28565 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28566 .any,
28567 },
28568 .patterns = &.{
28569 .{ .src = .{ .to_mem, .to_mem, .none } },
28570 },
28571 .extra_temps = .{
28572 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28573 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28574 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28575 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28576 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28577 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28578 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28579 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28580 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28581 .{ .type = .u64, .kind = .{ .reg = .rax } },
28582 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28583 },
28584 .dst_temps = .{ .mem, .unused },
28585 .clobbers = .{ .eflags = true },
28586 .each = .{ .once = &.{
28587 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28588 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28589 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28590 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28591 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28592 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28593 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28594 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28595 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28596 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28597 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28598 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28599 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28600 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28601 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28602 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28603 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28604 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28605 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28606 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28607 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28608 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28609 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28610 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28611 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28612 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28613 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28614 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28615 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28616 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28617 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28618 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28619 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28620 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28621 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28622 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
28623 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28624 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28625 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28626 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28627 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28628 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28629 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28630 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28631 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28632 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
28633 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28634 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28635 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28636 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28637 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28638 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28639 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28640 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28641 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28642 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28643 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28644 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28645 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28646 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28647 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28648 .{ ._, ._c, .st, ._, ._, ._, ._ },
28649 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28650 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28651 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28652 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28653 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28654 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28655 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28656 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28657 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28658 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28659 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28660 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28661 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28662 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28663 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28664 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28665 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28666 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28667 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28668 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28669 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
28670 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
28671 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
28672 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
28673 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
28674 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
28675 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28676 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28677 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28678 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28679 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28680 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28681 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28682 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28683 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
28684 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
28685 } },
28686 }, .{
28687 .required_features = .{ .@"64bit", null, null, null },
28688 .src_constraints = .{
28689 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28690 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
28691 .any,
28692 },
28693 .patterns = &.{
28694 .{ .src = .{ .to_mem, .to_mem, .none } },
28695 },
28696 .extra_temps = .{
28697 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28698 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28699 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28700 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28701 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28702 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28703 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28704 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28705 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28706 .{ .type = .u64, .kind = .{ .reg = .rax } },
28707 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28708 },
28709 .dst_temps = .{ .mem, .unused },
28710 .clobbers = .{ .eflags = true },
28711 .each = .{ .once = &.{
28712 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28713 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28714 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28715 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28716 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28717 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28718 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28719 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28720 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28721 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28722 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28723 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28724 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28725 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28726 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28727 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28728 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28729 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28730 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28731 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28732 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28733 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28734 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28735 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28736 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28737 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28738 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28739 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28740 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28741 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28742 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28743 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28744 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28745 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28746 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
28747 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
28748 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28749 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28750 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28751 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28752 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28753 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28754 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28755 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28756 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28757 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
28758 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28759 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28760 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28761 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28762 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28763 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28764 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28765 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28766 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28767 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28768 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28769 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28770 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28771 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28772 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28773 .{ ._, ._c, .st, ._, ._, ._, ._ },
28774 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28775 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28776 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28777 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28778 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28779 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28780 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28781 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28782 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28783 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28784 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28785 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28786 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28787 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28788 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28789 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28790 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28791 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28792 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28793 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28794 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
28795 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
28796 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
28797 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
28798 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
28799 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
28800 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28801 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28802 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28803 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28804 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28805 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28806 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28807 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .ui(1), ._ },
28808 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
28809 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
28810 } },
28811 }, .{
28812 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
28813 .src_constraints = .{
28814 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
28815 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
28816 .any,
28817 },
28818 .patterns = &.{
28819 .{ .src = .{ .to_mem, .to_mem, .none } },
28820 },
28821 .extra_temps = .{
28822 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28823 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28824 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28825 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28826 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28827 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28828 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28829 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28830 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28831 .{ .type = .u64, .kind = .{ .reg = .rax } },
28832 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28833 },
28834 .dst_temps = .{ .mem, .unused },
28835 .clobbers = .{ .eflags = true },
28836 .each = .{ .once = &.{
28837 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28838 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28839 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28840 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28841 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28842 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28843 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28844 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28845 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28846 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28847 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28848 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28849 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28850 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28851 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28852 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28853 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28854 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28855 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28856 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28857 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28858 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28859 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28860 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28861 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28862 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28863 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28864 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28865 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28866 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28867 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28868 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28869 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
28870 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
28871 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
28872 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
28873 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
28874 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
28875 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
28876 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28877 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
28878 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
28879 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
28880 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
28881 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28882 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
28883 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28884 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
28885 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28886 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28887 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28888 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28889 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28890 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28891 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
28892 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
28893 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28894 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
28895 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28896 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
28897 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
28898 .{ ._, ._c, .st, ._, ._, ._, ._ },
28899 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28900 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28901 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
28902 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
28903 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
28904 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
28905 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
28906 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
28907 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
28908 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
28909 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
28910 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28911 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28912 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
28913 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
28914 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
28915 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
28916 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
28917 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
28918 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
28919 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
28920 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
28921 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
28922 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
28923 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
28924 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
28925 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
28926 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
28927 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
28928 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
28929 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
28930 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
28931 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
28932 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
28933 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
28934 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
28935 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
28936 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
28937 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
28938 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
28939 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
28940 } },
28941 }, .{
28942 .required_features = .{ .@"64bit", .cmov, null, null },
28943 .src_constraints = .{
28944 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
28945 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
28946 .any,
28947 },
28948 .patterns = &.{
28949 .{ .src = .{ .to_mem, .to_mem, .none } },
28950 },
28951 .extra_temps = .{
28952 .{ .type = .isize, .kind = .{ .reg = .rdi } },
28953 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28954 .{ .type = .usize, .kind = .{ .reg = .rcx } },
28955 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28956 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28957 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
28958 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28959 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
28960 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
28961 .{ .type = .u64, .kind = .{ .reg = .rax } },
28962 .{ .type = .u64, .kind = .{ .reg = .rdx } },
28963 },
28964 .dst_temps = .{ .mem, .unused },
28965 .clobbers = .{ .eflags = true },
28966 .each = .{ .once = &.{
28967 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
28968 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
28969 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
28970 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
28971 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
28972 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
28973 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
28974 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
28975 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
28976 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
28977 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
28978 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
28979 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
28980 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
28981 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
28982 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
28983 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28984 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
28985 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
28986 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
28987 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
28988 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
28989 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
28990 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
28991 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
28992 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
28993 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
28994 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
28995 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
28996 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
28997 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
28998 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
28999 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29000 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29001 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
29002 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
29003 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29004 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29005 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29006 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29007 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29008 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29009 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29010 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
29011 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29012 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
29013 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29014 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29015 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29016 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29017 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29018 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29019 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29020 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29021 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29022 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29023 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29024 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29025 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29026 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29027 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29028 .{ ._, ._c, .st, ._, ._, ._, ._ },
29029 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29030 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29031 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29032 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29033 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29034 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29035 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29036 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29037 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29038 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29039 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29040 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29041 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29042 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29043 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29044 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29045 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29046 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29047 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29048 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29049 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29050 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29051 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29052 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29053 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29054 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29055 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29056 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29057 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29058 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29059 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29060 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29061 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29062 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29063 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29064 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29065 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29066 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29067 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29068 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
29069 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29070 } },
29071 }, .{
29072 .required_features = .{ .@"64bit", .slow_incdec, null, null },
29073 .src_constraints = .{
29074 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
29075 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
29076 .any,
29077 },
29078 .patterns = &.{
29079 .{ .src = .{ .to_mem, .to_mem, .none } },
29080 },
29081 .extra_temps = .{
29082 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29083 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29084 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29085 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29086 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29087 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29088 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29089 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29090 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29091 .{ .type = .u64, .kind = .{ .reg = .rax } },
29092 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29093 },
29094 .dst_temps = .{ .mem, .unused },
29095 .clobbers = .{ .eflags = true },
29096 .each = .{ .once = &.{
29097 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29098 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29099 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29100 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29101 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29102 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29103 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29104 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29105 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29106 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29107 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29108 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29109 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29110 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29111 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29112 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29113 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29114 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29115 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29116 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29117 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29118 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29119 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29120 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29121 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29122 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29123 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29124 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29125 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29126 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29127 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29128 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29129 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29130 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29131 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
29132 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
29133 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29134 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29135 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29136 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29137 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29138 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29139 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29140 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29141 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29142 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
29143 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29144 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29145 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29146 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29147 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29148 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29149 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29150 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29151 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29152 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29153 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29154 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29155 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29156 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29157 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29158 .{ ._, ._c, .st, ._, ._, ._, ._ },
29159 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29160 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29161 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29162 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29163 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29164 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29165 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29166 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29167 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29168 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29169 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29170 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29171 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29172 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29173 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29174 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29175 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29176 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29177 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29178 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29179 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29180 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29181 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29182 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29183 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29184 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29185 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29186 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29187 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29188 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29189 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29190 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29191 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29192 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29193 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29194 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29195 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29196 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29197 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29198 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
29199 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29200 } },
29201 }, .{
29202 .required_features = .{ .@"64bit", null, null, null },
29203 .src_constraints = .{
29204 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
29205 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 1 } },
29206 .any,
29207 },
29208 .patterns = &.{
29209 .{ .src = .{ .to_mem, .to_mem, .none } },
29210 },
29211 .extra_temps = .{
29212 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29213 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29214 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29215 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29216 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29217 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29218 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29219 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29220 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29221 .{ .type = .u64, .kind = .{ .reg = .rax } },
29222 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29223 },
29224 .dst_temps = .{ .mem, .unused },
29225 .clobbers = .{ .eflags = true },
29226 .each = .{ .once = &.{
29227 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29228 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29229 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29230 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29231 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29232 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29233 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29234 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29235 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29236 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29237 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29238 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29239 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29240 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29241 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29242 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29243 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29244 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29245 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29246 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29247 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29248 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29249 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29250 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29251 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29252 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29253 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29254 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29255 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29256 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29257 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29258 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29259 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29260 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29261 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
29262 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
29263 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29264 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29265 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29266 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29267 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29268 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29269 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29270 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29271 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29272 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
29273 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29274 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29275 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29276 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29277 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29278 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29279 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29280 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29281 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29282 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29283 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29284 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29285 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29286 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29287 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29288 .{ ._, ._c, .st, ._, ._, ._, ._ },
29289 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29290 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29291 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29292 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29293 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29294 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29295 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29296 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29297 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29298 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29299 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29300 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29301 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29302 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29303 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29304 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29305 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29306 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29307 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29308 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29309 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29310 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29311 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29312 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29313 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29314 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29315 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29316 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29317 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29318 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29319 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29320 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29321 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29322 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29323 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29324 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29325 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29326 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29327 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29328 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ },
29329 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29330 } },
29331 }, .{
29332 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
29333 .src_constraints = .{
29334 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29335 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29336 .any,
29337 },
29338 .patterns = &.{
29339 .{ .src = .{ .to_mem, .to_mem, .none } },
29340 },
29341 .extra_temps = .{
29342 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29343 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29344 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29345 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29346 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29347 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29348 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29349 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29350 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29351 .{ .type = .u64, .kind = .{ .reg = .rax } },
29352 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29353 },
29354 .dst_temps = .{ .mem, .unused },
29355 .clobbers = .{ .eflags = true },
29356 .each = .{ .once = &.{
29357 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29358 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29359 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29360 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29361 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29362 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29363 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29364 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29365 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29366 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29367 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29368 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29369 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29370 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29371 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29372 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29373 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29374 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29375 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29376 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29377 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29378 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29379 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29380 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29381 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29382 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29383 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29384 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29385 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29386 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29387 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29388 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29389 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29390 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29391 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
29392 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
29393 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29394 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29395 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29396 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29397 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29398 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29399 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29400 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
29401 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29402 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
29403 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29404 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29405 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29406 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29407 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29408 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29409 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29410 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29411 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29412 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29413 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29414 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29415 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29416 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29417 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29418 .{ ._, ._c, .st, ._, ._, ._, ._ },
29419 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29420 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29421 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29422 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29423 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29424 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29425 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29426 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29427 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29428 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29429 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29430 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29431 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29432 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29433 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29434 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29435 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29436 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29437 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29438 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29439 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29440 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29441 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29442 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29443 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29444 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29445 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29446 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29447 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29448 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29449 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29450 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29451 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29452 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29453 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29454 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29455 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29456 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29457 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29458 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
29459 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
29460 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29461 } },
29462 }, .{
29463 .required_features = .{ .@"64bit", .cmov, null, null },
29464 .src_constraints = .{
29465 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29466 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29467 .any,
29468 },
29469 .patterns = &.{
29470 .{ .src = .{ .to_mem, .to_mem, .none } },
29471 },
29472 .extra_temps = .{
29473 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29474 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29475 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29476 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29477 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29478 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29479 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29480 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29481 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29482 .{ .type = .u64, .kind = .{ .reg = .rax } },
29483 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29484 },
29485 .dst_temps = .{ .mem, .unused },
29486 .clobbers = .{ .eflags = true },
29487 .each = .{ .once = &.{
29488 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29489 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29490 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29491 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29492 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29493 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29494 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29495 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29496 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29497 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29498 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29499 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29500 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29501 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29502 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29503 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29504 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29505 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29506 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29507 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29508 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29509 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29510 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29511 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29512 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29513 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29514 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29515 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29516 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29517 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29518 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29519 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29520 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29521 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29522 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
29523 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
29524 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29525 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29526 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29527 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29528 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29529 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29530 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29531 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
29532 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29533 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
29534 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29535 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29536 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29537 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29538 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29539 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29540 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29541 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29542 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29543 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29544 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29545 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29546 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29547 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29548 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29549 .{ ._, ._c, .st, ._, ._, ._, ._ },
29550 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29551 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29552 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29553 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29554 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29555 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29556 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29557 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29558 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29559 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29560 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29561 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29562 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29563 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29564 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29565 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29566 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29567 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29568 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29569 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29570 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29571 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29572 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29573 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29574 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29575 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29576 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29577 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29578 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29579 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29580 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29581 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29582 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29583 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29584 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29585 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29586 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29587 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29588 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29589 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
29590 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
29591 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29592 } },
29593 }, .{
29594 .required_features = .{ .@"64bit", .slow_incdec, null, null },
29595 .src_constraints = .{
29596 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29597 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29598 .any,
29599 },
29600 .patterns = &.{
29601 .{ .src = .{ .to_mem, .to_mem, .none } },
29602 },
29603 .extra_temps = .{
29604 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29605 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29606 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29607 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29608 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29609 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29610 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29611 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29612 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29613 .{ .type = .u64, .kind = .{ .reg = .rax } },
29614 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29615 },
29616 .dst_temps = .{ .mem, .unused },
29617 .clobbers = .{ .eflags = true },
29618 .each = .{ .once = &.{
29619 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29620 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29621 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29622 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29623 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29624 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29625 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29626 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29627 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29628 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29629 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29630 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29631 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29632 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29633 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29634 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29635 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29636 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29637 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29638 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29639 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29640 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29641 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29642 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29643 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29644 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29645 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29646 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29647 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29648 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29649 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29650 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29651 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29652 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29653 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
29654 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
29655 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29656 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29657 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29658 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29659 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29660 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29661 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29662 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29663 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29664 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
29665 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29666 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29667 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29668 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29669 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29670 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29671 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29672 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29673 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29674 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29675 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29676 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29677 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29678 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29679 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29680 .{ ._, ._c, .st, ._, ._, ._, ._ },
29681 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29682 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29683 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29684 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29685 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29686 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29687 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29688 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29689 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29690 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29691 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29692 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29693 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29694 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29695 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29696 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29697 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29698 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29699 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29700 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29701 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29702 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29703 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29704 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29705 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29706 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29707 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29708 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29709 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29710 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29711 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29712 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29713 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29714 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29715 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29716 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29717 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29718 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29719 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29720 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
29721 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
29722 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29723 } },
29724 }, .{
29725 .required_features = .{ .@"64bit", null, null, null },
29726 .src_constraints = .{
29727 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29728 .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } },
29729 .any,
29730 },
29731 .patterns = &.{
29732 .{ .src = .{ .to_mem, .to_mem, .none } },
29733 },
29734 .extra_temps = .{
29735 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29736 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29737 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29738 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29739 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29740 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29741 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29742 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29743 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29744 .{ .type = .u64, .kind = .{ .reg = .rax } },
29745 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29746 },
29747 .dst_temps = .{ .mem, .unused },
29748 .clobbers = .{ .eflags = true },
29749 .each = .{ .once = &.{
29750 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29751 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29752 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29753 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29754 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29755 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29756 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29757 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29758 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29759 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29760 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29761 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29762 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29763 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29764 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29765 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29766 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29767 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29768 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29769 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29770 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29771 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29772 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29773 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29774 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29775 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29776 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29777 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29778 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29779 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29780 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29781 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29782 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29783 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29784 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
29785 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
29786 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29787 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29788 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29789 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29790 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29791 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29792 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29793 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29794 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29795 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
29796 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29797 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29798 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29799 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29800 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29801 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29802 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29803 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29804 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29805 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29806 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29807 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29808 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29809 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29810 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29811 .{ ._, ._c, .st, ._, ._, ._, ._ },
29812 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29813 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29814 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29815 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29816 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29817 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29818 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29819 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29820 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29821 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29822 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29823 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29824 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29825 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29826 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29827 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29828 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29829 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29830 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29831 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29832 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -16), ._, ._ },
29833 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29834 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29835 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29836 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29837 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp0q, ._, ._ },
29838 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
29839 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29840 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29841 .{ ._, ._, .xor, .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
29842 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29843 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29844 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29845 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29846 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29847 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29848 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29849 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
29850 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29851 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
29852 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp9q, ._, ._ },
29853 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29854 } },
29855 }, .{
29856 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
29857 .src_constraints = .{
29858 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
29859 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
29860 .any,
29861 },
29862 .patterns = &.{
29863 .{ .src = .{ .to_mem, .to_mem, .none } },
29864 },
29865 .extra_temps = .{
29866 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29867 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29868 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29869 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29870 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29871 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29872 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29873 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
29874 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29875 .{ .type = .u64, .kind = .{ .reg = .rax } },
29876 .{ .type = .u64, .kind = .{ .reg = .rdx } },
29877 },
29878 .dst_temps = .{ .mem, .unused },
29879 .clobbers = .{ .eflags = true },
29880 .each = .{ .once = &.{
29881 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
29882 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
29883 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
29884 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
29885 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
29886 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
29887 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
29888 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
29889 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
29890 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29891 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
29892 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
29893 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
29894 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
29895 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
29896 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
29897 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
29898 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
29899 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29900 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
29901 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
29902 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
29903 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
29904 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
29905 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
29906 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
29907 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
29908 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
29909 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29910 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
29911 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
29912 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
29913 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
29914 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
29915 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
29916 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
29917 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
29918 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
29919 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
29920 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
29921 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
29922 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29923 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
29924 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
29925 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
29926 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
29927 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29928 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
29929 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29930 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
29931 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29932 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29933 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29934 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29935 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29936 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29937 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
29938 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
29939 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29940 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
29941 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
29942 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
29943 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
29944 .{ ._, ._c, .st, ._, ._, ._, ._ },
29945 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29946 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29947 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
29948 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
29949 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
29950 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
29951 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
29952 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
29953 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
29954 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
29955 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
29956 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29957 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
29958 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
29959 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
29960 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
29961 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
29962 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
29963 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
29964 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
29965 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
29966 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
29967 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29968 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
29969 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
29970 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
29971 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
29972 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
29973 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
29974 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
29975 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
29976 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
29977 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
29978 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
29979 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
29980 } },
29981 }, .{
29982 .required_features = .{ .@"64bit", .cmov, null, null },
29983 .src_constraints = .{
29984 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
29985 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
29986 .any,
29987 },
29988 .patterns = &.{
29989 .{ .src = .{ .to_mem, .to_mem, .none } },
29990 },
29991 .extra_temps = .{
29992 .{ .type = .isize, .kind = .{ .reg = .rdi } },
29993 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29994 .{ .type = .usize, .kind = .{ .reg = .rcx } },
29995 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29996 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
29998 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
29999 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30000 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30001 .{ .type = .u64, .kind = .{ .reg = .rax } },
30002 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30003 },
30004 .dst_temps = .{ .mem, .unused },
30005 .clobbers = .{ .eflags = true },
30006 .each = .{ .once = &.{
30007 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30008 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30009 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30010 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30011 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30012 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30013 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30014 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30015 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30016 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30017 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30018 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30019 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30020 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30021 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30022 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30023 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30024 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30025 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30026 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30027 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30028 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30029 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30030 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30031 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30032 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30033 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30034 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30035 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30036 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30037 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30038 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30039 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30040 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30041 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30042 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30043 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30044 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30045 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30046 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30047 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30048 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30049 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30050 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30051 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30052 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30053 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30054 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30055 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30056 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30057 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30058 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30059 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30060 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30061 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30062 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30063 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30064 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30065 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30066 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30067 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30068 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30069 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30070 .{ ._, ._c, .st, ._, ._, ._, ._ },
30071 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30072 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30073 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30074 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30075 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30076 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30077 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30078 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30079 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30080 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30081 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30082 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30083 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30084 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30085 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30086 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30087 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30088 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30089 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30090 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30091 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30092 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30093 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30094 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30095 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30096 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30097 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30098 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30099 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30100 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30101 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30102 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30103 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30104 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30105 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
30106 } },
30107 }, .{
30108 .required_features = .{ .@"64bit", .slow_incdec, null, null },
30109 .src_constraints = .{
30110 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
30111 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
30112 .any,
30113 },
30114 .patterns = &.{
30115 .{ .src = .{ .to_mem, .to_mem, .none } },
30116 },
30117 .extra_temps = .{
30118 .{ .type = .isize, .kind = .{ .reg = .rdi } },
30119 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30120 .{ .type = .usize, .kind = .{ .reg = .rcx } },
30121 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30122 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30123 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30124 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30125 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30126 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30127 .{ .type = .u64, .kind = .{ .reg = .rax } },
30128 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30129 },
30130 .dst_temps = .{ .mem, .unused },
30131 .clobbers = .{ .eflags = true },
30132 .each = .{ .once = &.{
30133 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30134 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30135 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30136 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30137 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30138 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30139 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30140 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30141 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30142 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30143 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30144 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30145 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30146 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30147 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30148 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30149 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30150 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30151 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30152 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30153 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30154 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30155 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30156 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30157 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30158 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30159 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30160 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30161 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30162 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30163 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30164 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30165 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30166 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30167 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30168 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30169 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30170 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30171 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30172 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30173 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30174 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30175 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30176 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30177 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30178 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30179 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30180 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
30181 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30182 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30183 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30184 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30185 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30186 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30187 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30188 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30189 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30190 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30191 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30192 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30193 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30194 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30195 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30196 .{ ._, ._c, .st, ._, ._, ._, ._ },
30197 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30198 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30199 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30200 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30201 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30202 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30203 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30204 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30205 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30206 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30207 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30208 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30209 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30210 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30211 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30212 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30213 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30214 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30215 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30216 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30217 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30218 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30219 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30220 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30221 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30222 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30223 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30224 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30225 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30226 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30227 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30228 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30229 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30230 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30231 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
30232 } },
30233 }, .{
30234 .required_features = .{ .@"64bit", null, null, null },
30235 .src_constraints = .{
30236 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
30237 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 65 } },
30238 .any,
30239 },
30240 .patterns = &.{
30241 .{ .src = .{ .to_mem, .to_mem, .none } },
30242 },
30243 .extra_temps = .{
30244 .{ .type = .isize, .kind = .{ .reg = .rdi } },
30245 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30246 .{ .type = .usize, .kind = .{ .reg = .rcx } },
30247 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30248 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30249 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30250 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30251 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30252 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30253 .{ .type = .u64, .kind = .{ .reg = .rax } },
30254 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30255 },
30256 .dst_temps = .{ .mem, .unused },
30257 .clobbers = .{ .eflags = true },
30258 .each = .{ .once = &.{
30259 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30260 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30261 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30262 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30263 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30264 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30265 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30266 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30267 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30268 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30269 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30270 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30271 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30272 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30273 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30274 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30275 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30276 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30277 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30278 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30279 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30280 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30281 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30282 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30283 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30284 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30285 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30286 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30287 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30288 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30289 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30290 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30291 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30292 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30293 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30294 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30295 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30296 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30297 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30298 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30299 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30300 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30301 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30302 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30303 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30304 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30305 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30306 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
30307 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30308 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30309 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30310 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30311 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30312 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30313 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30314 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30315 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30316 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30317 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30318 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30319 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30320 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30321 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30322 .{ ._, ._c, .st, ._, ._, ._, ._ },
30323 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30324 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30325 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30326 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30327 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30328 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30329 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30330 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30331 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30332 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30333 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30334 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30335 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30336 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30337 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30338 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30339 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30340 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30341 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30342 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30343 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30344 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30345 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30346 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30347 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30348 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30349 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30350 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30351 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30352 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30353 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30354 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30355 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30356 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30357 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ },
30358 } },
30359 }, .{
30360 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
30361 .src_constraints = .{
30362 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30363 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30364 .any,
30365 },
30366 .patterns = &.{
30367 .{ .src = .{ .to_mem, .to_mem, .none } },
30368 },
30369 .extra_temps = .{
30370 .{ .type = .isize, .kind = .{ .reg = .rdi } },
30371 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30372 .{ .type = .usize, .kind = .{ .reg = .rcx } },
30373 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30374 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30375 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30376 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30377 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30378 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30379 .{ .type = .u64, .kind = .{ .reg = .rax } },
30380 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30381 },
30382 .dst_temps = .{ .mem, .unused },
30383 .clobbers = .{ .eflags = true },
30384 .each = .{ .once = &.{
30385 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30386 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30387 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30388 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30389 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30390 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30391 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30392 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30393 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30394 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30395 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30396 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30397 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30398 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30399 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30400 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30401 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30402 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30403 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30404 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30405 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30406 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30407 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30408 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30409 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30410 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30411 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30412 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30413 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30414 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30415 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30416 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30417 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30418 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30419 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30420 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30421 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30422 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30423 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30424 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30425 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30426 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30427 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30428 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30429 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30430 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30431 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30432 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30433 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30434 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30435 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30436 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30437 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30438 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30439 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30440 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30441 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30442 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30443 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30444 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30445 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30446 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30447 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30448 .{ ._, ._c, .st, ._, ._, ._, ._ },
30449 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30450 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30451 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30452 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30453 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30454 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30455 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30456 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30457 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30458 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30459 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30460 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30461 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30462 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30463 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30464 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30465 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30466 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30467 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30468 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30469 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30470 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30471 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30472 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30473 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30474 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30475 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30476 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30477 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30478 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30479 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30480 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30481 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30482 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30483 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
30484 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
30485 } },
30486 }, .{
30487 .required_features = .{ .@"64bit", .cmov, null, null },
30488 .src_constraints = .{
30489 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30490 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30491 .any,
30492 },
30493 .patterns = &.{
30494 .{ .src = .{ .to_mem, .to_mem, .none } },
30495 },
30496 .extra_temps = .{
30497 .{ .type = .isize, .kind = .{ .reg = .rdi } },
30498 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30499 .{ .type = .usize, .kind = .{ .reg = .rcx } },
30500 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30501 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30502 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30503 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30504 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30505 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30506 .{ .type = .u64, .kind = .{ .reg = .rax } },
30507 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30508 },
30509 .dst_temps = .{ .mem, .unused },
30510 .clobbers = .{ .eflags = true },
30511 .each = .{ .once = &.{
30512 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30513 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30514 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30515 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30516 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30517 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30518 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30519 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30520 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30521 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30522 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30523 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30524 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30525 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30526 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30527 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30528 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30529 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30530 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30531 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30532 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30533 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30534 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30535 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30536 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30537 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30538 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30539 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30540 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30541 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30542 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30543 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30544 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30545 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30546 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30547 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30548 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30549 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30550 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30551 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30552 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30553 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30554 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30555 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30556 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30557 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
30558 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30559 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
30560 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30561 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30562 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30563 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30564 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30565 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30566 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30567 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30568 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30569 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30570 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30571 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30572 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30573 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30574 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30575 .{ ._, ._c, .st, ._, ._, ._, ._ },
30576 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30577 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30578 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30579 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30580 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30581 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30582 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30583 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30584 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30585 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30586 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30587 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30588 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30589 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30590 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30591 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30592 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30593 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30594 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30595 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30596 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30597 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30598 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30599 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30600 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30601 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30602 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30603 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30604 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30605 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30606 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30607 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30608 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30609 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30610 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
30611 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
30612 } },
30613 }, .{
30614 .required_features = .{ .@"64bit", .slow_incdec, null, null },
30615 .src_constraints = .{
30616 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30617 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30618 .any,
30619 },
30620 .patterns = &.{
30621 .{ .src = .{ .to_mem, .to_mem, .none } },
30622 },
30623 .extra_temps = .{
30624 .{ .type = .isize, .kind = .{ .reg = .rdi } },
30625 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30626 .{ .type = .usize, .kind = .{ .reg = .rcx } },
30627 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30628 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30629 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30630 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30631 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30632 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30633 .{ .type = .u64, .kind = .{ .reg = .rax } },
30634 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30635 },
30636 .dst_temps = .{ .mem, .unused },
30637 .clobbers = .{ .eflags = true },
30638 .each = .{ .once = &.{
30639 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30640 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30641 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30642 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30643 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30644 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30645 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30646 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30647 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30648 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30649 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30650 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30651 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30652 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30653 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30654 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30655 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30656 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30657 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30658 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30659 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30660 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30661 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30662 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30663 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30664 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30665 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30666 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30667 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30668 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30669 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30670 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30671 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30672 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30673 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30674 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30675 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30676 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30677 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30678 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30679 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30680 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30681 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30682 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30683 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30684 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30685 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30686 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
30687 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30688 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30689 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30690 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30691 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30692 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30693 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30694 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30695 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30696 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30697 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30698 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30699 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30700 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30701 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30702 .{ ._, ._c, .st, ._, ._, ._, ._ },
30703 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30704 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30705 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30706 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30707 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30708 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30709 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30710 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30711 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30712 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30713 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30714 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30715 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30716 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30717 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30718 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30719 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30720 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30721 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30722 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30723 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30724 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30725 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30726 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30727 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30728 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30729 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30730 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30731 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30732 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30733 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30734 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30735 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30736 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30737 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
30738 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
30739 } },
30740 }, .{
30741 .required_features = .{ .@"64bit", null, null, null },
30742 .src_constraints = .{
30743 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30744 .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } },
30745 .any,
30746 },
30747 .patterns = &.{
30748 .{ .src = .{ .to_mem, .to_mem, .none } },
30749 },
30750 .extra_temps = .{
30751 .{ .type = .isize, .kind = .{ .reg = .rdi } },
30752 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30753 .{ .type = .usize, .kind = .{ .reg = .rcx } },
30754 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30755 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30756 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30757 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30758 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30759 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30760 .{ .type = .u64, .kind = .{ .reg = .rax } },
30761 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30762 },
30763 .dst_temps = .{ .mem, .unused },
30764 .clobbers = .{ .eflags = true },
30765 .each = .{ .once = &.{
30766 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30767 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
30768 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
30769 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
30770 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30771 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
30772 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
30773 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30774 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30775 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30776 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
30777 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
30778 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30779 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
30780 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30781 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_size), ._, ._ },
30782 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
30783 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
30784 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30785 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
30786 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
30787 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
30788 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
30789 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_size), .tmp9q, ._, ._ },
30790 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
30791 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30792 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
30793 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
30794 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30795 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
30796 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
30797 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
30798 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
30799 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
30800 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
30801 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
30802 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
30803 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
30804 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
30805 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_size, -8), ._, ._ },
30806 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30807 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30808 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
30809 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
30810 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
30811 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30812 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30813 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
30814 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30815 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
30816 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30817 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30818 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30819 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30820 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30821 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30822 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
30823 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
30824 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30825 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
30826 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30827 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
30828 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
30829 .{ ._, ._c, .st, ._, ._, ._, ._ },
30830 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30831 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30832 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
30833 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
30834 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
30835 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_size, -8), .tmp8q, ._, ._ },
30836 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
30837 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
30838 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
30839 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
30840 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
30841 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30842 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
30843 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
30844 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
30845 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
30846 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp8q, ._, ._ },
30847 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
30848 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
30849 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
30850 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_size, -8), ._, ._ },
30851 .{ ._, ._, .mov, .tmp2q, .tmp0q, ._, ._ },
30852 .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30853 .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ },
30854 .{ ._, ._, .xor, .tmp2q, .tmp0q, ._, ._ },
30855 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp0q, ._, ._ },
30856 .{ ._, ._, .@"or", .tmp4q, .tmp2q, ._, ._ },
30857 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30858 .{ ._, ._, .xor, .tmp1q, .tmp3q, ._, ._ },
30859 .{ ._, ._, .mov, .tmp9q, .tmp1q, ._, ._ },
30860 .{ ._, ._, .not, .tmp9q, ._, ._, ._ },
30861 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
30862 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
30863 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30864 .{ ._, ._rd, .sh, .tmp9q, .tmp1q, .uia(65, .dst0, .sub_bit_size_rem_64), ._ },
30865 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp9q, ._, ._ },
30866 } },
30867 }, .{
30868 .required_features = .{ .@"64bit", .bmi2, .adx, null },
30869 .src_constraints = .{
30870 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
30871 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
30872 .any,
30873 },
30874 .patterns = &.{
30875 .{ .src = .{ .to_mem, .to_mem, .none } },
30876 },
30877 .extra_temps = .{
30878 .{ .type = .isize, .kind = .{ .reg = .rax } },
30879 .{ .type = .usize, .kind = .{ .reg = .rdi } },
30880 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30881 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30882 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30883 .{ .type = .isize, .kind = .{ .reg = .rcx } },
30884 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30885 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30886 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30887 .unused,
30888 .unused,
30889 },
30890 .dst_temps = .{ .mem, .unused },
30891 .clobbers = .{ .eflags = true },
30892 .each = .{ .once = &.{
30893 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
30894 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
30895 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
30896 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
30897 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30898 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
30899 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
30900 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
30901 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30902 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
30903 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
30904 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_size, -8), .tmp7q, ._, ._ },
30905 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
30906 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_size), ._, ._ },
30907 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
30908 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
30909 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
30910 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
30911 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30912 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
30913 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
30914 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
30915 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30916 .{ .@"1:", ._, .@"or", .tmp8q, .leaid(.tmp1q, .tmp4, 8), ._, ._ },
30917 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
30918 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
30919 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
30920 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
30921 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
30922 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30923 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
30924 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30925 .{ ._, ._, .mov, .tmp0q, .si(-1), ._, ._ },
30926 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
30927 .{ ._, ._, .mov, .tmp5d, .sa(.dst0, .add_size_div_8), ._, ._ },
30928 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30929 } },
30930 }, .{
30931 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
30932 .src_constraints = .{
30933 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
30934 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
30935 .any,
30936 },
30937 .patterns = &.{
30938 .{ .src = .{ .to_mem, .to_mem, .none } },
30939 },
30940 .extra_temps = .{
30941 .{ .type = .isize, .kind = .{ .reg = .rax } },
30942 .{ .type = .usize, .kind = .{ .reg = .rdi } },
30943 .{ .type = .u64, .kind = .{ .reg = .rcx } },
30944 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
30945 .{ .type = .u64, .kind = .{ .reg = .rdx } },
30946 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
30947 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30948 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30949 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
30950 .unused,
30951 .unused,
30952 },
30953 .dst_temps = .{ .mem, .unused },
30954 .clobbers = .{ .eflags = true },
30955 .each = .{ .once = &.{
30956 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
30957 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
30958 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
30959 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
30960 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
30961 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
30962 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
30963 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
30964 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
30965 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
30966 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
30967 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
30968 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
30969 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
30970 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
30971 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
30972 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
30973 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
30974 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
30975 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
30976 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
30977 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
30978 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
30979 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
30980 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
30981 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
30982 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
30983 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
30984 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
30985 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
30986 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
30987 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
30988 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
30989 .{ ._, ._, .mov, .tmp0q, .si(-1), ._, ._ },
30990 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
30991 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
30992 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
30993 } },
30994 }, .{
30995 .required_features = .{ .@"64bit", .bmi2, null, null },
30996 .src_constraints = .{
30997 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
30998 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
30999 .any,
31000 },
31001 .patterns = &.{
31002 .{ .src = .{ .to_mem, .to_mem, .none } },
31003 },
31004 .extra_temps = .{
31005 .{ .type = .isize, .kind = .{ .reg = .rax } },
31006 .{ .type = .usize, .kind = .{ .reg = .rdi } },
31007 .{ .type = .u64, .kind = .{ .reg = .rcx } },
31008 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31009 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31010 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31011 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31012 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31013 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31014 .unused,
31015 .unused,
31016 },
31017 .dst_temps = .{ .mem, .unused },
31018 .clobbers = .{ .eflags = true },
31019 .each = .{ .once = &.{
31020 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31021 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31022 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31023 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31024 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31025 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31026 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31027 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31028 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31029 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31030 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31031 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31032 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31033 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31034 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31035 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
31036 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31037 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31038 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31039 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31040 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31041 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
31042 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
31043 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31044 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31045 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
31046 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31047 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
31048 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31049 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31050 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31051 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
31052 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31053 .{ ._, ._, .mov, .tmp0q, .si(-1), ._, ._ },
31054 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
31055 .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
31056 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31057 } },
31058 }, .{
31059 .required_features = .{ .@"64bit", .slow_incdec, null, null },
31060 .src_constraints = .{
31061 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
31062 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
31063 .any,
31064 },
31065 .patterns = &.{
31066 .{ .src = .{ .to_mem, .to_mem, .none } },
31067 },
31068 .extra_temps = .{
31069 .{ .type = .isize, .kind = .{ .reg = .rdi } },
31070 .{ .type = .usize, .kind = .{ .reg = .rcx } },
31071 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31072 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31073 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31074 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31075 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31076 .{ .type = .u64, .kind = .{ .reg = .rax } },
31077 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31078 .unused,
31079 .unused,
31080 },
31081 .dst_temps = .{ .mem, .unused },
31082 .clobbers = .{ .eflags = true },
31083 .each = .{ .once = &.{
31084 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31085 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31086 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31087 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31088 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31089 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31090 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31091 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31092 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31093 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31094 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31095 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31096 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31097 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31098 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
31099 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
31100 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31101 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31102 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31103 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31104 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31105 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31106 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
31107 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31108 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31109 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
31110 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31111 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31112 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31113 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31114 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31115 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
31116 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31117 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
31118 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
31119 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_size_div_8), ._, ._ },
31120 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31121 } },
31122 }, .{
31123 .required_features = .{ .@"64bit", null, null, null },
31124 .src_constraints = .{
31125 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
31126 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
31127 .any,
31128 },
31129 .patterns = &.{
31130 .{ .src = .{ .to_mem, .to_mem, .none } },
31131 },
31132 .extra_temps = .{
31133 .{ .type = .isize, .kind = .{ .reg = .rdi } },
31134 .{ .type = .usize, .kind = .{ .reg = .rcx } },
31135 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31136 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31137 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31138 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31139 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31140 .{ .type = .u64, .kind = .{ .reg = .rax } },
31141 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31142 .unused,
31143 .unused,
31144 },
31145 .dst_temps = .{ .mem, .unused },
31146 .clobbers = .{ .eflags = true },
31147 .each = .{ .once = &.{
31148 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31149 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31150 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31151 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31152 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31153 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31154 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31155 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31156 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31157 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31158 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31159 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31160 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31161 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31162 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
31163 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
31164 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31165 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31166 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31167 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31168 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31169 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31170 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
31171 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31172 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31173 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
31174 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31175 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31176 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31177 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31178 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31179 .{ ._, ._, .@"test", .tmp2q, .tmp2q, ._, ._ },
31180 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31181 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
31182 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
31183 .{ ._, ._, .mov, .tmp1d, .sa(.dst0, .add_size_div_8), ._, ._ },
31184 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31185 } },
31186 }, .{
31187 .required_features = .{ .@"64bit", .bmi2, .adx, null },
31188 .src_constraints = .{
31189 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31190 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31191 .any,
31192 },
31193 .patterns = &.{
31194 .{ .src = .{ .to_mem, .to_mem, .none } },
31195 },
31196 .extra_temps = .{
31197 .{ .type = .isize, .kind = .{ .reg = .rax } },
31198 .{ .type = .usize, .kind = .{ .reg = .rdi } },
31199 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31200 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31201 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31202 .{ .type = .isize, .kind = .{ .reg = .rcx } },
31203 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31204 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31205 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31206 .unused,
31207 .unused,
31208 },
31209 .dst_temps = .{ .mem, .unused },
31210 .clobbers = .{ .eflags = true },
31211 .each = .{ .once = &.{
31212 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
31213 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
31214 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31215 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
31216 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31217 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
31218 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
31219 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
31220 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31221 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
31222 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
31223 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_size, -8), .tmp7q, ._, ._ },
31224 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
31225 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_size), ._, ._ },
31226 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31227 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
31228 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
31229 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
31230 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31231 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
31232 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
31233 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
31234 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31235 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
31236 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
31237 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31238 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31239 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31240 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
31241 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31242 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31243 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31244 .{ ._, ._, .mov, .tmp0q, .si(-1), ._, ._ },
31245 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
31246 .{ ._, ._, .mov, .tmp5d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
31247 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31248 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31249 } },
31250 }, .{
31251 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
31252 .src_constraints = .{
31253 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31254 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31255 .any,
31256 },
31257 .patterns = &.{
31258 .{ .src = .{ .to_mem, .to_mem, .none } },
31259 },
31260 .extra_temps = .{
31261 .{ .type = .isize, .kind = .{ .reg = .rax } },
31262 .{ .type = .usize, .kind = .{ .reg = .rdi } },
31263 .{ .type = .u64, .kind = .{ .reg = .rcx } },
31264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31265 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31266 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31267 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31268 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31269 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31270 .unused,
31271 .unused,
31272 },
31273 .dst_temps = .{ .mem, .unused },
31274 .clobbers = .{ .eflags = true },
31275 .each = .{ .once = &.{
31276 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31277 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31278 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31279 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31280 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31281 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31282 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31283 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31284 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31285 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31286 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31287 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31288 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31289 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31290 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31291 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
31292 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31293 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31294 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31295 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31296 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31297 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
31298 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
31299 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31300 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31301 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
31302 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31303 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
31304 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31305 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31306 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31307 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31308 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31309 .{ ._, ._, .mov, .tmp0q, .si(-1), ._, ._ },
31310 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
31311 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
31312 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31313 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31314 } },
31315 }, .{
31316 .required_features = .{ .@"64bit", .bmi2, null, null },
31317 .src_constraints = .{
31318 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31319 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31320 .any,
31321 },
31322 .patterns = &.{
31323 .{ .src = .{ .to_mem, .to_mem, .none } },
31324 },
31325 .extra_temps = .{
31326 .{ .type = .isize, .kind = .{ .reg = .rax } },
31327 .{ .type = .usize, .kind = .{ .reg = .rdi } },
31328 .{ .type = .u64, .kind = .{ .reg = .rcx } },
31329 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31330 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31331 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31332 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31333 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31334 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31335 .unused,
31336 .unused,
31337 },
31338 .dst_temps = .{ .mem, .unused },
31339 .clobbers = .{ .eflags = true },
31340 .each = .{ .once = &.{
31341 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31342 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31343 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31344 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31345 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31346 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31347 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31348 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31349 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31350 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31351 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31352 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31353 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31354 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31355 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31356 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
31357 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31358 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31359 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31360 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31361 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31362 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
31363 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
31364 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31365 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31366 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
31367 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31368 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
31369 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31370 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31371 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31372 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31373 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31374 .{ ._, ._, .mov, .tmp0q, .si(-1), ._, ._ },
31375 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
31376 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
31377 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31378 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31379 } },
31380 }, .{
31381 .required_features = .{ .@"64bit", .slow_incdec, null, null },
31382 .src_constraints = .{
31383 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31384 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31385 .any,
31386 },
31387 .patterns = &.{
31388 .{ .src = .{ .to_mem, .to_mem, .none } },
31389 },
31390 .extra_temps = .{
31391 .{ .type = .isize, .kind = .{ .reg = .rdi } },
31392 .{ .type = .usize, .kind = .{ .reg = .rcx } },
31393 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31394 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31395 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31396 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31397 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31398 .{ .type = .u64, .kind = .{ .reg = .rax } },
31399 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31400 .unused,
31401 .unused,
31402 },
31403 .dst_temps = .{ .mem, .unused },
31404 .clobbers = .{ .eflags = true },
31405 .each = .{ .once = &.{
31406 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31407 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31408 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31409 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31410 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31411 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31412 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31413 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31414 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31415 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31416 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31417 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31418 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31419 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31420 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
31421 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
31422 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31423 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31424 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31425 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31426 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31427 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31428 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
31429 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31430 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31431 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
31432 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31433 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31434 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31435 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31436 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31437 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31438 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31439 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
31440 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
31441 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
31442 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31443 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31444 } },
31445 }, .{
31446 .required_features = .{ .@"64bit", null, null, null },
31447 .src_constraints = .{
31448 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31449 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
31450 .any,
31451 },
31452 .patterns = &.{
31453 .{ .src = .{ .to_mem, .to_mem, .none } },
31454 },
31455 .extra_temps = .{
31456 .{ .type = .isize, .kind = .{ .reg = .rdi } },
31457 .{ .type = .usize, .kind = .{ .reg = .rcx } },
31458 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31459 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31460 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31461 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31462 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31463 .{ .type = .u64, .kind = .{ .reg = .rax } },
31464 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31465 .unused,
31466 .unused,
31467 },
31468 .dst_temps = .{ .mem, .unused },
31469 .clobbers = .{ .eflags = true },
31470 .each = .{ .once = &.{
31471 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31472 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31473 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31474 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31475 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31476 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31477 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31478 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31479 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31480 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31481 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31482 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31483 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31484 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31485 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
31486 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
31487 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31488 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31489 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31490 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31491 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31492 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31493 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
31494 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31495 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31496 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
31497 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31498 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31499 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31500 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31501 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31502 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31503 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31504 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
31505 .{ ._, ._, .lea, .tmp0p, .mem(.dst0), ._, ._ },
31506 .{ ._, ._, .mov, .tmp1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
31507 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31508 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31509 } },
31510 }, .{
31511 .required_features = .{ .@"64bit", .bmi2, .adx, null },
31512 .src_constraints = .{
31513 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31514 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31515 .any,
31516 },
31517 .patterns = &.{
31518 .{ .src = .{ .to_mem, .to_mem, .none } },
31519 },
31520 .extra_temps = .{
31521 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31522 .{ .type = .usize, .kind = .{ .reg = .rax } },
31523 .{ .type = .u64, .kind = .{ .reg = .rdi } },
31524 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31525 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31526 .{ .type = .isize, .kind = .{ .reg = .rcx } },
31527 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31528 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31529 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31530 .unused,
31531 .unused,
31532 },
31533 .dst_temps = .{ .mem, .unused },
31534 .clobbers = .{ .eflags = true },
31535 .each = .{ .once = &.{
31536 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
31537 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
31538 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31539 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
31540 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31541 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
31542 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
31543 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
31544 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31545 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
31546 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
31547 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_size, -8), .tmp7q, ._, ._ },
31548 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
31549 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_size), ._, ._ },
31550 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31551 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
31552 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
31553 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
31554 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31555 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
31556 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
31557 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
31558 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31559 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
31560 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
31561 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31562 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31563 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31564 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
31565 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31566 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31567 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -16), ._, ._ },
31568 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31569 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31570 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31571 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
31572 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31573 .{ ._, ._, .mov, .tmp1q, .si(-1), ._, ._ },
31574 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
31575 .{ ._, ._, .mov, .tmp5d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
31576 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31577 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31578 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp3q, ._, ._ },
31579 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31580 } },
31581 }, .{
31582 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
31583 .src_constraints = .{
31584 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31585 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31586 .any,
31587 },
31588 .patterns = &.{
31589 .{ .src = .{ .to_mem, .to_mem, .none } },
31590 },
31591 .extra_temps = .{
31592 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31593 .{ .type = .usize, .kind = .{ .reg = .rax } },
31594 .{ .type = .u64, .kind = .{ .reg = .rdi } },
31595 .{ .type = .isize, .kind = .{ .reg = .rcx } },
31596 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31597 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31598 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31599 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31600 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31601 .unused,
31602 .unused,
31603 },
31604 .dst_temps = .{ .mem, .unused },
31605 .clobbers = .{ .eflags = true },
31606 .each = .{ .once = &.{
31607 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31608 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31609 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31610 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31611 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31612 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31613 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31614 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31615 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31616 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31617 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31618 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31619 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31620 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31621 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31622 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
31623 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31624 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31625 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31626 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31627 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31628 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
31629 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
31630 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31631 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31632 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
31633 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31634 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
31635 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31636 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31637 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31638 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31639 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -16), ._, ._ },
31640 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31641 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31642 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31643 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
31644 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31645 .{ ._, ._, .mov, .tmp1q, .si(-1), ._, ._ },
31646 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
31647 .{ ._, ._, .mov, .tmp3d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
31648 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31649 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31650 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp3q, ._, ._ },
31651 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31652 } },
31653 }, .{
31654 .required_features = .{ .@"64bit", .bmi2, null, null },
31655 .src_constraints = .{
31656 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31657 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31658 .any,
31659 },
31660 .patterns = &.{
31661 .{ .src = .{ .to_mem, .to_mem, .none } },
31662 },
31663 .extra_temps = .{
31664 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31665 .{ .type = .usize, .kind = .{ .reg = .rax } },
31666 .{ .type = .u64, .kind = .{ .reg = .rdi } },
31667 .{ .type = .isize, .kind = .{ .reg = .rcx } },
31668 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31669 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31670 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31671 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31672 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31673 .unused,
31674 .unused,
31675 },
31676 .dst_temps = .{ .mem, .unused },
31677 .clobbers = .{ .eflags = true },
31678 .each = .{ .once = &.{
31679 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31680 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31681 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31682 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31683 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31684 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31685 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31686 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31687 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31688 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31689 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31690 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31691 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31692 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31693 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31694 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
31695 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31696 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31697 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31698 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31699 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31700 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
31701 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
31702 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31703 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31704 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
31705 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31706 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
31707 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31708 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31709 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31710 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31711 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -16), ._, ._ },
31712 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31713 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31714 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31715 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
31716 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31717 .{ ._, ._, .mov, .tmp1q, .si(-1), ._, ._ },
31718 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
31719 .{ ._, ._, .mov, .tmp3d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
31720 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31721 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31722 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp3q, ._, ._ },
31723 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31724 } },
31725 }, .{
31726 .required_features = .{ .@"64bit", .slow_incdec, null, null },
31727 .src_constraints = .{
31728 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31729 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31730 .any,
31731 },
31732 .patterns = &.{
31733 .{ .src = .{ .to_mem, .to_mem, .none } },
31734 },
31735 .extra_temps = .{
31736 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31737 .{ .type = .usize, .kind = .{ .reg = .rdi } },
31738 .{ .type = .u64, .kind = .{ .reg = .rcx } },
31739 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31740 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31741 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31742 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31743 .{ .type = .u64, .kind = .{ .reg = .rax } },
31744 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31745 .unused,
31746 .unused,
31747 },
31748 .dst_temps = .{ .mem, .unused },
31749 .clobbers = .{ .eflags = true },
31750 .each = .{ .once = &.{
31751 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31752 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31753 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31754 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31755 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31756 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31757 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31758 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31759 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31760 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31761 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31762 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31763 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31764 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31765 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
31766 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
31767 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31768 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31769 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31770 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31771 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31772 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31773 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
31774 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31775 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31776 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
31777 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31778 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31779 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31780 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31781 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31782 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
31783 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -16), ._, ._ },
31784 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31785 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
31786 .{ ._, ._, .@"and", .tmp3q, .tmp1q, ._, ._ },
31787 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31788 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
31789 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31790 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
31791 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
31792 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
31793 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31794 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
31795 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp3q, ._, ._ },
31796 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31797 } },
31798 }, .{
31799 .required_features = .{ .@"64bit", null, null, null },
31800 .src_constraints = .{
31801 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31802 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
31803 .any,
31804 },
31805 .patterns = &.{
31806 .{ .src = .{ .to_mem, .to_mem, .none } },
31807 },
31808 .extra_temps = .{
31809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31810 .{ .type = .usize, .kind = .{ .reg = .rdi } },
31811 .{ .type = .u64, .kind = .{ .reg = .rcx } },
31812 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31813 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31814 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31815 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31816 .{ .type = .u64, .kind = .{ .reg = .rax } },
31817 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31818 .unused,
31819 .unused,
31820 },
31821 .dst_temps = .{ .mem, .unused },
31822 .clobbers = .{ .eflags = true },
31823 .each = .{ .once = &.{
31824 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31825 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31826 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31827 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31828 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31829 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31830 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31831 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31832 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31833 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31834 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31835 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31836 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31837 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31838 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
31839 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
31840 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31841 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31842 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31843 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31844 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31845 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31846 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
31847 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31848 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31849 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
31850 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
31851 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31852 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31853 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
31854 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
31855 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
31856 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -16), ._, ._ },
31857 .{ ._, ._, .@"or", .tmp2q, .memad(.dst0q, .add_size, -8), ._, ._ },
31858 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
31859 .{ ._, ._, .@"and", .tmp3q, .tmp1q, ._, ._ },
31860 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31861 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
31862 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31863 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
31864 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
31865 .{ ._, ._, .mov, .tmp2d, .sia(-2, .dst0, .add_size_div_8), ._, ._ },
31866 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31867 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
31868 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp3q, ._, ._ },
31869 .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .ui(0), ._, ._ },
31870 } },
31871 }, .{
31872 .required_features = .{ .@"64bit", .bmi2, .adx, null },
31873 .src_constraints = .{
31874 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
31875 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
31876 .any,
31877 },
31878 .patterns = &.{
31879 .{ .src = .{ .to_mem, .to_mem, .none } },
31880 },
31881 .extra_temps = .{
31882 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31883 .{ .type = .usize, .kind = .{ .reg = .rax } },
31884 .{ .type = .u64, .kind = .{ .reg = .rdi } },
31885 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31886 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31887 .{ .type = .isize, .kind = .{ .reg = .rcx } },
31888 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31889 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31890 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31891 .unused,
31892 .unused,
31893 },
31894 .dst_temps = .{ .mem, .unused },
31895 .clobbers = .{ .eflags = true },
31896 .each = .{ .once = &.{
31897 .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ },
31898 .{ ._, ._, .lea, .tmp1p, .mem(.src1), ._, ._ },
31899 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31900 .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
31901 .{ .@"0:", ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31902 .{ ._, ._, .@"or", .tmp4q, .memi(.src0q, .tmp0), ._, ._ },
31903 .{ ._, ._z, .j, .@"2f", ._, ._, ._ },
31904 .{ ._, ._, .lea, .tmp5p, .leaad(.tmp0, .sub_src0_size, 8), ._, ._ },
31905 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31906 .{ .@"1:", ._x, .mul, .tmp8q, .tmp7q, .leai(.tmp1q, .tmp5), ._ },
31907 .{ ._, ._x, .adc, .tmp7q, .tmp6q, ._, ._ },
31908 .{ ._, ._, .mov, .memiad(.dst0q, .tmp5, .add_size, -8), .tmp7q, ._, ._ },
31909 .{ ._, ._rcxz, .j, .@"1f", ._, ._, ._ },
31910 .{ ._, ._x, .ado, .tmp8q, .memia(.dst0q, .tmp5, .add_size), ._, ._ },
31911 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31912 .{ ._, ._, .lea, .tmp5p, .lead(.tmp5, 8), ._, ._ },
31913 .{ ._, ._mp, .j, .@"1b", ._, ._, ._ },
31914 .{ .@"2:", ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
31915 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31916 .{ .@"1:", ._, .mov, .tmp4d, .tmp0d, ._, ._ },
31917 .{ ._, ._x, .ado, .tmp8q, .tmp3q, ._, ._ },
31918 .{ ._, ._x, .adc, .tmp8q, .tmp3q, ._, ._ },
31919 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31920 .{ .@"1:", ._, .@"or", .tmp8q, .leai(.tmp1q, .tmp4), ._, ._ },
31921 .{ .@"2:", ._, .sub, .tmp4d, .si(8), ._, ._ },
31922 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31923 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
31924 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31925 .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
31926 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31927 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31928 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -8), ._, ._ },
31929 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31930 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31931 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
31932 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
31933 .{ ._, ._, .mov, .tmp1q, .si(-1), ._, ._ },
31934 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
31935 .{ ._, ._, .mov, .tmp5d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
31936 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
31937 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
31938 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp3q, ._, ._ },
31939 } },
31940 }, .{
31941 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
31942 .src_constraints = .{
31943 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
31944 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
31945 .any,
31946 },
31947 .patterns = &.{
31948 .{ .src = .{ .to_mem, .to_mem, .none } },
31949 },
31950 .extra_temps = .{
31951 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31952 .{ .type = .usize, .kind = .{ .reg = .rax } },
31953 .{ .type = .u64, .kind = .{ .reg = .rdi } },
31954 .{ .type = .isize, .kind = .{ .reg = .rcx } },
31955 .{ .type = .u64, .kind = .{ .reg = .rdx } },
31956 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
31957 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31958 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31959 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
31960 .unused,
31961 .unused,
31962 },
31963 .dst_temps = .{ .mem, .unused },
31964 .clobbers = .{ .eflags = true },
31965 .each = .{ .once = &.{
31966 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
31967 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
31968 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
31969 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
31970 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
31971 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
31972 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
31973 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
31974 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
31975 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
31976 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
31977 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
31978 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
31979 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
31980 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
31981 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
31982 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
31983 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
31984 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
31985 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
31986 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
31987 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
31988 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
31989 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
31990 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
31991 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
31992 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
31993 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
31994 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
31995 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
31996 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
31997 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
31998 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -8), ._, ._ },
31999 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
32000 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32001 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32002 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
32003 .{ ._, ._, .mov, .tmp1q, .si(-1), ._, ._ },
32004 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32005 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
32006 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
32007 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
32008 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp3q, ._, ._ },
32009 } },
32010 }, .{
32011 .required_features = .{ .@"64bit", .bmi2, null, null },
32012 .src_constraints = .{
32013 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32014 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32015 .any,
32016 },
32017 .patterns = &.{
32018 .{ .src = .{ .to_mem, .to_mem, .none } },
32019 },
32020 .extra_temps = .{
32021 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32022 .{ .type = .usize, .kind = .{ .reg = .rax } },
32023 .{ .type = .u64, .kind = .{ .reg = .rdi } },
32024 .{ .type = .isize, .kind = .{ .reg = .rcx } },
32025 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32026 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32027 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32028 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32029 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32030 .unused,
32031 .unused,
32032 },
32033 .dst_temps = .{ .mem, .unused },
32034 .clobbers = .{ .eflags = true },
32035 .each = .{ .once = &.{
32036 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32037 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32038 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32039 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32040 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32041 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32042 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32043 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32044 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32045 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32046 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32047 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
32048 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32049 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32050 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32051 .{ .@"2:", ._x, .mul, .tmp8q, .tmp7q, .leasi(.tmp1q, .@"8", .tmp3), ._ },
32052 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32053 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
32054 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32055 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32056 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32057 .{ ._, ._, .adc, .tmp5d, .tmp5d, ._, ._ },
32058 .{ ._, ._, .@"or", .tmp5q, .tmp8q, ._, ._ },
32059 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32060 .{ .@"1:", ._, .@"or", .tmp5q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32061 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32062 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32063 .{ ._, ._, .@"or", .tmp2q, .tmp5q, ._, ._ },
32064 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32065 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32066 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32067 .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32068 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -8), ._, ._ },
32069 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
32070 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32071 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32072 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
32073 .{ ._, ._, .mov, .tmp1q, .si(-1), ._, ._ },
32074 .{ ._, ._, .lea, .tmp2p, .mem(.dst0), ._, ._ },
32075 .{ ._, ._, .mov, .tmp3d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
32076 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
32077 .{ ._, ._, .bzhi, .tmp3q, .tmp1q, .tmp0q, ._ },
32078 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp3q, ._, ._ },
32079 } },
32080 }, .{
32081 .required_features = .{ .@"64bit", .slow_incdec, null, null },
32082 .src_constraints = .{
32083 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32084 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32085 .any,
32086 },
32087 .patterns = &.{
32088 .{ .src = .{ .to_mem, .to_mem, .none } },
32089 },
32090 .extra_temps = .{
32091 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32092 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32093 .{ .type = .u64, .kind = .{ .reg = .rcx } },
32094 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32095 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32096 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32097 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32098 .{ .type = .u64, .kind = .{ .reg = .rax } },
32099 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32100 .unused,
32101 .unused,
32102 },
32103 .dst_temps = .{ .mem, .unused },
32104 .clobbers = .{ .eflags = true },
32105 .each = .{ .once = &.{
32106 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32107 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32108 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32109 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32110 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32111 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32112 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32113 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32114 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32115 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32116 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32117 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
32118 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32119 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32120 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32121 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32122 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32123 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32124 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
32125 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32126 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32127 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32128 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32129 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32130 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32131 .{ .@"2:", ._, .sub, .tmp3d, .si(1), ._, ._ },
32132 .{ ._, ._ae, .j, .@"1b", ._, ._, ._ },
32133 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32134 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32135 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
32136 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
32137 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
32138 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -8), ._, ._ },
32139 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
32140 .{ ._, ._, .@"and", .tmp3q, .tmp1q, ._, ._ },
32141 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32142 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32143 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
32144 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
32145 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
32146 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
32147 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
32148 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
32149 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp3q, ._, ._ },
32150 } },
32151 }, .{
32152 .required_features = .{ .@"64bit", null, null, null },
32153 .src_constraints = .{
32154 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32155 .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
32156 .any,
32157 },
32158 .patterns = &.{
32159 .{ .src = .{ .to_mem, .to_mem, .none } },
32160 },
32161 .extra_temps = .{
32162 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32163 .{ .type = .usize, .kind = .{ .reg = .rdi } },
32164 .{ .type = .u64, .kind = .{ .reg = .rcx } },
32165 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32166 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32167 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
32168 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
32169 .{ .type = .u64, .kind = .{ .reg = .rax } },
32170 .{ .type = .u64, .kind = .{ .reg = .rdx } },
32171 .unused,
32172 .unused,
32173 },
32174 .dst_temps = .{ .mem, .unused },
32175 .clobbers = .{ .eflags = true },
32176 .each = .{ .once = &.{
32177 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
32178 .{ ._, ._, .lea, .tmp1p, .memd(.src1, 8), ._, ._ },
32179 .{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
32180 .{ .@"0:", ._, .lea, .tmp3p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
32181 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
32182 .{ ._, ._, .xor, .tmp5d, .tmp5d, ._, ._ },
32183 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
32184 .{ ._, ._, .@"or", .tmp4q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
32185 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
32186 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ },
32187 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
32188 .{ .@"1:", ._, .adc, .tmp8q, .memsia(.dst0q, .@"8", .tmp3, .add_size), ._, ._ },
32189 .{ ._, ._, .adc, .tmp5b, .si(0), ._, ._ },
32190 .{ ._, ._, .mov, .tmp6q, .tmp8q, ._, ._ },
32191 .{ .@"2:", ._, .mov, .tmp7q, .tmp4q, ._, ._ },
32192 .{ ._, ._, .mul, .leasi(.tmp1q, .@"8", .tmp3), ._, ._, ._ },
32193 .{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
32194 .{ ._, ._, .adc, .tmp7q, .tmp6q, ._, ._ },
32195 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp3, .add_size), .tmp7q, ._, ._ },
32196 .{ ._, ._c, .in, .tmp3p, ._, ._, ._ },
32197 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
32198 .{ ._, ._, .mov, .tmp3d, .tmp0d, ._, ._ },
32199 .{ ._, ._, .adc, .tmp8q, .si(0), ._, ._ },
32200 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
32201 .{ .@"1:", ._, .@"or", .tmp8q, .leasi(.tmp1q, .@"8", .tmp3), ._, ._ },
32202 .{ .@"2:", ._c, .de, .tmp3d, ._, ._, ._ },
32203 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
32204 .{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
32205 .{ .@"3:", ._, .lea, .tmp1p, .lead(.tmp1, 8), ._, ._ },
32206 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
32207 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
32208 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
32209 .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_size, -8), ._, ._ },
32210 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
32211 .{ ._, ._, .@"and", .tmp3q, .tmp1q, ._, ._ },
32212 .{ ._, ._r, .sh, .tmp1q, .ua(.src0, .add_bit_size_rem_64), ._, ._ },
32213 .{ ._, ._, .@"or", .tmp2q, .tmp1q, ._, ._ },
32214 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
32215 .{ ._, ._, .mov, .tmp7q, .si(-1), ._, ._ },
32216 .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
32217 .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
32218 .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
32219 .{ ._, ._, .mov, .tmp3q, .tmp0q, ._, ._ },
32220 .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp3q, ._, ._ },
32221 } },
32222 } }) catch |err| switch (err) {
32223 error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
32224 @tagName(air_tag),
32225 cg.typeOf(bin_op.lhs).fmt(pt),
32226 ops[0].tracking(cg),
32227 ops[1].tracking(cg),
32228 }),
32229 else => |e| return e,
32230 };
32231 try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg);
32232 },
32233 .div_float, .div_float_optimized, .div_exact, .div_exact_optimized => |air_tag| if (use_old) try cg.airMulDivBinOp(inst, switch (air_tag) {
32234 else => unreachable,
32235 .div_float, .div_float_optimized => .div_float,
32236 .div_exact, .div_exact_optimized => .div_exact,
32237 }) else {
32238 const bin_op = air_datas[@intFromEnum(inst)].bin_op;
32239 const ty = cg.typeOf(bin_op.lhs);
32240 var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs });
32241 var res: [1]Temp = undefined;
32242 (if (cg.floatBits(ty.scalarType(zcu))) |_| cg.select(&res, &.{ty}, &ops, comptime &.{ .{
32243 .required_features = .{ .f16c, null, null, null },
32244 .src_constraints = .{
32245 .{ .scalar_float = .{ .of = .word, .is = .word } },
32246 .{ .scalar_float = .{ .of = .word, .is = .word } },
32247 .any,
32248 },
32249 .patterns = &.{
32250 .{ .src = .{ .to_sse, .to_sse, .none } },
32251 },
32252 .extra_temps = .{
32253 .{ .type = .f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
32254 .unused,
32255 .unused,
32256 .unused,
32257 .unused,
32258 .unused,
32259 .unused,
32260 .unused,
32261 .unused,
32262 .unused,
32263 .unused,
32264 },
32265 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32266 .each = .{ .once = &.{
32267 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
32268 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
32269 .{ ._, .v_ss, .div, .dst0x, .dst0x, .tmp0d, ._ },
32270 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
32271 } },
32272 }, .{
32273 .required_features = .{ .sse, null, null, null },
32274 .src_constraints = .{
32275 .{ .scalar_float = .{ .of = .word, .is = .word } },
32276 .{ .scalar_float = .{ .of = .word, .is = .word } },
32277 .any,
32278 },
32279 .patterns = &.{
32280 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
32281 },
32282 .call_frame = .{ .alignment = .@"16" },
32283 .extra_temps = .{
32284 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32285 .unused,
32286 .unused,
32287 .unused,
32288 .unused,
32289 .unused,
32290 .unused,
32291 .unused,
32292 .unused,
32293 .unused,
32294 .unused,
32295 },
32296 .dst_temps = .{ .{ .ref = .src0 }, .unused },
32297 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32298 .each = .{ .once = &.{
32299 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
32300 } },
32301 }, .{
32302 .required_features = .{ .f16c, null, null, null },
32303 .src_constraints = .{
32304 .{ .scalar_float = .{ .of = .qword, .is = .word } },
32305 .{ .scalar_float = .{ .of = .qword, .is = .word } },
32306 .any,
32307 },
32308 .patterns = &.{
32309 .{ .src = .{ .mem, .mem, .none } },
32310 .{ .src = .{ .to_sse, .mem, .none } },
32311 .{ .src = .{ .mem, .to_sse, .none } },
32312 .{ .src = .{ .to_sse, .to_sse, .none } },
32313 },
32314 .extra_temps = .{
32315 .{ .type = .vector_4_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
32316 .unused,
32317 .unused,
32318 .unused,
32319 .unused,
32320 .unused,
32321 .unused,
32322 .unused,
32323 .unused,
32324 .unused,
32325 .unused,
32326 },
32327 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32328 .each = .{ .once = &.{
32329 .{ ._, .v_ps, .cvtph2, .dst0x, .src0q, ._, ._ },
32330 .{ ._, .v_ps, .cvtph2, .tmp0x, .src1q, ._, ._ },
32331 .{ ._, .v_ps, .div, .dst0x, .dst0x, .tmp0x, ._ },
32332 .{ ._, .v_, .cvtps2ph, .dst0q, .dst0x, .rm(.{}), ._ },
32333 } },
32334 }, .{
32335 .required_features = .{ .f16c, null, null, null },
32336 .src_constraints = .{
32337 .{ .scalar_float = .{ .of = .xword, .is = .word } },
32338 .{ .scalar_float = .{ .of = .xword, .is = .word } },
32339 .any,
32340 },
32341 .patterns = &.{
32342 .{ .src = .{ .mem, .mem, .none } },
32343 .{ .src = .{ .to_sse, .mem, .none } },
32344 .{ .src = .{ .mem, .to_sse, .none } },
32345 .{ .src = .{ .to_sse, .to_sse, .none } },
32346 },
32347 .extra_temps = .{
32348 .{ .type = .vector_8_f32, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .sse } } },
32349 .unused,
32350 .unused,
32351 .unused,
32352 .unused,
32353 .unused,
32354 .unused,
32355 .unused,
32356 .unused,
32357 .unused,
32358 .unused,
32359 },
32360 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32361 .each = .{ .once = &.{
32362 .{ ._, .v_ps, .cvtph2, .dst0y, .src0x, ._, ._ },
32363 .{ ._, .v_ps, .cvtph2, .tmp0y, .src1x, ._, ._ },
32364 .{ ._, .v_ps, .div, .dst0y, .dst0y, .tmp0y, ._ },
32365 .{ ._, .v_, .cvtps2ph, .dst0x, .dst0y, .rm(.{}), ._ },
32366 } },
32367 }, .{
32368 .required_features = .{ .f16c, null, null, null },
32369 .src_constraints = .{
32370 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
32371 .{ .multiple_scalar_float = .{ .of = .xword, .is = .word } },
32372 .any,
32373 },
32374 .patterns = &.{
32375 .{ .src = .{ .to_mem, .to_mem, .none } },
32376 },
32377 .extra_temps = .{
32378 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32379 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
32380 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
32381 .unused,
32382 .unused,
32383 .unused,
32384 .unused,
32385 .unused,
32386 .unused,
32387 .unused,
32388 .unused,
32389 },
32390 .dst_temps = .{ .mem, .unused },
32391 .clobbers = .{ .eflags = true },
32392 .each = .{ .once = &.{
32393 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32394 .{ .@"0:", .v_ps, .cvtph2, .tmp1y, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32395 .{ ._, .v_ps, .cvtph2, .tmp2y, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
32396 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .tmp2y, ._ },
32397 .{ ._, .v_, .cvtps2ph, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1y, .rm(.{}), ._ },
32398 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32399 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32400 } },
32401 }, .{
32402 .required_features = .{ .avx, null, null, null },
32403 .src_constraints = .{
32404 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32405 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32406 .any,
32407 },
32408 .patterns = &.{
32409 .{ .src = .{ .to_mem, .to_mem, .none } },
32410 },
32411 .call_frame = .{ .alignment = .@"16" },
32412 .extra_temps = .{
32413 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32414 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32415 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32416 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32417 .unused,
32418 .unused,
32419 .unused,
32420 .unused,
32421 .unused,
32422 .unused,
32423 .unused,
32424 },
32425 .dst_temps = .{ .mem, .unused },
32426 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32427 .each = .{ .once = &.{
32428 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32429 .{ .@"0:", .vp_, .xor, .tmp2x, .tmp2x, .tmp2x, ._ },
32430 .{ ._, .vp_w, .insr, .tmp1x, .tmp2x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0) },
32431 .{ ._, .vp_w, .insr, .tmp2x, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0) },
32432 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
32433 .{ ._, .vp_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
32434 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
32435 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32436 } },
32437 }, .{
32438 .required_features = .{ .sse4_1, null, null, null },
32439 .src_constraints = .{
32440 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32441 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32442 .any,
32443 },
32444 .patterns = &.{
32445 .{ .src = .{ .to_mem, .to_mem, .none } },
32446 },
32447 .call_frame = .{ .alignment = .@"16" },
32448 .extra_temps = .{
32449 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32450 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32451 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32452 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32453 .unused,
32454 .unused,
32455 .unused,
32456 .unused,
32457 .unused,
32458 .unused,
32459 .unused,
32460 },
32461 .dst_temps = .{ .mem, .unused },
32462 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32463 .each = .{ .once = &.{
32464 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32465 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
32466 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
32467 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
32468 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
32469 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
32470 .{ ._, .p_w, .extr, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1x, .ui(0), ._ },
32471 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
32472 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32473 } },
32474 }, .{
32475 .required_features = .{ .sse2, null, null, null },
32476 .src_constraints = .{
32477 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32478 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32479 .any,
32480 },
32481 .patterns = &.{
32482 .{ .src = .{ .to_mem, .to_mem, .none } },
32483 },
32484 .call_frame = .{ .alignment = .@"16" },
32485 .extra_temps = .{
32486 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32487 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32488 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32489 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32490 .{ .type = .f16, .kind = .{ .reg = .ax } },
32491 .unused,
32492 .unused,
32493 .unused,
32494 .unused,
32495 .unused,
32496 .unused,
32497 },
32498 .dst_temps = .{ .mem, .unused },
32499 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32500 .each = .{ .once = &.{
32501 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32502 .{ .@"0:", .p_, .xor, .tmp1x, .tmp1x, ._, ._ },
32503 .{ ._, .p_, .xor, .tmp2x, .tmp2x, ._, ._ },
32504 .{ ._, .p_w, .insr, .tmp1x, .memia(.src0w, .tmp0, .add_unaligned_size), .ui(0), ._ },
32505 .{ ._, .p_w, .insr, .tmp2x, .memia(.src1w, .tmp0, .add_unaligned_size), .ui(0), ._ },
32506 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
32507 .{ ._, .p_w, .extr, .tmp4d, .tmp1x, .ui(0), ._ },
32508 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp4w, ._, ._ },
32509 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
32510 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32511 } },
32512 }, .{
32513 .required_features = .{ .sse, null, null, null },
32514 .src_constraints = .{
32515 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32516 .{ .multiple_scalar_float = .{ .of = .word, .is = .word } },
32517 .any,
32518 },
32519 .patterns = &.{
32520 .{ .src = .{ .to_mem, .to_mem, .none } },
32521 },
32522 .call_frame = .{ .alignment = .@"16" },
32523 .extra_temps = .{
32524 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32525 .{ .type = .f16, .kind = .{ .reg = .ax } },
32526 .{ .type = .f32, .kind = .mem },
32527 .{ .type = .f16, .kind = .{ .reg = .xmm0 } },
32528 .{ .type = .f16, .kind = .{ .reg = .xmm1 } },
32529 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divhf3" } } },
32530 .unused,
32531 .unused,
32532 .unused,
32533 .unused,
32534 .unused,
32535 },
32536 .dst_temps = .{ .mem, .unused },
32537 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
32538 .each = .{ .once = &.{
32539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32540 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0w, .tmp0, .add_unaligned_size), ._, ._ },
32541 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
32542 .{ ._, ._ss, .mov, .tmp3x, .mem(.tmp2d), ._, ._ },
32543 .{ ._, ._, .movzx, .tmp1d, .memia(.src1w, .tmp0, .add_unaligned_size), ._, ._ },
32544 .{ ._, ._, .mov, .mem(.tmp2d), .tmp1d, ._, ._ },
32545 .{ ._, ._ss, .mov, .tmp4x, .mem(.tmp2d), ._, ._ },
32546 .{ ._, ._, .call, .tmp5d, ._, ._, ._ },
32547 .{ ._, ._ss, .mov, .mem(.tmp2d), .tmp3x, ._, ._ },
32548 .{ ._, ._, .mov, .tmp1d, .mem(.tmp2d), ._, ._ },
32549 .{ ._, ._, .mov, .memia(.dst0w, .tmp0, .add_unaligned_size), .tmp1w, ._, ._ },
32550 .{ ._, ._, .add, .tmp0p, .si(2), ._, ._ },
32551 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32552 } },
32553 }, .{
32554 .required_features = .{ .avx, null, null, null },
32555 .src_constraints = .{
32556 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
32557 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
32558 .any,
32559 },
32560 .patterns = &.{
32561 .{ .src = .{ .to_sse, .mem, .none } },
32562 .{ .src = .{ .to_sse, .to_sse, .none } },
32563 },
32564 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32565 .each = .{ .once = &.{
32566 .{ ._, .v_ss, .div, .dst0x, .src0x, .src1d, ._ },
32567 } },
32568 }, .{
32569 .required_features = .{ .sse, null, null, null },
32570 .src_constraints = .{
32571 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
32572 .{ .scalar_float = .{ .of = .dword, .is = .dword } },
32573 .any,
32574 },
32575 .patterns = &.{
32576 .{ .src = .{ .to_mut_sse, .mem, .none } },
32577 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
32578 },
32579 .dst_temps = .{ .{ .ref = .src0 }, .unused },
32580 .each = .{ .once = &.{
32581 .{ ._, ._ss, .div, .dst0x, .src1d, ._, ._ },
32582 } },
32583 }, .{
32584 .required_features = .{ .avx, null, null, null },
32585 .src_constraints = .{
32586 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
32587 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
32588 .any,
32589 },
32590 .patterns = &.{
32591 .{ .src = .{ .to_sse, .mem, .none } },
32592 .{ .src = .{ .to_sse, .to_sse, .none } },
32593 },
32594 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32595 .each = .{ .once = &.{
32596 .{ ._, .v_ps, .div, .dst0x, .src0x, .src1x, ._ },
32597 } },
32598 }, .{
32599 .required_features = .{ .sse, null, null, null },
32600 .src_constraints = .{
32601 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
32602 .{ .scalar_float = .{ .of = .xword, .is = .dword } },
32603 .any,
32604 },
32605 .patterns = &.{
32606 .{ .src = .{ .to_mut_sse, .mem, .none } },
32607 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
32608 },
32609 .dst_temps = .{ .{ .ref = .src0 }, .unused },
32610 .each = .{ .once = &.{
32611 .{ ._, ._ps, .div, .dst0x, .src1x, ._, ._ },
32612 } },
32613 }, .{
32614 .required_features = .{ .avx, null, null, null },
32615 .src_constraints = .{
32616 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
32617 .{ .scalar_float = .{ .of = .yword, .is = .dword } },
32618 .any,
32619 },
32620 .patterns = &.{
32621 .{ .src = .{ .to_sse, .mem, .none } },
32622 .{ .src = .{ .to_sse, .to_sse, .none } },
32623 },
32624 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32625 .each = .{ .once = &.{
32626 .{ ._, .v_ps, .div, .dst0y, .src0y, .src1y, ._ },
32627 } },
32628 }, .{
32629 .required_features = .{ .avx, null, null, null },
32630 .src_constraints = .{
32631 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
32632 .{ .multiple_scalar_float = .{ .of = .yword, .is = .dword } },
32633 .any,
32634 },
32635 .patterns = &.{
32636 .{ .src = .{ .to_mem, .to_mem, .none } },
32637 },
32638 .extra_temps = .{
32639 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32640 .{ .type = .vector_8_f32, .kind = .{ .rc = .sse } },
32641 .unused,
32642 .unused,
32643 .unused,
32644 .unused,
32645 .unused,
32646 .unused,
32647 .unused,
32648 .unused,
32649 .unused,
32650 },
32651 .dst_temps = .{ .mem, .unused },
32652 .clobbers = .{ .eflags = true },
32653 .each = .{ .once = &.{
32654 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32655 .{ .@"0:", .v_ps, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
32656 .{ ._, .v_ps, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
32657 .{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
32658 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
32659 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32660 } },
32661 }, .{
32662 .required_features = .{ .sse, null, null, null },
32663 .src_constraints = .{
32664 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
32665 .{ .multiple_scalar_float = .{ .of = .xword, .is = .dword } },
32666 .any,
32667 },
32668 .patterns = &.{
32669 .{ .src = .{ .to_mem, .to_mem, .none } },
32670 },
32671 .extra_temps = .{
32672 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32673 .{ .type = .vector_4_f32, .kind = .{ .rc = .sse } },
32674 .unused,
32675 .unused,
32676 .unused,
32677 .unused,
32678 .unused,
32679 .unused,
32680 .unused,
32681 .unused,
32682 .unused,
32683 },
32684 .dst_temps = .{ .mem, .unused },
32685 .clobbers = .{ .eflags = true },
32686 .each = .{ .once = &.{
32687 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32688 .{ .@"0:", ._ps, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32689 .{ ._, ._ps, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
32690 .{ ._, ._ps, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
32691 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32692 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32693 } },
32694 }, .{
32695 .required_features = .{ .avx, null, null, null },
32696 .src_constraints = .{
32697 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
32698 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
32699 .any,
32700 },
32701 .patterns = &.{
32702 .{ .src = .{ .to_sse, .mem, .none } },
32703 .{ .src = .{ .to_sse, .to_sse, .none } },
32704 },
32705 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32706 .each = .{ .once = &.{
32707 .{ ._, .v_sd, .div, .dst0x, .src0x, .src1q, ._ },
32708 } },
32709 }, .{
32710 .required_features = .{ .sse2, null, null, null },
32711 .src_constraints = .{
32712 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
32713 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
32714 .any,
32715 },
32716 .patterns = &.{
32717 .{ .src = .{ .to_mut_sse, .mem, .none } },
32718 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
32719 },
32720 .dst_temps = .{ .{ .ref = .src0 }, .unused },
32721 .each = .{ .once = &.{
32722 .{ ._, ._sd, .div, .dst0x, .src1q, ._, ._ },
32723 } },
32724 }, .{
32725 .required_features = .{ .x87, null, null, null },
32726 .src_constraints = .{
32727 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
32728 .{ .scalar_float = .{ .of = .qword, .is = .qword } },
32729 .any,
32730 },
32731 .patterns = &.{
32732 .{ .src = .{ .mem, .mem, .none } },
32733 },
32734 .extra_temps = .{
32735 .{ .type = .f64, .kind = .{ .reg = .st6 } },
32736 .{ .type = .f64, .kind = .{ .reg = .st7 } },
32737 .unused,
32738 .unused,
32739 .unused,
32740 .unused,
32741 .unused,
32742 .unused,
32743 .unused,
32744 .unused,
32745 .unused,
32746 },
32747 .dst_temps = .{ .mem, .unused },
32748 .each = .{ .once = &.{
32749 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
32750 .{ ._, .f_, .div, .src1q, ._, ._, ._ },
32751 .{ ._, .f_p, .st, .dst0q, ._, ._, ._ },
32752 } },
32753 }, .{
32754 .required_features = .{ .avx, null, null, null },
32755 .src_constraints = .{
32756 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
32757 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
32758 .any,
32759 },
32760 .patterns = &.{
32761 .{ .src = .{ .to_sse, .mem, .none } },
32762 .{ .src = .{ .to_sse, .to_sse, .none } },
32763 },
32764 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32765 .each = .{ .once = &.{
32766 .{ ._, .v_pd, .div, .dst0x, .src0x, .src1x, ._ },
32767 } },
32768 }, .{
32769 .required_features = .{ .sse2, null, null, null },
32770 .src_constraints = .{
32771 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
32772 .{ .scalar_float = .{ .of = .xword, .is = .qword } },
32773 .any,
32774 },
32775 .patterns = &.{
32776 .{ .src = .{ .to_mut_sse, .mem, .none } },
32777 .{ .src = .{ .to_mut_sse, .to_sse, .none } },
32778 },
32779 .dst_temps = .{ .{ .ref = .src0 }, .unused },
32780 .each = .{ .once = &.{
32781 .{ ._, ._pd, .div, .dst0x, .src1x, ._, ._ },
32782 } },
32783 }, .{
32784 .required_features = .{ .avx, null, null, null },
32785 .src_constraints = .{
32786 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
32787 .{ .scalar_float = .{ .of = .yword, .is = .qword } },
32788 .any,
32789 },
32790 .patterns = &.{
32791 .{ .src = .{ .to_sse, .mem, .none } },
32792 .{ .src = .{ .to_sse, .to_sse, .none } },
32793 },
32794 .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .sse } }, .unused },
32795 .each = .{ .once = &.{
32796 .{ ._, .v_pd, .div, .dst0y, .src0y, .src1y, ._ },
32797 } },
32798 }, .{
32799 .required_features = .{ .avx, null, null, null },
32800 .src_constraints = .{
32801 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
32802 .{ .multiple_scalar_float = .{ .of = .yword, .is = .qword } },
32803 .any,
32804 },
32805 .patterns = &.{
32806 .{ .src = .{ .to_mem, .to_mem, .none } },
32807 },
32808 .extra_temps = .{
32809 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32810 .{ .type = .vector_4_f64, .kind = .{ .rc = .sse } },
32811 .unused,
32812 .unused,
32813 .unused,
32814 .unused,
32815 .unused,
32816 .unused,
32817 .unused,
32818 .unused,
32819 .unused,
32820 },
32821 .dst_temps = .{ .mem, .unused },
32822 .clobbers = .{ .eflags = true },
32823 .each = .{ .once = &.{
32824 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32825 .{ .@"0:", .v_pd, .mova, .tmp1y, .memia(.src0y, .tmp0, .add_unaligned_size), ._, ._ },
32826 .{ ._, .v_pd, .div, .tmp1y, .tmp1y, .memia(.src1y, .tmp0, .add_unaligned_size), ._ },
32827 .{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_unaligned_size), .tmp1y, ._, ._ },
32828 .{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
32829 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32830 } },
32831 }, .{
32832 .required_features = .{ .sse2, null, null, null },
32833 .src_constraints = .{
32834 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
32835 .{ .multiple_scalar_float = .{ .of = .xword, .is = .qword } },
32836 .any,
32837 },
32838 .patterns = &.{
32839 .{ .src = .{ .to_mem, .to_mem, .none } },
32840 },
32841 .extra_temps = .{
32842 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32843 .{ .type = .vector_2_f64, .kind = .{ .rc = .sse } },
32844 .unused,
32845 .unused,
32846 .unused,
32847 .unused,
32848 .unused,
32849 .unused,
32850 .unused,
32851 .unused,
32852 .unused,
32853 },
32854 .dst_temps = .{ .mem, .unused },
32855 .clobbers = .{ .eflags = true },
32856 .each = .{ .once = &.{
32857 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32858 .{ .@"0:", ._pd, .mova, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
32859 .{ ._, ._pd, .div, .tmp1x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
32860 .{ ._, ._pd, .mova, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
32861 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
32862 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32863 } },
32864 }, .{
32865 .required_features = .{ .x87, null, null, null },
32866 .src_constraints = .{
32867 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
32868 .{ .multiple_scalar_float = .{ .of = .qword, .is = .qword } },
32869 .any,
32870 },
32871 .patterns = &.{
32872 .{ .src = .{ .to_mem, .to_mem, .none } },
32873 },
32874 .extra_temps = .{
32875 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32876 .{ .type = .f64, .kind = .{ .reg = .st6 } },
32877 .{ .type = .f64, .kind = .{ .reg = .st7 } },
32878 .unused,
32879 .unused,
32880 .unused,
32881 .unused,
32882 .unused,
32883 .unused,
32884 .unused,
32885 .unused,
32886 },
32887 .dst_temps = .{ .mem, .unused },
32888 .clobbers = .{ .eflags = true },
32889 .each = .{ .once = &.{
32890 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
32891 .{ .@"0:", .f_, .ld, .memia(.src0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
32892 .{ ._, .f_, .div, .memia(.src1q, .tmp0, .add_unaligned_size), ._, ._, ._ },
32893 .{ ._, .f_p, .st, .memia(.dst0q, .tmp0, .add_unaligned_size), ._, ._, ._ },
32894 .{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
32895 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
32896 } },
32897 }, .{
32898 .required_features = .{ .x87, null, null, null },
32899 .src_constraints = .{
32900 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
32901 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
32902 .any,
32903 },
32904 .patterns = &.{
32905 .{ .src = .{ .mem, .mem, .none } },
32906 },
32907 .extra_temps = .{
32908 .{ .type = .f80, .kind = .{ .reg = .st6 } },
32909 .{ .type = .f80, .kind = .{ .reg = .st7 } },
32910 .unused,
32911 .unused,
32912 .unused,
32913 .unused,
32914 .unused,
32915 .unused,
32916 .unused,
32917 .unused,
32918 .unused,
32919 },
32920 .dst_temps = .{ .{ .rc = .x87 }, .unused },
32921 .each = .{ .once = &.{
32922 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
32923 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
32924 .{ ._, .f_p, .div, ._, ._, ._, ._ },
32925 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
32926 } },
32927 }, .{
32928 .required_features = .{ .x87, null, null, null },
32929 .src_constraints = .{
32930 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
32931 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
32932 .any,
32933 },
32934 .patterns = &.{
32935 .{ .src = .{ .to_x87, .mem, .none }, .commute = .{ 0, 1 } },
32936 },
32937 .extra_temps = .{
32938 .{ .type = .f80, .kind = .{ .reg = .st7 } },
32939 .unused,
32940 .unused,
32941 .unused,
32942 .unused,
32943 .unused,
32944 .unused,
32945 .unused,
32946 .unused,
32947 .unused,
32948 .unused,
32949 },
32950 .dst_temps = .{ .{ .rc = .x87 }, .unused },
32951 .each = .{ .once = &.{
32952 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
32953 .{ ._, .f_, .divr, .tmp0t, .src1t, ._, ._ },
32954 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
32955 } },
32956 }, .{
32957 .required_features = .{ .x87, null, null, null },
32958 .src_constraints = .{
32959 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
32960 .{ .scalar_float = .{ .of = .xword, .is = .tbyte } },
32961 .any,
32962 },
32963 .patterns = &.{
32964 .{ .src = .{ .mem, .to_x87, .none } },
32965 .{ .src = .{ .to_x87, .to_x87, .none } },
32966 },
32967 .extra_temps = .{
32968 .{ .type = .f80, .kind = .{ .reg = .st7 } },
32969 .unused,
32970 .unused,
32971 .unused,
32972 .unused,
32973 .unused,
32974 .unused,
32975 .unused,
32976 .unused,
32977 .unused,
32978 .unused,
32979 },
32980 .dst_temps = .{ .{ .rc = .x87 }, .unused },
32981 .each = .{ .once = &.{
32982 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
32983 .{ ._, .f_, .div, .tmp0t, .src1t, ._, ._ },
32984 .{ ._, .f_p, .st, .dst0t, ._, ._, ._ },
32985 } },
32986 }, .{
32987 .required_features = .{ .x87, null, null, null },
32988 .src_constraints = .{
32989 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
32990 .{ .multiple_scalar_float = .{ .of = .xword, .is = .tbyte } },
32991 .any,
32992 },
32993 .patterns = &.{
32994 .{ .src = .{ .to_mem, .to_mem, .none } },
32995 },
32996 .extra_temps = .{
32997 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
32998 .{ .type = .f80, .kind = .{ .reg = .st6 } },
32999 .{ .type = .f80, .kind = .{ .reg = .st7 } },
33000 .unused,
33001 .unused,
33002 .unused,
33003 .unused,
33004 .unused,
33005 .unused,
33006 .unused,
33007 .unused,
33008 },
33009 .dst_temps = .{ .mem, .unused },
33010 .clobbers = .{ .eflags = true },
33011 .each = .{ .once = &.{
33012 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33013 .{ .@"0:", .f_, .ld, .memia(.src0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
33014 .{ ._, .f_, .ld, .memia(.src1t, .tmp0, .add_unaligned_size), ._, ._, ._ },
33015 .{ ._, .f_p, .div, ._, ._, ._, ._ },
33016 .{ ._, .f_p, .st, .memia(.dst0t, .tmp0, .add_unaligned_size), ._, ._, ._ },
33017 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33018 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33019 } },
33020 }, .{
33021 .required_features = .{ .sse, null, null, null },
33022 .src_constraints = .{
33023 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
33024 .{ .scalar_float = .{ .of = .xword, .is = .xword } },
33025 .any,
33026 },
33027 .patterns = &.{
33028 .{ .src = .{ .{ .to_reg = .xmm0 }, .{ .to_reg = .xmm1 }, .none } },
33029 },
33030 .call_frame = .{ .alignment = .@"16" },
33031 .extra_temps = .{
33032 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
33033 .unused,
33034 .unused,
33035 .unused,
33036 .unused,
33037 .unused,
33038 .unused,
33039 .unused,
33040 .unused,
33041 .unused,
33042 .unused,
33043 },
33044 .dst_temps = .{ .{ .ref = .src0 }, .unused },
33045 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33046 .each = .{ .once = &.{
33047 .{ ._, ._, .call, .tmp0d, ._, ._, ._ },
33048 } },
33049 }, .{
33050 .required_features = .{ .avx, null, null, null },
33051 .src_constraints = .{
33052 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
33053 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
33054 .any,
33055 },
33056 .patterns = &.{
33057 .{ .src = .{ .to_mem, .to_mem, .none } },
33058 },
33059 .call_frame = .{ .alignment = .@"16" },
33060 .extra_temps = .{
33061 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
33062 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
33063 .{ .type = .f128, .kind = .{ .reg = .xmm1 } },
33064 .{ .type = .usize, .kind = .{ .symbol = &.{ .name = "__divtf3" } } },
33065 .unused,
33066 .unused,
33067 .unused,
33068 .unused,
33069 .unused,
33070 .unused,
33071 .unused,
33072 },
33073 .dst_temps = .{ .mem, .unused },
33074 .clobbers = .{ .eflags = true, .caller_preserved = .ccc },
33075 .each = .{ .once = &.{
33076 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
33077 .{ .@"0:", .v_dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_unaligned_size), ._, ._ },
33078 .{ ._, .v_dqa, .mov, .tmp2x, .memia(.src1x, .tmp0, .add_unaligned_size), ._, ._ },
33079 .{ ._, ._, .call, .tmp3d, ._, ._, ._ },
33080 .{ ._, .v_dqa, .mov, .memia(.dst0x, .tmp0, .add_unaligned_size), .tmp1x, ._, ._ },
33081 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
33082 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
33083 } },
33084 }, .{
33085 .required_features = .{ .sse2, null, null, null },
33086 .src_constraints = .{
33087 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
33088 .{ .multiple_scalar_float = .{ .of = .xword, .is = .xword } },
33089 .any,
33090 },
33091 .patterns = &.{
33092 .{ .src = .{ .to_mem, .to_mem, .none } },
33093 },
33094 .call_frame = .{ .alignment = .@"16" },
2787833095 .extra_temps = .{
2787933096 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
2788033097 .{ .type = .f128, .kind = .{ .reg = .xmm0 } },
......@@ -31476,7 +36693,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3147636693 },
3147736694 .extra_temps = .{
3147836695 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31479 .{ .type = .i8, .kind = .{ .reg = .ah } },
36696 .{ .type = .i16, .kind = .{ .reg = .ax } },
3148036697 .unused,
3148136698 .unused,
3148236699 .unused,
......@@ -31493,7 +36710,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3149336710 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3149436711 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
3149536712 .{ ._, .i_, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ },
31496 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36713 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ },
3149736714 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3149836715 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3149936716 } },
......@@ -31508,7 +36725,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3150836725 },
3150936726 .extra_temps = .{
3151036727 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31511 .{ .type = .i8, .kind = .{ .reg = .ah } },
36728 .{ .type = .i16, .kind = .{ .reg = .ax } },
3151236729 .unused,
3151336730 .unused,
3151436731 .unused,
......@@ -31525,7 +36742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3152536742 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3152636743 .{ .@"0:", ._, .movsx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
3152736744 .{ ._, .i_, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ },
31528 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36745 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ },
3152936746 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3153036747 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3153136748 } },
......@@ -31541,7 +36758,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3154136758 },
3154236759 .extra_temps = .{
3154336760 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31544 .{ .type = .u8, .kind = .{ .reg = .ah } },
36761 .{ .type = .u16, .kind = .{ .reg = .ax } },
3154536762 .unused,
3154636763 .unused,
3154736764 .unused,
......@@ -31558,7 +36775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3155836775 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3155936776 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
3156036777 .{ ._, ._, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ },
31561 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36778 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ },
3156236779 .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
3156336780 .{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
3156436781 } },
......@@ -31573,7 +36790,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3157336790 },
3157436791 .extra_temps = .{
3157536792 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
31576 .{ .type = .u8, .kind = .{ .reg = .ah } },
36793 .{ .type = .u16, .kind = .{ .reg = .ax } },
3157736794 .unused,
3157836795 .unused,
3157936796 .unused,
......@@ -31590,7 +36807,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3159036807 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_unaligned_size), ._, ._ },
3159136808 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_unaligned_size), ._, ._ },
3159236809 .{ ._, ._, .div, .memia(.src1b, .tmp0, .add_unaligned_size), ._, ._, ._ },
31593 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1b, ._, ._ },
36810 .{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_unaligned_size), .tmp1h, ._, ._ },
3159436811 .{ ._, ._c, .in, .tmp0p, ._, ._, ._ },
3159536812 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
3159636813 } },
......@@ -38951,7 +44168,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3895144168 },
3895244169 .extra_temps = .{
3895344170 .{ .type = .f80, .kind = .{ .reg = .st7 } },
38954 .{ .type = .u8, .kind = .{ .reg = .ah } },
44171 .{ .type = .u16, .kind = .{ .reg = .ax } },
3895544172 .unused,
3895644173 .unused,
3895744174 .unused,
......@@ -38994,7 +44211,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3899444211 },
3899544212 .extra_temps = .{
3899644213 .{ .type = .f80, .kind = .{ .reg = .st7 } },
38997 .{ .type = .u8, .kind = .{ .reg = .ah } },
44214 .{ .type = .u16, .kind = .{ .reg = .ax } },
3899844215 .unused,
3899944216 .unused,
3900044217 .unused,
......@@ -39011,13 +44228,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3901144228 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
3901244229 .{ ._, .f_, .xam, ._, ._, ._, ._ },
3901344230 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
39014 .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ },
44231 .{ ._, ._, .@"test", .tmp1h, .si(0b1_000_100), ._, ._ },
3901544232 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
3901644233 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
3901744234 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
3901844235 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
3901944236 .{ ._, .f_, .xch, .src1t, ._, ._, ._ },
39020 .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ },
44237 .{ ._, ._, .@"test", .tmp1h, .si(0b0_000_001), ._, ._ },
3902144238 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
3902244239 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
3902344240 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
......@@ -39077,7 +44294,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3907744294 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3907844295 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3907944296 .{ .type = .f80, .kind = .{ .reg = .st7 } },
39080 .{ .type = .u8, .kind = .{ .reg = .ah } },
44297 .{ .type = .u16, .kind = .{ .reg = .ax } },
3908144298 .unused,
3908244299 .unused,
3908344300 .unused,
......@@ -39123,7 +44340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3912344340 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
3912444341 .{ .type = .f80, .kind = .{ .reg = .st6 } },
3912544342 .{ .type = .f80, .kind = .{ .reg = .st7 } },
39126 .{ .type = .u8, .kind = .{ .reg = .ah } },
44343 .{ .type = .u16, .kind = .{ .reg = .ax } },
3912744344 .unused,
3912844345 .unused,
3912944346 .unused,
......@@ -39140,13 +44357,13 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
3914044357 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
3914144358 .{ ._, .f_, .xam, ._, ._, ._, ._ },
3914244359 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
39143 .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ },
44360 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
3914444361 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
3914544362 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
3914644363 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
3914744364 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
3914844365 .{ ._, .f_, .xch, .tmp2t, ._, ._, ._ },
39149 .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ },
44366 .{ ._, ._, .@"test", .tmp3h, .si(0b0_000_001), ._, ._ },
3915044367 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
3915144368 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
3915244369 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
......@@ -43108,7 +48325,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4310848325 },
4310948326 .extra_temps = .{
4311048327 .{ .type = .f80, .kind = .{ .reg = .st7 } },
43111 .{ .type = .u8, .kind = .{ .reg = .ah } },
48328 .{ .type = .u16, .kind = .{ .reg = .ax } },
4311248329 .unused,
4311348330 .unused,
4311448331 .unused,
......@@ -43149,7 +48366,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4314948366 },
4315048367 .extra_temps = .{
4315148368 .{ .type = .f80, .kind = .{ .reg = .st7 } },
43152 .{ .type = .u8, .kind = .{ .reg = .ah } },
48369 .{ .type = .u16, .kind = .{ .reg = .ax } },
4315348370 .unused,
4315448371 .unused,
4315548372 .unused,
......@@ -43166,11 +48383,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4316648383 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
4316748384 .{ ._, .f_, .xam, ._, ._, ._, ._ },
4316848385 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
43169 .{ ._, ._, .@"test", .tmp1b, .si(0b1_000_100), ._, ._ },
48386 .{ ._, ._, .@"test", .tmp1h, .si(0b1_000_100), ._, ._ },
4317048387 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
4317148388 .{ ._, .f_, .ucom, .src1t, ._, ._, ._ },
4317248389 .{ ._, .fn_sw, .st, .tmp1w, ._, ._, ._ },
43173 .{ ._, ._, .@"test", .tmp1b, .si(0b0_000_001), ._, ._ },
48390 .{ ._, ._, .@"test", .tmp1h, .si(0b0_000_001), ._, ._ },
4317448391 .{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
4317548392 .{ .@"0:", .f_p, .st, .tmp0t, ._, ._, ._ },
4317648393 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
......@@ -43228,7 +48445,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4322848445 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4322948446 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4323048447 .{ .type = .f80, .kind = .{ .reg = .st7 } },
43231 .{ .type = .u8, .kind = .{ .reg = .ah } },
48448 .{ .type = .u16, .kind = .{ .reg = .ax } },
4323248449 .unused,
4323348450 .unused,
4323448451 .unused,
......@@ -43272,7 +48489,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4327248489 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
4327348490 .{ .type = .f80, .kind = .{ .reg = .st6 } },
4327448491 .{ .type = .f80, .kind = .{ .reg = .st7 } },
43275 .{ .type = .u8, .kind = .{ .reg = .ah } },
48492 .{ .type = .u16, .kind = .{ .reg = .ax } },
4327648493 .unused,
4327748494 .unused,
4327848495 .unused,
......@@ -43289,11 +48506,11 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4328948506 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
4329048507 .{ ._, .f_, .xam, ._, ._, ._, ._ },
4329148508 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
43292 .{ ._, ._, .@"test", .tmp3b, .si(0b1_000_100), ._, ._ },
48509 .{ ._, ._, .@"test", .tmp3h, .si(0b1_000_100), ._, ._ },
4329348510 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
4329448511 .{ ._, .f_, .ucom, .tmp2t, ._, ._, ._ },
4329548512 .{ ._, .fn_sw, .st, .tmp3w, ._, ._, ._ },
43296 .{ ._, ._, .@"test", .tmp3b, .si(0b0_000_001), ._, ._ },
48513 .{ ._, ._, .@"test", .tmp3h, .si(0b0_000_001), ._, ._ },
4329748514 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
4329848515 .{ .@"1:", .f_p, .st, .tmp1t, ._, ._, ._ },
4329948516 .{ ._, .f_, .ld, .tmp2t, ._, ._, ._ },
......@@ -43897,8 +49114,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4389749114 }, .{
4389849115 .required_features = .{ .@"64bit", null, null, null },
4389949116 .src_constraints = .{
43900 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
43901 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
49117 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
49118 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
4390249119 .any,
4390349120 },
4390449121 .patterns = &.{
......@@ -43937,8 +49154,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4393749154 }, .{
4393849155 .required_features = .{ .@"64bit", null, null, null },
4393949156 .src_constraints = .{
43940 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
43941 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
49157 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
49158 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4394249159 .any,
4394349160 },
4394449161 .patterns = &.{
......@@ -43972,8 +49189,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4397249189 }, .{
4397349190 .required_features = .{ .@"64bit", null, null, null },
4397449191 .src_constraints = .{
43975 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
43976 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
49192 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
49193 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4397749194 .any,
4397849195 },
4397949196 .patterns = &.{
......@@ -44009,8 +49226,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4400949226 }, .{
4401049227 .required_features = .{ .@"64bit", null, null, null },
4401149228 .src_constraints = .{
44012 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
44013 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
49229 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
49230 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4401449231 .any,
4401549232 },
4401649233 .patterns = &.{
......@@ -44803,8 +50020,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4480350020 }, .{
4480450021 .required_features = .{ .@"64bit", null, null, null },
4480550022 .src_constraints = .{
44806 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
44807 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
50023 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
50024 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
4480850025 .any,
4480950026 },
4481050027 .patterns = &.{
......@@ -44843,8 +50060,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4484350060 }, .{
4484450061 .required_features = .{ .@"64bit", null, null, null },
4484550062 .src_constraints = .{
44846 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
44847 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
50063 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
50064 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4484850065 .any,
4484950066 },
4485050067 .patterns = &.{
......@@ -44878,8 +50095,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4487850095 }, .{
4487950096 .required_features = .{ .@"64bit", null, null, null },
4488050097 .src_constraints = .{
44881 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
44882 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
50098 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
50099 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4488350100 .any,
4488450101 },
4488550102 .patterns = &.{
......@@ -44915,8 +50132,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4491550132 }, .{
4491650133 .required_features = .{ .@"64bit", null, null, null },
4491750134 .src_constraints = .{
44918 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
44919 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
50135 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
50136 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4492050137 .any,
4492150138 },
4492250139 .patterns = &.{
......@@ -45271,7 +50488,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4527150488 .{ .src = .{ .{ .to_reg = .al }, .to_gpr, .none } },
4527250489 },
4527350490 .extra_temps = .{
45274 .{ .type = .i16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
50491 .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src1, .rc = .general_purpose } } },
4527550492 .unused,
4527650493 .unused,
4527750494 .unused,
......@@ -45401,7 +50618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4540150618 .{ ._, ._, .mul, .src1w, ._, ._, ._ },
4540250619 .{ ._, ._, .mov, .tmp1d, .dst0d, ._, ._ },
4540350620 .{ ._, ._, .@"and", .dst0w, .ua(.src0, .add_umax), ._, ._ },
45404 .{ ._, ._, .@"and", .tmp1w, .uia(std.math.maxInt(u16), .src0, .sub_umax), ._, ._ },
50621 .{ ._, ._, .@"and", .tmp1w, .sa(.src0, .add_2_smin), ._, ._ },
4540550622 .{ ._, ._, .@"or", .tmp1w, .tmp0w, ._, ._ },
4540650623 } },
4540750624 }, .{
......@@ -45692,8 +50909,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4569250909 }, .{
4569350910 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
4569450911 .src_constraints = .{
45695 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
45696 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
50912 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
50913 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4569750914 .any,
4569850915 },
4569950916 .patterns = &.{
......@@ -45803,8 +51020,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4580351020 }, .{
4580451021 .required_features = .{ .@"64bit", .cmov, null, null },
4580551022 .src_constraints = .{
45806 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
45807 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
51023 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
51024 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4580851025 .any,
4580951026 },
4581051027 .patterns = &.{
......@@ -45914,8 +51131,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4591451131 }, .{
4591551132 .required_features = .{ .@"64bit", .slow_incdec, null, null },
4591651133 .src_constraints = .{
45917 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
45918 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
51134 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
51135 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4591951136 .any,
4592051137 },
4592151138 .patterns = &.{
......@@ -46025,353 +51242,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4602551242 }, .{
4602651243 .required_features = .{ .@"64bit", null, null, null },
4602751244 .src_constraints = .{
46028 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
46029 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
46030 .any,
46031 },
46032 .patterns = &.{
46033 .{ .src = .{ .to_mem, .to_mem, .none } },
46034 },
46035 .extra_temps = .{
46036 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46037 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46038 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46039 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46040 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46041 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46042 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46043 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46044 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46045 .{ .type = .u64, .kind = .{ .reg = .rax } },
46046 .{ .type = .u64, .kind = .{ .reg = .rdx } },
46047 },
46048 .dst_temps = .{ .mem, .{ .cc = .nz } },
46049 .clobbers = .{ .eflags = true },
46050 .each = .{ .once = &.{
46051 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
46052 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
46053 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
46054 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
46055 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46056 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46057 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
46058 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
46059 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
46060 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46061 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
46062 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
46063 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
46064 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
46065 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
46066 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
46067 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
46068 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
46069 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
46070 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
46071 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
46072 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
46073 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
46074 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
46075 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
46076 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
46077 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
46078 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
46079 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
46080 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
46081 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
46082 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
46083 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
46084 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
46085 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
46086 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
46087 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46088 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
46089 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
46090 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
46091 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
46092 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46093 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
46094 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
46095 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
46096 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
46097 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
46098 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
46099 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
46100 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
46101 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
46102 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
46103 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
46104 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
46105 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
46106 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46107 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
46108 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
46109 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
46110 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
46111 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
46112 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
46113 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
46114 .{ ._, ._c, .st, ._, ._, ._, ._ },
46115 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
46116 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
46117 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
46118 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
46119 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
46120 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
46121 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
46122 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46123 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
46124 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
46125 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
46126 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
46127 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46128 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
46129 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
46130 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
46131 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
46132 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
46133 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
46134 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
46135 } },
46136 }, .{
46137 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
46138 .src_constraints = .{
46139 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
46140 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
46141 .any,
46142 },
46143 .patterns = &.{
46144 .{ .src = .{ .to_mem, .to_mem, .none } },
46145 },
46146 .extra_temps = .{
46147 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46148 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46149 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46150 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46151 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46152 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46153 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46154 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46155 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46156 .{ .type = .u64, .kind = .{ .reg = .rax } },
46157 .{ .type = .u64, .kind = .{ .reg = .rdx } },
46158 },
46159 .dst_temps = .{ .mem, .{ .cc = .nz } },
46160 .clobbers = .{ .eflags = true },
46161 .each = .{ .once = &.{
46162 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
46163 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
46164 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
46165 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
46166 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46167 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46168 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
46169 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
46170 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
46171 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46172 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
46173 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
46174 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
46175 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
46176 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
46177 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
46178 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
46179 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
46180 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
46181 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
46182 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
46183 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
46184 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
46185 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
46186 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
46187 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
46188 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
46189 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
46190 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
46191 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
46192 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
46193 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
46194 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
46195 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
46196 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
46197 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
46198 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
46199 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
46200 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
46201 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
46202 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
46203 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46204 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
46205 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
46206 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
46207 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
46208 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
46209 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
46210 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
46211 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
46212 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
46213 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
46214 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
46215 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
46216 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
46217 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46218 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
46219 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
46220 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
46221 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
46222 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
46223 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
46224 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
46225 .{ ._, ._c, .st, ._, ._, ._, ._ },
46226 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
46227 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
46228 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
46229 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
46230 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
46231 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
46232 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
46233 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46234 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
46235 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
46236 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
46237 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
46238 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46239 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
46240 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
46241 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
46242 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
46243 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
46244 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
46245 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
46246 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
46247 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
46248 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
46249 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
46250 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
46251 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
46252 } },
46253 }, .{
46254 .required_features = .{ .@"64bit", .cmov, null, null },
46255 .src_constraints = .{
46256 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
46257 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
46258 .any,
46259 },
46260 .patterns = &.{
46261 .{ .src = .{ .to_mem, .to_mem, .none } },
46262 },
46263 .extra_temps = .{
46264 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46265 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46266 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
46267 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46268 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46269 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
46270 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46271 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
46272 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
46273 .{ .type = .u64, .kind = .{ .reg = .rax } },
46274 .{ .type = .u64, .kind = .{ .reg = .rdx } },
46275 },
46276 .dst_temps = .{ .mem, .{ .cc = .nz } },
46277 .clobbers = .{ .eflags = true },
46278 .each = .{ .once = &.{
46279 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
46280 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
46281 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
46282 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
46283 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46284 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46285 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
46286 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
46287 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
46288 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46289 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
46290 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
46291 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
46292 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
46293 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
46294 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
46295 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
46296 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
46297 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
46298 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
46299 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
46300 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
46301 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
46302 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
46303 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
46304 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
46305 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
46306 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
46307 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
46308 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
46309 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
46310 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
46311 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
46312 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
46313 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
46314 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
46315 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
46316 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
46317 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
46318 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
46319 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
46320 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46321 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
46322 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
46323 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
46324 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
46325 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
46326 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
46327 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
46328 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
46329 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
46330 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
46331 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
46332 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
46333 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
46334 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46335 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
46336 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
46337 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
46338 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
46339 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
46340 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
46341 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
46342 .{ ._, ._c, .st, ._, ._, ._, ._ },
46343 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
46344 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
46345 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
46346 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
46347 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
46348 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
46349 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
46350 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
46351 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
46352 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
46353 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
46354 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
46355 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
46356 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
46357 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
46358 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
46359 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
46360 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
46361 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
46362 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
46363 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
46364 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
46365 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
46366 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
46367 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
46368 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
46369 } },
46370 }, .{
46371 .required_features = .{ .@"64bit", .slow_incdec, null, null },
46372 .src_constraints = .{
46373 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
46374 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
51245 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
51246 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4637551247 .any,
4637651248 },
4637751249 .patterns = &.{
......@@ -46429,6 +51301,345 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4642951301 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
4643051302 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
4643151303 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
51304 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
51305 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
51306 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
51307 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
51308 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
51309 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51310 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
51311 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
51312 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
51313 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
51314 .{ ._, ._z, .j, .@"0f", ._, ._, ._ },
51315 .{ ._, ._, .lea, .tmp2q, .memad(.src1, .add_size, -8), ._, ._ },
51316 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
51317 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
51318 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
51319 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
51320 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
51321 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
51322 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
51323 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
51324 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
51325 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
51326 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
51327 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
51328 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
51329 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
51330 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
51331 .{ ._, ._c, .st, ._, ._, ._, ._ },
51332 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
51333 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
51334 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
51335 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
51336 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
51337 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
51338 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
51339 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
51340 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
51341 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
51342 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
51343 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
51344 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51345 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
51346 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
51347 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
51348 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
51349 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
51350 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
51351 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
51352 } },
51353 }, .{
51354 .required_features = .{ .@"64bit", .cmov, .slow_incdec, null },
51355 .src_constraints = .{
51356 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51357 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51358 .any,
51359 },
51360 .patterns = &.{
51361 .{ .src = .{ .to_mem, .to_mem, .none } },
51362 },
51363 .extra_temps = .{
51364 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
51365 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51366 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
51367 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51368 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51369 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
51370 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51371 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
51372 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51373 .{ .type = .u64, .kind = .{ .reg = .rax } },
51374 .{ .type = .u64, .kind = .{ .reg = .rdx } },
51375 },
51376 .dst_temps = .{ .mem, .{ .cc = .nz } },
51377 .clobbers = .{ .eflags = true },
51378 .each = .{ .once = &.{
51379 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
51380 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
51381 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
51382 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
51383 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
51384 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
51385 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
51386 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51387 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
51388 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
51389 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
51390 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
51391 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
51392 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
51393 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
51394 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
51395 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
51396 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
51397 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
51398 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
51399 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
51400 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
51401 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
51402 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
51403 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
51404 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
51405 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
51406 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
51407 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
51408 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
51409 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
51410 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
51411 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
51412 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
51413 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
51414 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
51415 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
51416 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
51417 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
51418 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51419 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
51420 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
51421 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
51422 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
51423 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
51424 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
51425 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
51426 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
51427 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
51428 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
51429 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
51430 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
51431 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
51432 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
51433 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
51434 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
51435 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
51436 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
51437 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
51438 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
51439 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
51440 .{ ._, ._c, .st, ._, ._, ._, ._ },
51441 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
51442 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
51443 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
51444 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
51445 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
51446 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
51447 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
51448 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
51449 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
51450 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
51451 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
51452 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
51453 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51454 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
51455 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
51456 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
51457 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
51458 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
51459 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
51460 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
51461 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
51462 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
51463 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
51464 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
51465 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
51466 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
51467 } },
51468 }, .{
51469 .required_features = .{ .@"64bit", .cmov, null, null },
51470 .src_constraints = .{
51471 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51472 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51473 .any,
51474 },
51475 .patterns = &.{
51476 .{ .src = .{ .to_mem, .to_mem, .none } },
51477 },
51478 .extra_temps = .{
51479 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
51480 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51481 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
51482 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51483 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51484 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
51485 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51486 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
51487 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51488 .{ .type = .u64, .kind = .{ .reg = .rax } },
51489 .{ .type = .u64, .kind = .{ .reg = .rdx } },
51490 },
51491 .dst_temps = .{ .mem, .{ .cc = .nz } },
51492 .clobbers = .{ .eflags = true },
51493 .each = .{ .once = &.{
51494 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
51495 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
51496 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
51497 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
51498 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
51499 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
51500 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
51501 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51502 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
51503 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
51504 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
51505 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
51506 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
51507 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
51508 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
51509 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
51510 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
51511 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
51512 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
51513 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
51514 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
51515 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
51516 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
51517 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
51518 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
51519 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
51520 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
51521 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
51522 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
51523 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
51524 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
51525 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
51526 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
51527 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
51528 .{ ._, ._c, .de, .tmp0d, ._, ._, ._ },
51529 .{ ._, ._ns, .j, .@"0b", ._, ._, ._ },
51530 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
51531 .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
51532 .{ ._, ._, .xor, .tmp6d, .tmp6d, ._, ._ },
51533 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51534 .{ ._, ._, .cmp, .tmp1b, .tmp3b, ._, ._ },
51535 .{ ._, ._e, .j, .@"1f", ._, ._, ._ },
51536 .{ ._, ._, .lea, .tmp2q, .memad(.src0, .add_size, -8), ._, ._ },
51537 .{ ._, ._, .lea, .tmp8q, .memad(.src1, .add_size, -8), ._, ._ },
51538 .{ ._, ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
51539 .{ ._, ._nz, .cmov, .tmp2q, .tmp8q, ._, ._ },
51540 .{ .@"0:", ._, .mov, .tmp8d, .tmp7d, ._, ._ },
51541 .{ ._, ._, .sbb, .tmp8q, .leasi(.tmp2q, .@"8", .tmp0), ._, ._ },
51542 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
51543 .{ ._, ._, .sbb, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
51544 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
51545 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
51546 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
51547 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
51548 .{ ._, ._, .mov, .tmp8d, .tmp7d, ._, ._ },
51549 .{ ._, ._, .sbb, .tmp8q, .lea(.tmp2q), ._, ._ },
51550 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
51551 .{ ._, ._, .sbb, .tmp8q, .tmp5q, ._, ._ },
51552 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
51553 .{ .@"1:", ._, .@"test", .tmp1b, .tmp1b, ._, ._ },
51554 .{ ._, ._z, .j, .@"1f", ._, ._, ._ },
51555 .{ ._, ._c, .st, ._, ._, ._, ._ },
51556 .{ .@"0:", ._, .mov, .tmp8q, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), ._, ._ },
51557 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src0q, .@"8", .tmp0, .add_size, -8), ._, ._ },
51558 .{ ._, ._, .adc, .tmp6b, .tmp6b, ._, ._ },
51559 .{ ._, ._, .sbb, .tmp8q, .memsiad(.src1q, .@"8", .tmp0, .add_size, -8), ._, ._ },
51560 .{ ._, ._r, .rc, .tmp6b, .ui(1), ._, ._ },
51561 .{ ._, ._, .mov, .memsiad(.dst0q, .@"8", .tmp0, .add_src0_size, -8), .tmp8q, ._, ._ },
51562 .{ ._, ._c, .in, .tmp0q, ._, ._, ._ },
51563 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
51564 .{ ._, ._, .mov, .tmp8q, .tmp5q, ._, ._ },
51565 .{ ._, ._, .sbb, .tmp8q, .memad(.src0q, .add_size, -8), ._, ._ },
51566 .{ ._, ._o, .set, .tmp7b, ._, ._, ._ },
51567 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
51568 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51569 .{ ._, ._, .add, .tmp6b, .tmp6b, ._, ._ },
51570 .{ ._, ._, .sbb, .tmp8q, .memad(.src1q, .add_size, -8), ._, ._ },
51571 .{ .@"2:", ._o, .set, .tmp7b, ._, ._, ._ },
51572 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp8q, ._, ._ },
51573 .{ ._, ._, .@"or", .tmp4b, .tmp7b, ._, ._ },
51574 .{ .@"1:", ._r, .sh, .tmp5q, .ui(63), ._, ._ },
51575 .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ },
51576 .{ ._, ._, .mov, .tmp0q, .memad(.dst0q, .add_src0_size, -16), ._, ._ },
51577 .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
51578 .{ ._, ._, .mov, .tmp1q, .tmp0q, ._, ._ },
51579 .{ ._, ._, .xor, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ },
51580 .{ ._, ._, .mov, .memad(.dst0q, .add_src0_size, -8), .tmp0q, ._, ._ },
51581 .{ ._, ._, .@"or", .tmp4q, .tmp1q, ._, ._ },
51582 } },
51583 }, .{
51584 .required_features = .{ .@"64bit", .slow_incdec, null, null },
51585 .src_constraints = .{
51586 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51587 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51588 .any,
51589 },
51590 .patterns = &.{
51591 .{ .src = .{ .to_mem, .to_mem, .none } },
51592 },
51593 .extra_temps = .{
51594 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
51595 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51596 .{ .type = .usize, .kind = .{ .rc = .general_purpose } },
51597 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51598 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51599 .{ .type = .isize, .kind = .{ .rc = .general_purpose } },
51600 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51601 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
51602 .{ .type = .u64, .kind = .{ .rc = .general_purpose } },
51603 .{ .type = .u64, .kind = .{ .reg = .rax } },
51604 .{ .type = .u64, .kind = .{ .reg = .rdx } },
51605 },
51606 .dst_temps = .{ .mem, .{ .cc = .nz } },
51607 .clobbers = .{ .eflags = true },
51608 .each = .{ .once = &.{
51609 .{ ._, ._, .mov, .tmp0d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
51610 .{ ._, ._, .mov, .tmp1q, .memad(.src0q, .add_size, -8), ._, ._ },
51611 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
51612 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
51613 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
51614 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
51615 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
51616 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
51617 .{ ._, ._, .xor, .tmp8d, .tmp8d, ._, ._ },
51618 .{ ._, ._, .xor, .tmp6q, .tmp1q, ._, ._ },
51619 .{ ._, ._nz, .j, .@"2f", ._, ._, ._ },
51620 .{ ._, ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp6q, ._, ._ },
51621 .{ ._, ._mp, .j, .@"3f", ._, ._, ._ },
51622 .{ .@"1:", ._, .adc, .tmp10q, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), ._, ._ },
51623 .{ ._, ._, .adc, .tmp7b, .si(0), ._, ._ },
51624 .{ ._, ._, .mov, .tmp8q, .tmp10q, ._, ._ },
51625 .{ .@"2:", ._, .mov, .tmp9q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
51626 .{ ._, ._, .xor, .tmp9q, .tmp3q, ._, ._ },
51627 .{ ._, ._, .mul, .tmp6q, ._, ._, ._ },
51628 .{ ._, ._l, .sh, .tmp7b, .ui(4), ._, ._ },
51629 .{ ._, ._, .adc, .tmp9q, .tmp8q, ._, ._ },
51630 .{ ._, ._, .mov, .memsia(.dst0q, .@"8", .tmp5, .add_src0_size), .tmp9q, ._, ._ },
51631 .{ ._, ._c, .in, .tmp5p, ._, ._, ._ },
51632 .{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
51633 .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
51634 .{ ._, ._, .adc, .tmp10q, .si(0), ._, ._ },
51635 .{ ._, ._mp, .j, .@"2f", ._, ._, ._ },
51636 .{ .@"1:", ._, .mov, .tmp6q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ },
51637 .{ ._, ._, .xor, .tmp6q, .tmp3q, ._, ._ },
51638 .{ ._, ._, .@"or", .tmp10q, .tmp6q, ._, ._ },
51639 .{ .@"2:", ._c, .de, .tmp5d, ._, ._, ._ },
51640 .{ ._, ._ns, .j, .@"1b", ._, ._, ._ },
51641 .{ ._, ._, .@"or", .tmp4q, .tmp10q, ._, ._ },
51642 .{ .@"3:", ._, .lea, .tmp2p, .lead(.tmp2, 8), ._, ._ },
4643251643 .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ },
4643351644 .{ ._, ._ae, .j, .@"0b", ._, ._, ._ },
4643451645 .{ ._, ._, .mov, .tmp0q, .sia(1, .src0, .sub_size_div_8), ._, ._ },
......@@ -46487,8 +51698,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4648751698 }, .{
4648851699 .required_features = .{ .@"64bit", null, null, null },
4648951700 .src_constraints = .{
46490 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
46491 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
51701 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
51702 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
4649251703 .any,
4649351704 },
4649451705 .patterns = &.{
......@@ -46515,8 +51726,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4651551726 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
4651651727 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
4651751728 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46518 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46519 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
4652051729 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
4652151730 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
4652251731 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
......@@ -46632,8 +51841,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4663251841 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
4663351842 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
4663451843 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46635 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46636 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
4663751844 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
4663851845 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
4663951846 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
......@@ -46755,8 +51962,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4675551962 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
4675651963 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
4675751964 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46758 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46759 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
4676051965 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
4676151966 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
4676251967 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
......@@ -46878,8 +52083,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4687852083 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
4687952084 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
4688052085 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
46881 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
46882 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
4688352086 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
4688452087 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
4688552088 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
......@@ -47001,8 +52204,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4700152204 .{ ._, ._, .lea, .tmp2p, .memd(.src1, 8), ._, ._ },
4700252205 .{ ._, ._, .mov, .tmp3q, .memad(.src1q, .add_size, -8), ._, ._ },
4700352206 .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
47004 .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ },
47005 .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
4700652207 .{ .@"0:", ._, .lea, .tmp5p, .leaa(.tmp0, .sub_src0_size_div_8), ._, ._ },
4700752208 .{ ._, ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp0), ._, ._ },
4700852209 .{ ._, ._, .xor, .tmp7d, .tmp7d, ._, ._ },
......@@ -47568,8 +52769,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4756852769 }, .{
4756952770 .required_features = .{ .@"64bit", .bmi2, .adx, null },
4757052771 .src_constraints = .{
47571 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
47572 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
52772 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
52773 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4757352774 .any,
4757452775 },
4757552776 .patterns = &.{
......@@ -47626,8 +52827,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4762652827 }, .{
4762752828 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
4762852829 .src_constraints = .{
47629 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
47630 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
52830 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
52831 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4763152832 .any,
4763252833 },
4763352834 .patterns = &.{
......@@ -47685,8 +52886,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4768552886 }, .{
4768652887 .required_features = .{ .@"64bit", .bmi2, null, null },
4768752888 .src_constraints = .{
47688 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
47689 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
52889 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
52890 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4769052891 .any,
4769152892 },
4769252893 .patterns = &.{
......@@ -47744,8 +52945,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4774452945 }, .{
4774552946 .required_features = .{ .@"64bit", .slow_incdec, null, null },
4774652947 .src_constraints = .{
47747 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
47748 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
52948 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
52949 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4774952950 .any,
4775052951 },
4775152952 .patterns = &.{
......@@ -47803,8 +53004,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4780353004 }, .{
4780453005 .required_features = .{ .@"64bit", null, null, null },
4780553006 .src_constraints = .{
47806 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
47807 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
53007 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
53008 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4780853009 .any,
4780953010 },
4781053011 .patterns = &.{
......@@ -47862,8 +53063,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4786253063 }, .{
4786353064 .required_features = .{ .@"64bit", .bmi2, .adx, null },
4786453065 .src_constraints = .{
47865 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
47866 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
53066 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
53067 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4786753068 .any,
4786853069 },
4786953070 .patterns = &.{
......@@ -47921,8 +53122,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4792153122 }, .{
4792253123 .required_features = .{ .@"64bit", .bmi2, .slow_incdec, null },
4792353124 .src_constraints = .{
47924 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
47925 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
53125 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
53126 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4792653127 .any,
4792753128 },
4792853129 .patterns = &.{
......@@ -47981,8 +53182,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4798153182 }, .{
4798253183 .required_features = .{ .@"64bit", .bmi2, null, null },
4798353184 .src_constraints = .{
47984 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
47985 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
53185 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
53186 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4798653187 .any,
4798753188 },
4798853189 .patterns = &.{
......@@ -48041,8 +53242,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4804153242 }, .{
4804253243 .required_features = .{ .@"64bit", .slow_incdec, null, null },
4804353244 .src_constraints = .{
48044 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
48045 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
53245 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
53246 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4804653247 .any,
4804753248 },
4804853249 .patterns = &.{
......@@ -48101,8 +53302,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4810153302 }, .{
4810253303 .required_features = .{ .@"64bit", null, null, null },
4810353304 .src_constraints = .{
48104 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
48105 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
53305 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
53306 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
4810653307 .any,
4810753308 },
4810853309 .patterns = &.{
......@@ -49647,7 +54848,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4964754848 }, .{
4964854849 .required_features = .{ .@"64bit", .slow_incdec, null, null },
4964954850 .src_constraints = .{
49650 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
54851 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4965154852 .{ .unsigned_int = .byte },
4965254853 .any,
4965354854 },
......@@ -49711,7 +54912,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4971154912 }, .{
4971254913 .required_features = .{ .@"64bit", null, null, null },
4971354914 .src_constraints = .{
49714 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
54915 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4971554916 .{ .unsigned_int = .byte },
4971654917 .any,
4971754918 },
......@@ -49775,7 +54976,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4977554976 }, .{
4977654977 .required_features = .{ .@"64bit", .slow_incdec, null, null },
4977754978 .src_constraints = .{
49778 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
54979 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4977954980 .{ .unsigned_int = .word },
4978054981 .any,
4978154982 },
......@@ -49839,7 +55040,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4983955040 }, .{
4984055041 .required_features = .{ .@"64bit", null, null, null },
4984155042 .src_constraints = .{
49842 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .xword } },
55043 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } },
4984355044 .{ .unsigned_int = .word },
4984455045 .any,
4984555046 },
......@@ -49903,7 +55104,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4990355104 }, .{
4990455105 .required_features = .{ .@"64bit", .slow_incdec, null, null },
4990555106 .src_constraints = .{
49906 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
55107 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4990755108 .{ .unsigned_int = .byte },
4990855109 .any,
4990955110 },
......@@ -49959,7 +55160,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
4995955160 }, .{
4996055161 .required_features = .{ .@"64bit", null, null, null },
4996155162 .src_constraints = .{
49962 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
55163 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
4996355164 .{ .unsigned_int = .byte },
4996455165 .any,
4996555166 },
......@@ -50015,7 +55216,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5001555216 }, .{
5001655217 .required_features = .{ .@"64bit", .slow_incdec, null, null },
5001755218 .src_constraints = .{
50018 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
55219 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
5001955220 .{ .unsigned_int = .word },
5002055221 .any,
5002155222 },
......@@ -50071,7 +55272,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5007155272 }, .{
5007255273 .required_features = .{ .@"64bit", null, null, null },
5007355274 .src_constraints = .{
50074 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .xword } },
55275 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } },
5007555276 .{ .unsigned_int = .word },
5007655277 .any,
5007755278 },
......@@ -50127,7 +55328,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5012755328 }, .{
5012855329 .required_features = .{ .@"64bit", .slow_incdec, null, null },
5012955330 .src_constraints = .{
50130 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
55331 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
5013155332 .{ .unsigned_int = .byte },
5013255333 .any,
5013355334 },
......@@ -50191,7 +55392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5019155392 }, .{
5019255393 .required_features = .{ .@"64bit", null, null, null },
5019355394 .src_constraints = .{
50194 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
55395 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
5019555396 .{ .unsigned_int = .byte },
5019655397 .any,
5019755398 },
......@@ -50255,7 +55456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5025555456 }, .{
5025655457 .required_features = .{ .@"64bit", .slow_incdec, null, null },
5025755458 .src_constraints = .{
50258 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
55459 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
5025955460 .{ .unsigned_int = .word },
5026055461 .any,
5026155462 },
......@@ -50319,7 +55520,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5031955520 }, .{
5032055521 .required_features = .{ .@"64bit", null, null, null },
5032155522 .src_constraints = .{
50322 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } },
55523 .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } },
5032355524 .{ .unsigned_int = .word },
5032455525 .any,
5032555526 },
......@@ -50383,7 +55584,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5038355584 }, .{
5038455585 .required_features = .{ .@"64bit", .slow_incdec, null, null },
5038555586 .src_constraints = .{
50386 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
55587 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
5038755588 .{ .unsigned_int = .byte },
5038855589 .any,
5038955590 },
......@@ -50440,7 +55641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5044055641 }, .{
5044155642 .required_features = .{ .@"64bit", null, null, null },
5044255643 .src_constraints = .{
50443 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
55644 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
5044455645 .{ .unsigned_int = .byte },
5044555646 .any,
5044655647 },
......@@ -50497,7 +55698,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5049755698 }, .{
5049855699 .required_features = .{ .@"64bit", .slow_incdec, null, null },
5049955700 .src_constraints = .{
50500 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
55701 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
5050155702 .{ .unsigned_int = .word },
5050255703 .any,
5050355704 },
......@@ -50554,7 +55755,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5055455755 }, .{
5055555756 .required_features = .{ .@"64bit", null, null, null },
5055655757 .src_constraints = .{
50557 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } },
55758 .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } },
5055855759 .{ .unsigned_int = .word },
5055955760 .any,
5056055761 },
......@@ -54031,7 +59232,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5403159232 } },
5403259233 }, .{
5403359234 .required_features = .{ .@"64bit", null, null, null },
54034 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
59235 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 32 } }, .any, .any },
5403559236 .patterns = &.{
5403659237 .{ .src = .{ .mut_mem, .none, .none } },
5403759238 },
......@@ -54060,7 +59261,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5406059261 } },
5406159262 }, .{
5406259263 .required_features = .{ .@"64bit", null, null, null },
54063 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .dword } }, .any, .any },
59264 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 32 } }, .any, .any },
5406459265 .patterns = &.{
5406559266 .{ .src = .{ .to_mem, .none, .none } },
5406659267 },
......@@ -54094,7 +59295,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5409459295 } },
5409559296 }, .{
5409659297 .required_features = .{ .@"64bit", null, null, null },
54097 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
59298 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = 64 } }, .any, .any },
5409859299 .patterns = &.{
5409959300 .{ .src = .{ .mut_mem, .none, .none } },
5410059301 },
......@@ -54123,7 +59324,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5412359324 } },
5412459325 }, .{
5412559326 .required_features = .{ .@"64bit", null, null, null },
54126 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = .qword } }, .any, .any },
59327 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .qword, .is = 64 } }, .any, .any },
5412759328 .patterns = &.{
5412859329 .{ .src = .{ .to_mem, .none, .none } },
5412959330 },
......@@ -54153,7 +59354,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5415359354 } },
5415459355 }, .{
5415559356 .required_features = .{ .@"64bit", null, null, null },
54156 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any },
59357 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = 32 } }, .any, .any },
5415759358 .patterns = &.{
5415859359 .{ .src = .{ .mut_mem, .none, .none } },
5415959360 },
......@@ -54181,7 +59382,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5418159382 } },
5418259383 }, .{
5418359384 .required_features = .{ .@"64bit", null, null, null },
54184 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = .dword } }, .any, .any },
59385 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .dword, .is = 32 } }, .any, .any },
5418559386 .patterns = &.{
5418659387 .{ .src = .{ .to_mem, .none, .none } },
5418759388 },
......@@ -55117,7 +60318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5511760318 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
5511860319 .{ ._, ._, .@"and", .tmp0d, .sa(.src0, .add_umax), ._, ._ },
5511960320 .{ ._, ._r, .bs, .tmp0d, .tmp0d, ._, ._ },
55120 .{ ._, ._, .mov, .dst0d, .si(0xff), ._, ._ },
60321 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
5512160322 .{ ._, ._z, .cmov, .tmp0d, .dst0d, ._, ._ },
5512260323 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5512360324 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55147,7 +60348,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5514760348 .each = .{ .once = &.{
5514860349 .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
5514960350 .{ ._, ._r, .bs, .tmp0d, .tmp0d, ._, ._ },
55150 .{ ._, ._, .mov, .dst0d, .si(0xff), ._, ._ },
60351 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
5515160352 .{ ._, ._z, .cmov, .tmp0d, .dst0d, ._, ._ },
5515260353 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5515360354 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55325,7 +60526,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5532560526 .each = .{ .once = &.{
5532660527 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
5532760528 .{ ._, ._, .@"and", .dst0d, .sa(.src0, .add_umax), ._, ._ },
55328 .{ ._, ._, .mov, .tmp0d, .si(0xff), ._, ._ },
60529 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5532960530 .{ ._, ._r, .bs, .tmp0d, .dst0d, ._, ._ },
5533060531 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5533160532 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55353,7 +60554,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5535360554 .clobbers = .{ .eflags = true },
5535460555 .each = .{ .once = &.{
5535560556 .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
55356 .{ ._, ._, .mov, .tmp0d, .si(0xff), ._, ._ },
60557 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5535760558 .{ ._, ._r, .bs, .tmp0d, .dst0d, ._, ._ },
5535860559 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5535960560 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55383,8 +60584,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5538360584 .each = .{ .once = &.{
5538460585 .{ ._, ._, .@"and", .src0w, .sa(.src0, .add_umax), ._, ._ },
5538560586 .{ ._, ._r, .bs, .src0w, .src0w, ._, ._ },
55386 .{ ._, ._, .mov, .dst0w, .si(0xff), ._, ._ },
55387 .{ ._, ._z, .cmov, .src0w, .dst0w, ._, ._ },
60587 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
60588 .{ ._, ._z, .cmov, .src0d, .dst0d, ._, ._ },
5538860589 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5538960590 .{ ._, ._, .sub, .dst0b, .src0b, ._, ._ },
5539060591 } },
......@@ -55398,8 +60599,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5539860599 .clobbers = .{ .eflags = true },
5539960600 .each = .{ .once = &.{
5540060601 .{ ._, ._r, .bs, .src0w, .src0w, ._, ._ },
55401 .{ ._, ._, .mov, .dst0w, .si(0xff), ._, ._ },
55402 .{ ._, ._z, .cmov, .src0w, .dst0w, ._, ._ },
60602 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
60603 .{ ._, ._z, .cmov, .src0d, .dst0d, ._, ._ },
5540360604 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5540460605 .{ ._, ._, .sub, .dst0b, .src0b, ._, ._ },
5540560606 } },
......@@ -55483,7 +60684,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5548360684 .clobbers = .{ .eflags = true },
5548460685 .each = .{ .once = &.{
5548560686 .{ ._, ._, .@"and", .src0w, .sa(.src0, .add_umax), ._, ._ },
55486 .{ ._, ._, .mov, .tmp0w, .si(0xff), ._, ._ },
60687 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5548760688 .{ ._, ._r, .bs, .tmp0w, .src0w, ._, ._ },
5548860689 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5548960690 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55510,7 +60711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5551060711 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
5551160712 .clobbers = .{ .eflags = true },
5551260713 .each = .{ .once = &.{
55513 .{ ._, ._, .mov, .tmp0w, .si(0xff), ._, ._ },
60714 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5551460715 .{ ._, ._r, .bs, .tmp0w, .src0w, ._, ._ },
5551560716 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5551660717 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55540,7 +60741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5554060741 .each = .{ .once = &.{
5554160742 .{ ._, ._, .@"and", .src0d, .sa(.src0, .add_umax), ._, ._ },
5554260743 .{ ._, ._r, .bs, .src0d, .src0d, ._, ._ },
55543 .{ ._, ._, .mov, .dst0d, .si(0xff), ._, ._ },
60744 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
5554460745 .{ ._, ._z, .cmov, .src0d, .dst0d, ._, ._ },
5554560746 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5554660747 .{ ._, ._, .sub, .dst0b, .src0b, ._, ._ },
......@@ -55555,7 +60756,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5555560756 .clobbers = .{ .eflags = true },
5555660757 .each = .{ .once = &.{
5555760758 .{ ._, ._r, .bs, .src0d, .src0d, ._, ._ },
55558 .{ ._, ._, .mov, .dst0d, .si(0xff), ._, ._ },
60759 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
5555960760 .{ ._, ._z, .cmov, .src0d, .dst0d, ._, ._ },
5556060761 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5556160762 .{ ._, ._, .sub, .dst0b, .src0b, ._, ._ },
......@@ -55640,7 +60841,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5564060841 .clobbers = .{ .eflags = true },
5564160842 .each = .{ .once = &.{
5564260843 .{ ._, ._, .@"and", .src0d, .sa(.src0, .add_umax), ._, ._ },
55643 .{ ._, ._, .mov, .tmp0d, .si(0xff), ._, ._ },
60844 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5564460845 .{ ._, ._r, .bs, .tmp0d, .src0d, ._, ._ },
5564560846 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5564660847 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55667,7 +60868,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5566760868 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
5566860869 .clobbers = .{ .eflags = true },
5566960870 .each = .{ .once = &.{
55670 .{ ._, ._, .mov, .tmp0d, .si(0xff), ._, ._ },
60871 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5567160872 .{ ._, ._r, .bs, .tmp0d, .src0d, ._, ._ },
5567260873 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5567360874 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55712,7 +60913,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5571260913 .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ },
5571360914 .{ ._, ._, .@"and", .tmp0q, .src0q, ._, ._ },
5571460915 .{ ._, ._r, .bs, .tmp0q, .tmp0q, ._, ._ },
55715 .{ ._, ._, .mov, .dst0d, .si(0xff), ._, ._ },
60916 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
5571660917 .{ ._, ._z, .cmov, .tmp0d, .dst0d, ._, ._ },
5571760918 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5571860919 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55727,7 +60928,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5572760928 .clobbers = .{ .eflags = true },
5572860929 .each = .{ .once = &.{
5572960930 .{ ._, ._r, .bs, .src0q, .src0q, ._, ._ },
55730 .{ ._, ._, .mov, .dst0d, .si(0xff), ._, ._ },
60931 .{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
5573160932 .{ ._, ._z, .cmov, .src0d, .dst0d, ._, ._ },
5573260933 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5573360934 .{ ._, ._, .sub, .dst0b, .src0b, ._, ._ },
......@@ -55831,7 +61032,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5583161032 .each = .{ .once = &.{
5583261033 .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ },
5583361034 .{ ._, ._, .@"and", .dst0q, .src0q, ._, ._ },
55834 .{ ._, ._, .mov, .tmp0d, .si(0xff), ._, ._ },
61035 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5583561036 .{ ._, ._r, .bs, .tmp0q, .dst0q, ._, ._ },
5583661037 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5583761038 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -55859,7 +61060,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5585961060 .dst_temps = .{ .{ .rc = .general_purpose }, .unused },
5586061061 .clobbers = .{ .eflags = true },
5586161062 .each = .{ .once = &.{
55862 .{ ._, ._, .mov, .tmp0d, .si(0xff), ._, ._ },
61063 .{ ._, ._, .mov, .tmp0d, .si(-1), ._, ._ },
5586361064 .{ ._, ._r, .bs, .tmp0q, .src0q, ._, ._ },
5586461065 .{ ._, ._, .mov, .dst0b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5586561066 .{ ._, ._, .sub, .dst0b, .tmp0b, ._, ._ },
......@@ -56597,7 +61798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5659761798 .clobbers = .{ .eflags = true },
5659861799 .each = .{ .once = &.{
5659961800 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
56600 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
61801 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5660161802 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_len), ._, ._ },
5660261803 .{ ._, ._, .@"and", .tmp2d, .sa(.src0, .add_umax), ._, ._ },
5660361804 .{ ._, ._r, .bs, .tmp2d, .tmp2d, ._, ._ },
......@@ -56631,7 +61832,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5663161832 .clobbers = .{ .eflags = true },
5663261833 .each = .{ .once = &.{
5663361834 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
56634 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
61835 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5663561836 .{ .@"0:", ._, .movzx, .tmp2d, .memia(.src0b, .tmp0, .add_len), ._, ._ },
5663661837 .{ ._, ._, .@"and", .tmp2d, .sa(.src0, .add_umax), ._, ._ },
5663761838 .{ ._, ._r, .bs, .tmp2d, .tmp2d, ._, ._ },
......@@ -56735,7 +61936,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5673561936 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5673661937 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_len), ._, ._ },
5673761938 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_umax), ._, ._ },
56738 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
61939 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5673961940 .{ ._, ._r, .bs, .tmp2d, .tmp1d, ._, ._ },
5674061941 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5674161942 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -56767,7 +61968,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5676761968 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5676861969 .{ .@"0:", ._, .movzx, .tmp1d, .memia(.src0b, .tmp0, .add_len), ._, ._ },
5676961970 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_umax), ._, ._ },
56770 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
61971 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5677161972 .{ ._, ._r, .bs, .tmp2d, .tmp1d, ._, ._ },
5677261973 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5677361974 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -56798,7 +61999,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5679861999 .clobbers = .{ .eflags = true },
5679962000 .each = .{ .once = &.{
5680062001 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
56801 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
62002 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5680262003 .{ .@"0:", ._, .movzx, .tmp2d, .memsia(.src0w, .@"2", .tmp0, .add_2_len), ._, ._ },
5680362004 .{ ._, ._, .@"and", .tmp2d, .sa(.src0, .add_umax), ._, ._ },
5680462005 .{ ._, ._r, .bs, .tmp2d, .tmp2d, ._, ._ },
......@@ -56832,7 +62033,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5683262033 .clobbers = .{ .eflags = true },
5683362034 .each = .{ .once = &.{
5683462035 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
56835 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
62036 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5683662037 .{ .@"0:", ._, .movzx, .tmp2d, .memsia(.src0w, .@"2", .tmp0, .add_2_len), ._, ._ },
5683762038 .{ ._, ._, .@"and", .tmp2d, .sa(.src0, .add_umax), ._, ._ },
5683862039 .{ ._, ._r, .bs, .tmp2d, .tmp2d, ._, ._ },
......@@ -56936,7 +62137,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5693662137 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5693762138 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_2_len), ._, ._ },
5693862139 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_umax), ._, ._ },
56939 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
62140 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5694062141 .{ ._, ._r, .bs, .tmp2d, .tmp1d, ._, ._ },
5694162142 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5694262143 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -56968,7 +62169,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5696862169 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5696962170 .{ .@"0:", ._, .movzx, .tmp1d, .memsia(.src0w, .@"2", .tmp0, .add_2_len), ._, ._ },
5697062171 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_umax), ._, ._ },
56971 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
62172 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5697262173 .{ ._, ._r, .bs, .tmp2d, .tmp1d, ._, ._ },
5697362174 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5697462175 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -56999,7 +62200,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5699962200 .clobbers = .{ .eflags = true },
5700062201 .each = .{ .once = &.{
5700162202 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
57002 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
62203 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5700362204 .{ .@"0:", ._, .mov, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_4_len), ._, ._ },
5700462205 .{ ._, ._, .@"and", .tmp2d, .sa(.src0, .add_umax), ._, ._ },
5700562206 .{ ._, ._r, .bs, .tmp2d, .tmp2d, ._, ._ },
......@@ -57033,7 +62234,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5703362234 .clobbers = .{ .eflags = true },
5703462235 .each = .{ .once = &.{
5703562236 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
57036 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
62237 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5703762238 .{ .@"0:", ._, .mov, .tmp2d, .memsia(.src0d, .@"4", .tmp0, .add_4_len), ._, ._ },
5703862239 .{ ._, ._, .@"and", .tmp2d, .sa(.src0, .add_umax), ._, ._ },
5703962240 .{ ._, ._r, .bs, .tmp2d, .tmp2d, ._, ._ },
......@@ -57137,7 +62338,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5713762338 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5713862339 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_4_len), ._, ._ },
5713962340 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_umax), ._, ._ },
57140 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
62341 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5714162342 .{ ._, ._r, .bs, .tmp2d, .tmp1d, ._, ._ },
5714262343 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5714362344 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -57169,7 +62370,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5716962370 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5717062371 .{ .@"0:", ._, .mov, .tmp1d, .memsia(.src0d, .@"4", .tmp0, .add_4_len), ._, ._ },
5717162372 .{ ._, ._, .@"and", .tmp1d, .sa(.src0, .add_umax), ._, ._ },
57172 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
62373 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5717362374 .{ ._, ._r, .bs, .tmp2d, .tmp1d, ._, ._ },
5717462375 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5717562376 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -57200,7 +62401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5720062401 .clobbers = .{ .eflags = true },
5720162402 .each = .{ .once = &.{
5720262403 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
57203 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
62404 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5720462405 .{ .@"0:", ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
5720562406 .{ ._, ._, .@"and", .tmp2q, .memsia(.src0q, .@"8", .tmp0, .add_8_len), ._, ._ },
5720662407 .{ ._, ._r, .bs, .tmp2q, .tmp2q, ._, ._ },
......@@ -57234,7 +62435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5723462435 .clobbers = .{ .eflags = true },
5723562436 .each = .{ .once = &.{
5723662437 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
57237 .{ ._, ._, .mov, .tmp1d, .si(0xff), ._, ._ },
62438 .{ ._, ._, .mov, .tmp1d, .si(-1), ._, ._ },
5723862439 .{ .@"0:", ._, .mov, .tmp2q, .ua(.src0, .add_umax), ._, ._ },
5723962440 .{ ._, ._, .@"and", .tmp2q, .memsia(.src0q, .@"8", .tmp0, .add_8_len), ._, ._ },
5724062441 .{ ._, ._r, .bs, .tmp2q, .tmp2q, ._, ._ },
......@@ -57338,7 +62539,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5733862539 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5733962540 .{ .@"0:", ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
5734062541 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_8_len), ._, ._ },
57341 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
62542 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5734262543 .{ ._, ._r, .bs, .tmp2q, .tmp1q, ._, ._ },
5734362544 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5734462545 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -57371,7 +62572,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5737162572 .{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_len), ._, ._ },
5737262573 .{ .@"0:", ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ },
5737362574 .{ ._, ._, .@"and", .tmp1q, .memsia(.src0q, .@"8", .tmp0, .add_8_len), ._, ._ },
57374 .{ ._, ._, .mov, .tmp2d, .si(0xff), ._, ._ },
62575 .{ ._, ._, .mov, .tmp2d, .si(-1), ._, ._ },
5737562576 .{ ._, ._r, .bs, .tmp2q, .tmp1q, ._, ._ },
5737662577 .{ ._, ._, .mov, .tmp1b, .sia(-1, .src0, .add_bit_size), ._, ._ },
5737762578 .{ ._, ._, .sub, .tmp1b, .tmp2b, ._, ._ },
......@@ -59339,7 +64540,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5933964540 } },
5934064541 }, .{
5934164542 .required_features = .{ .@"64bit", .movbe, null, null },
59342 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
64543 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
5934364544 .patterns = &.{
5934464545 .{ .src = .{ .to_mem, .none, .none } },
5934564546 },
......@@ -59369,7 +64570,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5936964570 } },
5937064571 }, .{
5937164572 .required_features = .{ .@"64bit", null, null, null },
59372 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
64573 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
5937364574 .patterns = &.{
5937464575 .{ .src = .{ .to_mem, .none, .none } },
5937564576 },
......@@ -59400,7 +64601,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5940064601 } },
5940164602 }, .{
5940264603 .required_features = .{ .@"64bit", .movbe, null, null },
59403 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
64604 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any, .any },
5940464605 .patterns = &.{
5940564606 .{ .src = .{ .to_mem, .none, .none } },
5940664607 },
......@@ -59433,7 +64634,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5943364634 } },
5943464635 }, .{
5943564636 .required_features = .{ .@"64bit", null, null, null },
59436 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
64637 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any, .any },
5943764638 .patterns = &.{
5943864639 .{ .src = .{ .to_mem, .none, .none } },
5943964640 },
......@@ -59467,7 +64668,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5946764668 } },
5946864669 }, .{
5946964670 .required_features = .{ .@"64bit", .movbe, null, null },
59470 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
64671 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any, .any },
5947164672 .patterns = &.{
5947264673 .{ .src = .{ .to_mem, .none, .none } },
5947364674 },
......@@ -59498,7 +64699,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
5949864699 } },
5949964700 }, .{
5950064701 .required_features = .{ .@"64bit", null, null, null },
59501 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
64702 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any, .any },
5950264703 .patterns = &.{
5950364704 .{ .src = .{ .to_mem, .none, .none } },
5950464705 },
......@@ -62067,7 +67268,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6206767268 } },
6206867269 }, .{
6206967270 .required_features = .{ .avx2, .gfni, null, null },
62070 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any },
67271 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .yword, .is = 256 } }, .any, .any },
6207167272 .patterns = &.{
6207267273 .{ .src = .{ .to_mem, .none, .none } },
6207367274 },
......@@ -62103,7 +67304,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6210367304 } },
6210467305 }, .{
6210567306 .required_features = .{ .avx, .gfni, null, null },
62106 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .yword, .is = .yword } }, .any, .any },
67307 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .yword, .is = 256 } }, .any, .any },
6210767308 .patterns = &.{
6210867309 .{ .src = .{ .to_mem, .none, .none } },
6210967310 },
......@@ -62139,7 +67340,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6213967340 } },
6214067341 }, .{
6214167342 .required_features = .{ .avx, .gfni, null, null },
62142 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
67343 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
6214367344 .patterns = &.{
6214467345 .{ .src = .{ .to_mem, .none, .none } },
6214567346 },
......@@ -62175,7 +67376,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6217567376 } },
6217667377 }, .{
6217767378 .required_features = .{ .@"64bit", .movbe, null, null },
62178 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
67379 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
6217967380 .patterns = &.{
6218067381 .{ .src = .{ .to_mem, .none, .none } },
6218167382 },
......@@ -62226,7 +67427,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6222667427 } },
6222767428 }, .{
6222867429 .required_features = .{ .@"64bit", null, null, null },
62229 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
67430 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
6223067431 .patterns = &.{
6223167432 .{ .src = .{ .to_mem, .none, .none } },
6223267433 },
......@@ -62278,7 +67479,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6227867479 } },
6227967480 }, .{
6228067481 .required_features = .{ .@"64bit", .movbe, null, null },
62281 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
67482 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any, .any },
6228267483 .patterns = &.{
6228367484 .{ .src = .{ .to_mem, .none, .none } },
6228467485 },
......@@ -62333,7 +67534,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6233367534 } },
6233467535 }, .{
6233567536 .required_features = .{ .@"64bit", null, null, null },
62336 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
67537 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any, .any },
6233767538 .patterns = &.{
6233867539 .{ .src = .{ .to_mem, .none, .none } },
6233967540 },
......@@ -62389,7 +67590,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6238967590 } },
6239067591 }, .{
6239167592 .required_features = .{ .@"64bit", .movbe, null, null },
62392 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
67593 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any, .any },
6239367594 .patterns = &.{
6239467595 .{ .src = .{ .to_mem, .none, .none } },
6239567596 },
......@@ -62441,7 +67642,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6244167642 } },
6244267643 }, .{
6244367644 .required_features = .{ .@"64bit", null, null, null },
62444 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
67645 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any, .any },
6244567646 .patterns = &.{
6244667647 .{ .src = .{ .to_mem, .none, .none } },
6244767648 },
......@@ -64694,7 +69895,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6469469895 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
6469569896 .{ .type = .f64, .kind = .{ .reg = .st6 } },
6469669897 .{ .type = .f64, .kind = .{ .reg = .st7 } },
64697 .{ .type = .u8, .kind = .{ .reg = .ah } },
69898 .{ .type = .u16, .kind = .{ .reg = .ax } },
6469869899 .unused,
6469969900 .unused,
6470069901 .unused,
......@@ -64713,8 +69914,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6471369914 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
6471469915 switch (cc) {
6471569916 else => unreachable,
64716 .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ },
64717 .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ },
69917 .l => .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_001), ._, ._ },
69918 .le => .{ ._, ._r, .sh, .tmp6h, .ui(1), ._, ._ },
6471869919 },
6471969920 .{ ._, .fromCond(switch (cc) {
6472069921 else => unreachable,
......@@ -64864,7 +70065,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6486470065 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
6486570066 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6486670067 .{ .type = .f80, .kind = .{ .reg = .st7 } },
64867 .{ .type = .u8, .kind = .{ .reg = .ah } },
70068 .{ .type = .u16, .kind = .{ .reg = .ax } },
6486870069 .unused,
6486970070 .unused,
6487070071 .unused,
......@@ -64883,8 +70084,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6488370084 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
6488470085 switch (cc) {
6488570086 else => unreachable,
64886 .l => .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_001), ._, ._ },
64887 .le => .{ ._, ._r, .sh, .tmp6b, .ui(1), ._, ._ },
70087 .l => .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_001), ._, ._ },
70088 .le => .{ ._, ._r, .sh, .tmp6h, .ui(1), ._, ._ },
6488870089 },
6488970090 .{ ._, .fromCond(switch (cc) {
6489070091 else => unreachable,
......@@ -69216,7 +74417,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6921674417 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
6921774418 .{ .type = .f64, .kind = .{ .reg = .st6 } },
6921874419 .{ .type = .f64, .kind = .{ .reg = .st7 } },
69219 .{ .type = .u8, .kind = .{ .reg = .ah } },
74420 .{ .type = .u16, .kind = .{ .reg = .ax } },
6922074421 .unused,
6922174422 .unused,
6922274423 .unused,
......@@ -69233,8 +74434,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6923374434 .{ ._, .f_, .ld, .memia(.src0q, .tmp0, .add_size), ._, ._, ._ },
6923474435 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
6923574436 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
69236 .{ ._, ._, .xor, .tmp6b, .si(0b1_000_000), ._, ._ },
69237 .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_100), ._, ._ },
74437 .{ ._, ._, .xor, .tmp6h, .si(0b1_000_000), ._, ._ },
74438 .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_100), ._, ._ },
6923874439 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
6923974440 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
6924074441 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
......@@ -69393,7 +74594,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6939374594 .{ .type = .u8, .kind = .{ .rc = .general_purpose } },
6939474595 .{ .type = .f80, .kind = .{ .reg = .st6 } },
6939574596 .{ .type = .f80, .kind = .{ .reg = .st7 } },
69396 .{ .type = .u8, .kind = .{ .reg = .ah } },
74597 .{ .type = .u16, .kind = .{ .reg = .ax } },
6939774598 .unused,
6939874599 .unused,
6939974600 .unused,
......@@ -69410,8 +74611,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
6941074611 .{ ._, .f_, .ld, .memia(.src0t, .tmp0, .add_size), ._, ._, ._ },
6941174612 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
6941274613 .{ ._, .fn_sw, .st, .tmp6w, ._, ._, ._ },
69413 .{ ._, ._, .xor, .tmp6b, .si(0b1_000_000), ._, ._ },
69414 .{ ._, ._, .@"test", .tmp6b, .si(0b1_000_100), ._, ._ },
74614 .{ ._, ._, .xor, .tmp6h, .si(0b1_000_000), ._, ._ },
74615 .{ ._, ._, .@"test", .tmp6h, .si(0b1_000_100), ._, ._ },
6941574616 .{ ._, .fromCond(cc), .set, .tmp3b, ._, ._, ._ },
6941674617 .{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
6941774618 .{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
......@@ -74953,7 +80154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7495380154 .extra_temps = .{
7495480155 .{ .type = .f64, .kind = .{ .reg = .st6 } },
7495580156 .{ .type = .f64, .kind = .{ .reg = .st7 } },
74956 .{ .type = .u8, .kind = .{ .reg = .ah } },
80157 .{ .type = .u16, .kind = .{ .reg = .ax } },
7495780158 .unused,
7495880159 .unused,
7495980160 .unused,
......@@ -74984,7 +80185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7498480185 .extra_temps = .{
7498580186 .{ .type = .f64, .kind = .{ .reg = .st6 } },
7498680187 .{ .type = .f64, .kind = .{ .reg = .st7 } },
74987 .{ .type = .u8, .kind = .{ .reg = .ah } },
80188 .{ .type = .u16, .kind = .{ .reg = .ax } },
7498880189 .unused,
7498980190 .unused,
7499080191 .unused,
......@@ -75005,8 +80206,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7500580206 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
7500680207 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
7500780208 switch (strict) {
75008 true => .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_001), ._, ._ },
75009 false => .{ ._, ._r, .sh, .tmp2b, .ui(1), ._, ._ },
80209 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
80210 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
7501080211 },
7501180212 } },
7501280213 }, .{
......@@ -75047,7 +80248,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7504780248 .extra_temps = .{
7504880249 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7504980250 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75050 .{ .type = .u8, .kind = .{ .reg = .ah } },
80251 .{ .type = .u16, .kind = .{ .reg = .ax } },
7505180252 .unused,
7505280253 .unused,
7505380254 .unused,
......@@ -75079,7 +80280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7507980280 .extra_temps = .{
7508080281 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7508180282 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75082 .{ .type = .u8, .kind = .{ .reg = .ah } },
80283 .{ .type = .u16, .kind = .{ .reg = .ax } },
7508380284 .unused,
7508480285 .unused,
7508580286 .unused,
......@@ -75109,7 +80310,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7510980310 .extra_temps = .{
7511080311 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7511180312 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75112 .{ .type = .u8, .kind = .{ .reg = .ah } },
80313 .{ .type = .u16, .kind = .{ .reg = .ax } },
7511380314 .unused,
7511480315 .unused,
7511580316 .unused,
......@@ -75130,8 +80331,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7513080331 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
7513180332 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
7513280333 switch (strict) {
75133 true => .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_001), ._, ._ },
75134 false => .{ ._, ._r, .sh, .tmp2b, .ui(1), ._, ._ },
80334 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
80335 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
7513580336 },
7513680337 } },
7513780338 }, .{
......@@ -75144,7 +80345,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7514480345 .extra_temps = .{
7514580346 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7514680347 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75147 .{ .type = .u8, .kind = .{ .reg = .ah } },
80348 .{ .type = .u16, .kind = .{ .reg = .ax } },
7514880349 .unused,
7514980350 .unused,
7515080351 .unused,
......@@ -75164,8 +80365,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7516480365 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
7516580366 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
7516680367 switch (strict) {
75167 true => .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_001), ._, ._ },
75168 false => .{ ._, ._r, .sh, .tmp2b, .ui(1), ._, ._ },
80368 true => .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_001), ._, ._ },
80369 false => .{ ._, ._r, .sh, .tmp2h, .ui(1), ._, ._ },
7516980370 },
7517080371 } },
7517180372 }, .{
......@@ -75458,7 +80659,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7545880659 .extra_temps = .{
7545980660 .{ .type = .f64, .kind = .{ .reg = .st6 } },
7546080661 .{ .type = .f64, .kind = .{ .reg = .st7 } },
75461 .{ .type = .u8, .kind = .{ .reg = .ah } },
80662 .{ .type = .u16, .kind = .{ .reg = .ax } },
7546280663 .unused,
7546380664 .unused,
7546480665 .unused,
......@@ -75489,7 +80690,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7548980690 .extra_temps = .{
7549080691 .{ .type = .f64, .kind = .{ .reg = .st6 } },
7549180692 .{ .type = .f64, .kind = .{ .reg = .st7 } },
75492 .{ .type = .u8, .kind = .{ .reg = .ah } },
80693 .{ .type = .u16, .kind = .{ .reg = .ax } },
7549380694 .unused,
7549480695 .unused,
7549580696 .unused,
......@@ -75510,15 +80711,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7551080711 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
7551180712 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
7551280713 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
75513 .{ ._, ._, .xor, .tmp2b, .si(0b1_000_000), ._, ._ },
75514 .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_100), ._, ._ },
80714 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
80715 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
7551580716 },
7551680717 true => &.{
7551780718 .{ ._, .f_, .ld, .src1q, ._, ._, ._ },
7551880719 .{ ._, .f_, .ld, .src0q, ._, ._, ._ },
7551980720 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
7552080721 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
75521 .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_000), ._, ._ },
80722 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
7552280723 },
7552380724 } },
7552480725 }, .{
......@@ -75560,7 +80761,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7556080761 .extra_temps = .{
7556180762 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7556280763 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75563 .{ .type = .u8, .kind = .{ .reg = .ah } },
80764 .{ .type = .u16, .kind = .{ .reg = .ax } },
7556480765 .unused,
7556580766 .unused,
7556680767 .unused,
......@@ -75593,7 +80794,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7559380794 .extra_temps = .{
7559480795 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7559580796 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75596 .{ .type = .u8, .kind = .{ .reg = .ah } },
80797 .{ .type = .u16, .kind = .{ .reg = .ax } },
7559780798 .unused,
7559880799 .unused,
7559980800 .unused,
......@@ -75623,7 +80824,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7562380824 .extra_temps = .{
7562480825 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7562580826 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75626 .{ .type = .u8, .kind = .{ .reg = .ah } },
80827 .{ .type = .u16, .kind = .{ .reg = .ax } },
7562780828 .unused,
7562880829 .unused,
7562980830 .unused,
......@@ -75644,15 +80845,15 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7564480845 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
7564580846 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
7564680847 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
75647 .{ ._, ._, .xor, .tmp2b, .si(0b1_000_000), ._, ._ },
75648 .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_100), ._, ._ },
80848 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
80849 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
7564980850 },
7565080851 true => &.{
7565180852 .{ ._, .f_, .ld, .src1t, ._, ._, ._ },
7565280853 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
7565380854 .{ ._, .f_pp, .ucom, ._, ._, ._, ._ },
7565480855 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
75655 .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_000), ._, ._ },
80856 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
7565680857 },
7565780858 } },
7565880859 }, .{
......@@ -75666,7 +80867,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7566680867 .extra_temps = .{
7566780868 .{ .type = .f80, .kind = .{ .reg = .st6 } },
7566880869 .{ .type = .f80, .kind = .{ .reg = .st7 } },
75669 .{ .type = .u8, .kind = .{ .reg = .ah } },
80870 .{ .type = .u16, .kind = .{ .reg = .ax } },
7567080871 .unused,
7567180872 .unused,
7567280873 .unused,
......@@ -75686,14 +80887,14 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
7568680887 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
7568780888 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
7568880889 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
75689 .{ ._, ._, .xor, .tmp2b, .si(0b1_000_000), ._, ._ },
75690 .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_100), ._, ._ },
80890 .{ ._, ._, .xor, .tmp2h, .si(0b1_000_000), ._, ._ },
80891 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_100), ._, ._ },
7569180892 },
7569280893 true => &.{
7569380894 .{ ._, .f_, .ld, .src0t, ._, ._, ._ },
7569480895 .{ ._, .f_p, .ucom, .src1t, ._, ._, ._ },
7569580896 .{ ._, .fn_sw, .st, .tmp2w, ._, ._, ._ },
75696 .{ ._, ._, .@"test", .tmp2b, .si(0b1_000_000), ._, ._ },
80897 .{ ._, ._, .@"test", .tmp2h, .si(0b1_000_000), ._, ._ },
7569780898 },
7569880899 } },
7569980900 }, .{
......@@ -83848,7 +89049,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8384889049 }, .{
8384989050 .required_features = .{ .@"64bit", null, null, null },
8385089051 .src_constraints = .{ .any_int, .any, .any },
83851 .dst_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any },
89052 .dst_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any },
8385289053 .patterns = &.{
8385389054 .{ .src = .{ .to_mem, .none, .none } },
8385489055 },
......@@ -83875,7 +89076,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8387589076 }, .{
8387689077 .required_features = .{ .@"64bit", null, null, null },
8387789078 .src_constraints = .{ .any_signed_int, .any, .any },
83878 .dst_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any },
89079 .dst_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any },
8387989080 .patterns = &.{
8388089081 .{ .src = .{ .to_mem, .none, .none } },
8388189082 },
......@@ -83973,7 +89174,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
8397389174 }, .{
8397489175 .required_features = .{ .@"64bit", null, null, null },
8397589176 .src_constraints = .{ .any_unsigned_int, .any, .any },
83976 .dst_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any },
89177 .dst_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any },
8397789178 .patterns = &.{
8397889179 .{ .src = .{ .to_mem, .none, .none } },
8397989180 },
......@@ -110484,7 +115685,8 @@ fn regClassForType(self: *CodeGen, ty: Type) Register.Class {
110484115685fn regSetForRegClass(rc: Register.Class) RegisterManager.RegisterBitSet {
110485115686 return switch (rc) {
110486115687 .general_purpose => abi.RegisterClass.gp,
110487 .gphi, .segment, .ip, .cr, .dr => unreachable,
115688 .gphi => abi.RegisterClass.gphi,
115689 .segment, .ip, .cr, .dr => unreachable,
110488115690 .x87 => abi.RegisterClass.x87,
110489115691 .mmx => @panic("TODO"),
110490115692 .sse => abi.RegisterClass.sse,
......@@ -122498,10 +127700,7 @@ fn airAsm(self: *CodeGen, inst: Air.Inst.Index) !void {
122498127700 else
122499127701 return self.fail("invalid modifier: '{s}'", .{modifier}),
122500127702 .register => |reg| if (std.mem.eql(u8, modifier, ""))
122501 .{ .reg = if (mnem_size.use()) |size|
122502 registerAlias(reg, @intCast(@divExact(size.bitSize(self.target), 8)))
122503 else
122504 reg }
127703 .{ .reg = if (mnem_size.use()) |size| reg.toSize(size, self.target) else reg }
122505127704 else
122506127705 return self.fail("invalid modifier: '{s}'", .{modifier}),
122507127706 .memory => |addr| if (std.mem.eql(u8, modifier, "") or std.mem.eql(u8, modifier, "P"))
......@@ -122887,11 +128086,7 @@ const MoveStrategy = union(enum) {
122887128086 .move_through_gpr => {
122888128087 const tmp_reg = try cg.register_manager.allocReg(null, abi.RegisterClass.gp);
122889128088 try cg.asmRegisterRegister(.{ ._d, .mov }, tmp_reg.to32(), src_reg.to128());
122890 try cg.asmMemoryRegister(
122891 .{ ._, .mov },
122892 dst_mem,
122893 registerAlias(tmp_reg, @intCast(@divExact(dst_mem.mod.rm.size.bitSize(cg.target), 8))),
122894 );
128089 try cg.asmMemoryRegister(.{ ._, .mov }, dst_mem, tmp_reg.toSize(dst_mem.mod.rm.size, cg.target));
122895128090 },
122896128091 .load_store_through_frame => {
122897128092 const tmp_frame_index = try cg.allocFrameIndex(.init(.{
......@@ -129941,7 +135136,7 @@ const Temp = struct {
129941135136 .{ ._, ._, .@"and", .dst0q, .tmp0q, ._, ._ },
129942135137 } },
129943135138 }, .{
129944 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = .xword } }, .any, .any },
135139 .src_constraints = .{ .{ .exact_remainder_int = .{ .of = .xword, .is = 128 } }, .any, .any },
129945135140 .patterns = &.{
129946135141 .{ .src = .{ .mut_mem, .none, .none } },
129947135142 },
......@@ -129949,7 +135144,7 @@ const Temp = struct {
129949135144 .each = .{ .once = &.{} },
129950135145 }, .{
129951135146 .required_features = .{ .@"64bit", null, null, null },
129952 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = .qword } }, .any, .any },
135147 .src_constraints = .{ .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, .any, .any },
129953135148 .patterns = &.{
129954135149 .{ .src = .{ .mut_mem, .none, .none } },
129955135150 },
......@@ -129975,7 +135170,7 @@ const Temp = struct {
129975135170 } },
129976135171 }, .{
129977135172 .required_features = .{ .@"64bit", null, null, null },
129978 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, .any, .any },
135173 .src_constraints = .{ .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, .any, .any },
129979135174 .patterns = &.{
129980135175 .{ .src = .{ .mut_mem, .none, .none } },
129981135176 },
......@@ -132752,7 +137947,7 @@ const Temp = struct {
132752137947 .{ ._, .p_, .xor, .src0x, .src1x, ._, ._ },
132753137948 .{ ._, .p_b, .cmpeq, .tmp1x, .src0x, ._, ._ },
132754137949 .{ ._, .p_b, .movmsk, .tmp0d, .tmp1x, ._, ._ },
132755 .{ ._, ._, .xor, .tmp0d, .si(0xffff), ._, ._ },
137950 .{ ._, ._, .xor, .tmp0d, .si(std.math.maxInt(u16)), ._, ._ },
132756137951 } },
132757137952 }, .{
132758137953 .required_features = .{ .avx2, null, null, null },
......@@ -133083,7 +138278,7 @@ const Temp = struct {
133083138278 .{ .@"0:", ._dqa, .mov, .tmp1x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
133084138279 .{ ._, .p_b, .cmpeq, .tmp1x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
133085138280 .{ ._, .p_b, .movmsk, .tmp2d, .tmp1x, ._, ._ },
133086 .{ ._, ._, .xor, .tmp2d, .ui(0xffff), ._, ._ },
138281 .{ ._, ._, .xor, .tmp2d, .si(std.math.maxInt(u16)), ._, ._ },
133087138282 .{ ._, ._nz, .j, .@"0f", ._, ._, ._ },
133088138283 .{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
133089138284 .{ ._, ._nz, .j, .@"0b", ._, ._, ._ },
......@@ -134513,9 +139708,9 @@ const Select = struct {
134513139708 remainder_int: OfIsSizes,
134514139709 remainder_signed_int: OfIsSizes,
134515139710 remainder_unsigned_int: OfIsSizes,
134516 exact_remainder_int: OfIsSizes,
134517 exact_remainder_signed_int: OfIsSizes,
134518 exact_remainder_unsigned_int: OfIsSizes,
139711 exact_remainder_int: struct { of: Memory.Size, is: u16 },
139712 exact_remainder_signed_int: struct { of: Memory.Size, is: u16 },
139713 exact_remainder_unsigned_int: struct { of: Memory.Size, is: u16 },
134519139714 signed_or_exact_remainder_int: OfIsSizes,
134520139715 unsigned_or_exact_remainder_int: OfIsSizes,
134521139716 signed_int: Memory.Size,
......@@ -134676,13 +139871,13 @@ const Select = struct {
134676139871 .remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and
134677139872 of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
134678139873 .exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info|
134679 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
139874 of_is.is == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1
134680139875 else
134681139876 false,
134682139877 .exact_remainder_signed_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .signed and
134683 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
139878 of_is.is == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
134684139879 .exact_remainder_unsigned_int => |of_is| if (cg.intInfo(ty)) |int_info| int_info.signedness == .unsigned and
134685 of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
139880 of_is.is == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1 else false,
134686139881 .signed_or_exact_remainder_int => |of_is| if (cg.intInfo(ty)) |int_info| switch (int_info.signedness) {
134687139882 .signed => of_is.is.bitSize(cg.target) >= (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,
134688139883 .unsigned => of_is.is.bitSize(cg.target) == (int_info.bits - 1) % of_is.of.bitSize(cg.target) + 1,
......@@ -135431,11 +140626,12 @@ const Select = struct {
135431140626 const add_dst0_elem_size: Adjust = .{ .sign = .pos, .lhs = .dst0_elem_size, .op = .mul, .rhs = .@"1" };
135432140627 const add_elem_limbs: Adjust = .{ .sign = .pos, .lhs = .elem_limbs, .op = .mul, .rhs = .@"1" };
135433140628 const add_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"1" };
140629 const add_2_smin: Adjust = .{ .sign = .pos, .lhs = .smin, .op = .mul, .rhs = .@"2" };
135434140630 const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" };
135435140631 const add_smax: Adjust = .{ .sign = .pos, .lhs = .smax, .op = .mul, .rhs = .@"1" };
135436140632 const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" };
135437 const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" };
135438140633 const add_umax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .umax_shr_src1, .op = .mul, .rhs = .@"1" };
140634 const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" };
135439140635 const repeat: Adjust = .{ .sign = .pos, .lhs = .repeat, .op = .mul, .rhs = .@"1" };
135440140636 };
135441140637 const Ref = enum(u5) {
......@@ -135464,6 +140660,8 @@ const Select = struct {
135464140660 const none: Sized = .{ .ref = .none, .size = .none };
135465140661
135466140662 const tmp0: Sized = .{ .ref = .tmp0, .size = .none };
140663 const tmp0l: Sized = .{ .ref = .tmp0, .size = .low_byte };
140664 const tmp0h: Sized = .{ .ref = .tmp0, .size = .high_byte };
135467140665 const tmp0b: Sized = .{ .ref = .tmp0, .size = .byte };
135468140666 const tmp0w: Sized = .{ .ref = .tmp0, .size = .word };
135469140667 const tmp0d: Sized = .{ .ref = .tmp0, .size = .dword };
......@@ -135475,6 +140673,8 @@ const Select = struct {
135475140673 const tmp0y: Sized = .{ .ref = .tmp0, .size = .yword };
135476140674
135477140675 const tmp1: Sized = .{ .ref = .tmp1, .size = .none };
140676 const tmp1l: Sized = .{ .ref = .tmp1, .size = .low_byte };
140677 const tmp1h: Sized = .{ .ref = .tmp1, .size = .high_byte };
135478140678 const tmp1b: Sized = .{ .ref = .tmp1, .size = .byte };
135479140679 const tmp1w: Sized = .{ .ref = .tmp1, .size = .word };
135480140680 const tmp1d: Sized = .{ .ref = .tmp1, .size = .dword };
......@@ -135486,6 +140686,8 @@ const Select = struct {
135486140686 const tmp1y: Sized = .{ .ref = .tmp1, .size = .yword };
135487140687
135488140688 const tmp2: Sized = .{ .ref = .tmp2, .size = .none };
140689 const tmp2l: Sized = .{ .ref = .tmp2, .size = .low_byte };
140690 const tmp2h: Sized = .{ .ref = .tmp2, .size = .high_byte };
135489140691 const tmp2b: Sized = .{ .ref = .tmp2, .size = .byte };
135490140692 const tmp2w: Sized = .{ .ref = .tmp2, .size = .word };
135491140693 const tmp2d: Sized = .{ .ref = .tmp2, .size = .dword };
......@@ -135497,6 +140699,8 @@ const Select = struct {
135497140699 const tmp2y: Sized = .{ .ref = .tmp2, .size = .yword };
135498140700
135499140701 const tmp3: Sized = .{ .ref = .tmp3, .size = .none };
140702 const tmp3l: Sized = .{ .ref = .tmp3, .size = .low_byte };
140703 const tmp3h: Sized = .{ .ref = .tmp3, .size = .high_byte };
135500140704 const tmp3b: Sized = .{ .ref = .tmp3, .size = .byte };
135501140705 const tmp3w: Sized = .{ .ref = .tmp3, .size = .word };
135502140706 const tmp3d: Sized = .{ .ref = .tmp3, .size = .dword };
......@@ -135508,6 +140712,8 @@ const Select = struct {
135508140712 const tmp3y: Sized = .{ .ref = .tmp3, .size = .yword };
135509140713
135510140714 const tmp4: Sized = .{ .ref = .tmp4, .size = .none };
140715 const tmp4l: Sized = .{ .ref = .tmp4, .size = .low_byte };
140716 const tmp4h: Sized = .{ .ref = .tmp4, .size = .high_byte };
135511140717 const tmp4b: Sized = .{ .ref = .tmp4, .size = .byte };
135512140718 const tmp4w: Sized = .{ .ref = .tmp4, .size = .word };
135513140719 const tmp4d: Sized = .{ .ref = .tmp4, .size = .dword };
......@@ -135519,6 +140725,8 @@ const Select = struct {
135519140725 const tmp4y: Sized = .{ .ref = .tmp4, .size = .yword };
135520140726
135521140727 const tmp5: Sized = .{ .ref = .tmp5, .size = .none };
140728 const tmp5l: Sized = .{ .ref = .tmp5, .size = .low_byte };
140729 const tmp5h: Sized = .{ .ref = .tmp5, .size = .high_byte };
135522140730 const tmp5b: Sized = .{ .ref = .tmp5, .size = .byte };
135523140731 const tmp5w: Sized = .{ .ref = .tmp5, .size = .word };
135524140732 const tmp5d: Sized = .{ .ref = .tmp5, .size = .dword };
......@@ -135530,6 +140738,8 @@ const Select = struct {
135530140738 const tmp5y: Sized = .{ .ref = .tmp5, .size = .yword };
135531140739
135532140740 const tmp6: Sized = .{ .ref = .tmp6, .size = .none };
140741 const tmp6l: Sized = .{ .ref = .tmp6, .size = .low_byte };
140742 const tmp6h: Sized = .{ .ref = .tmp6, .size = .high_byte };
135533140743 const tmp6b: Sized = .{ .ref = .tmp6, .size = .byte };
135534140744 const tmp6w: Sized = .{ .ref = .tmp6, .size = .word };
135535140745 const tmp6d: Sized = .{ .ref = .tmp6, .size = .dword };
......@@ -135541,6 +140751,8 @@ const Select = struct {
135541140751 const tmp6y: Sized = .{ .ref = .tmp6, .size = .yword };
135542140752
135543140753 const tmp7: Sized = .{ .ref = .tmp7, .size = .none };
140754 const tmp7l: Sized = .{ .ref = .tmp7, .size = .low_byte };
140755 const tmp7h: Sized = .{ .ref = .tmp7, .size = .high_byte };
135544140756 const tmp7b: Sized = .{ .ref = .tmp7, .size = .byte };
135545140757 const tmp7w: Sized = .{ .ref = .tmp7, .size = .word };
135546140758 const tmp7d: Sized = .{ .ref = .tmp7, .size = .dword };
......@@ -135552,6 +140764,8 @@ const Select = struct {
135552140764 const tmp7y: Sized = .{ .ref = .tmp7, .size = .yword };
135553140765
135554140766 const tmp8: Sized = .{ .ref = .tmp8, .size = .none };
140767 const tmp8l: Sized = .{ .ref = .tmp8, .size = .low_byte };
140768 const tmp8h: Sized = .{ .ref = .tmp8, .size = .high_byte };
135555140769 const tmp8b: Sized = .{ .ref = .tmp8, .size = .byte };
135556140770 const tmp8w: Sized = .{ .ref = .tmp8, .size = .word };
135557140771 const tmp8d: Sized = .{ .ref = .tmp8, .size = .dword };
......@@ -135563,6 +140777,8 @@ const Select = struct {
135563140777 const tmp8y: Sized = .{ .ref = .tmp8, .size = .yword };
135564140778
135565140779 const tmp9: Sized = .{ .ref = .tmp9, .size = .none };
140780 const tmp9l: Sized = .{ .ref = .tmp9, .size = .low_byte };
140781 const tmp9h: Sized = .{ .ref = .tmp9, .size = .high_byte };
135566140782 const tmp9b: Sized = .{ .ref = .tmp9, .size = .byte };
135567140783 const tmp9w: Sized = .{ .ref = .tmp9, .size = .word };
135568140784 const tmp9d: Sized = .{ .ref = .tmp9, .size = .dword };
......@@ -135574,6 +140790,8 @@ const Select = struct {
135574140790 const tmp9y: Sized = .{ .ref = .tmp9, .size = .yword };
135575140791
135576140792 const tmp10: Sized = .{ .ref = .tmp10, .size = .none };
140793 const tmp10l: Sized = .{ .ref = .tmp10, .size = .low_byte };
140794 const tmp10h: Sized = .{ .ref = .tmp10, .size = .high_byte };
135577140795 const tmp10b: Sized = .{ .ref = .tmp10, .size = .byte };
135578140796 const tmp10w: Sized = .{ .ref = .tmp10, .size = .word };
135579140797 const tmp10d: Sized = .{ .ref = .tmp10, .size = .dword };
......@@ -135585,6 +140803,8 @@ const Select = struct {
135585140803 const tmp10y: Sized = .{ .ref = .tmp10, .size = .yword };
135586140804
135587140805 const dst0: Sized = .{ .ref = .dst0, .size = .none };
140806 const dst0l: Sized = .{ .ref = .dst0, .size = .low_byte };
140807 const dst0h: Sized = .{ .ref = .dst0, .size = .high_byte };
135588140808 const dst0b: Sized = .{ .ref = .dst0, .size = .byte };
135589140809 const dst0w: Sized = .{ .ref = .dst0, .size = .word };
135590140810 const dst0d: Sized = .{ .ref = .dst0, .size = .dword };
......@@ -135596,6 +140816,8 @@ const Select = struct {
135596140816 const dst0y: Sized = .{ .ref = .dst0, .size = .yword };
135597140817
135598140818 const dst1: Sized = .{ .ref = .dst1, .size = .none };
140819 const dst1l: Sized = .{ .ref = .dst1, .size = .low_byte };
140820 const dst1h: Sized = .{ .ref = .dst1, .size = .high_byte };
135599140821 const dst1b: Sized = .{ .ref = .dst1, .size = .byte };
135600140822 const dst1w: Sized = .{ .ref = .dst1, .size = .word };
135601140823 const dst1d: Sized = .{ .ref = .dst1, .size = .dword };
......@@ -135607,6 +140829,8 @@ const Select = struct {
135607140829 const dst1y: Sized = .{ .ref = .dst1, .size = .yword };
135608140830
135609140831 const src0: Sized = .{ .ref = .src0, .size = .none };
140832 const src0l: Sized = .{ .ref = .src0, .size = .low_byte };
140833 const src0h: Sized = .{ .ref = .src0, .size = .high_byte };
135610140834 const src0b: Sized = .{ .ref = .src0, .size = .byte };
135611140835 const src0w: Sized = .{ .ref = .src0, .size = .word };
135612140836 const src0d: Sized = .{ .ref = .src0, .size = .dword };
......@@ -135618,6 +140842,8 @@ const Select = struct {
135618140842 const src0y: Sized = .{ .ref = .src0, .size = .yword };
135619140843
135620140844 const src1: Sized = .{ .ref = .src1, .size = .none };
140845 const src1l: Sized = .{ .ref = .src1, .size = .low_byte };
140846 const src1h: Sized = .{ .ref = .src1, .size = .high_byte };
135621140847 const src1b: Sized = .{ .ref = .src1, .size = .byte };
135622140848 const src1w: Sized = .{ .ref = .src1, .size = .word };
135623140849 const src1d: Sized = .{ .ref = .src1, .size = .dword };
......@@ -135629,6 +140855,8 @@ const Select = struct {
135629140855 const src1y: Sized = .{ .ref = .src1, .size = .yword };
135630140856
135631140857 const src2: Sized = .{ .ref = .src2, .size = .none };
140858 const src2l: Sized = .{ .ref = .src2, .size = .low_byte };
140859 const src2h: Sized = .{ .ref = .src2, .size = .high_byte };
135632140860 const src2b: Sized = .{ .ref = .src2, .size = .byte };
135633140861 const src2w: Sized = .{ .ref = .src2, .size = .word };
135634140862 const src2d: Sized = .{ .ref = .src2, .size = .dword };
......@@ -135669,6 +140897,8 @@ const Select = struct {
135669140897 const @"4b": Select.Operand = .{ .flags = .{ .tag = .backward_label, .base = .{ .ref = .tmp4, .size = .none } } };
135670140898 const @"4f": Select.Operand = .{ .flags = .{ .tag = .forward_label, .base = .{ .ref = .tmp4, .size = .none } } };
135671140899
140900 const tmp0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0l } };
140901 const tmp0h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0h } };
135672140902 const tmp0b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0b } };
135673140903 const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0w } };
135674140904 const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0d } };
......@@ -135679,6 +140909,8 @@ const Select = struct {
135679140909 const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0x } };
135680140910 const tmp0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp0y } };
135681140911
140912 const tmp1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1l } };
140913 const tmp1h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1h } };
135682140914 const tmp1b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1b } };
135683140915 const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1w } };
135684140916 const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1d } };
......@@ -135689,6 +140921,8 @@ const Select = struct {
135689140921 const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1x } };
135690140922 const tmp1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp1y } };
135691140923
140924 const tmp2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2l } };
140925 const tmp2h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2h } };
135692140926 const tmp2b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2b } };
135693140927 const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2w } };
135694140928 const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2d } };
......@@ -135699,6 +140933,8 @@ const Select = struct {
135699140933 const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2x } };
135700140934 const tmp2y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp2y } };
135701140935
140936 const tmp3l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3l } };
140937 const tmp3h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3h } };
135702140938 const tmp3b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3b } };
135703140939 const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3w } };
135704140940 const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3d } };
......@@ -135709,6 +140945,8 @@ const Select = struct {
135709140945 const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3x } };
135710140946 const tmp3y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp3y } };
135711140947
140948 const tmp4l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4l } };
140949 const tmp4h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4h } };
135712140950 const tmp4b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4b } };
135713140951 const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4w } };
135714140952 const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4d } };
......@@ -135719,6 +140957,8 @@ const Select = struct {
135719140957 const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4x } };
135720140958 const tmp4y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp4y } };
135721140959
140960 const tmp5l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5l } };
140961 const tmp5h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5h } };
135722140962 const tmp5b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5b } };
135723140963 const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5w } };
135724140964 const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5d } };
......@@ -135729,6 +140969,8 @@ const Select = struct {
135729140969 const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5x } };
135730140970 const tmp5y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp5y } };
135731140971
140972 const tmp6l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6l } };
140973 const tmp6h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6h } };
135732140974 const tmp6b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6b } };
135733140975 const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6w } };
135734140976 const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6d } };
......@@ -135739,6 +140981,8 @@ const Select = struct {
135739140981 const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6x } };
135740140982 const tmp6y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp6y } };
135741140983
140984 const tmp7l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7l } };
140985 const tmp7h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7h } };
135742140986 const tmp7b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7b } };
135743140987 const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7w } };
135744140988 const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7d } };
......@@ -135749,6 +140993,8 @@ const Select = struct {
135749140993 const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7x } };
135750140994 const tmp7y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp7y } };
135751140995
140996 const tmp8l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8l } };
140997 const tmp8h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8h } };
135752140998 const tmp8b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8b } };
135753140999 const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8w } };
135754141000 const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8d } };
......@@ -135759,6 +141005,8 @@ const Select = struct {
135759141005 const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8x } };
135760141006 const tmp8y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp8y } };
135761141007
141008 const tmp9l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9l } };
141009 const tmp9h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9h } };
135762141010 const tmp9b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9b } };
135763141011 const tmp9w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9w } };
135764141012 const tmp9d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9d } };
......@@ -135769,6 +141017,8 @@ const Select = struct {
135769141017 const tmp9x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9x } };
135770141018 const tmp9y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp9y } };
135771141019
141020 const tmp10l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10l } };
141021 const tmp10h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10h } };
135772141022 const tmp10b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10b } };
135773141023 const tmp10w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10w } };
135774141024 const tmp10d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10d } };
......@@ -135779,6 +141029,8 @@ const Select = struct {
135779141029 const tmp10x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10x } };
135780141030 const tmp10y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .tmp10y } };
135781141031
141032 const dst0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0l } };
141033 const dst0h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0h } };
135782141034 const dst0b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0b } };
135783141035 const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0w } };
135784141036 const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0d } };
......@@ -135789,6 +141041,8 @@ const Select = struct {
135789141041 const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0x } };
135790141042 const dst0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst0y } };
135791141043
141044 const dst1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1l } };
141045 const dst1h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1h } };
135792141046 const dst1b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1b } };
135793141047 const dst1w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1w } };
135794141048 const dst1d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1d } };
......@@ -135799,6 +141053,8 @@ const Select = struct {
135799141053 const dst1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1x } };
135800141054 const dst1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .dst1y } };
135801141055
141056 const src0l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0l } };
141057 const src0h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0h } };
135802141058 const src0b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0b } };
135803141059 const src0w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0w } };
135804141060 const src0d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0d } };
......@@ -135809,6 +141065,8 @@ const Select = struct {
135809141065 const src0x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0x } };
135810141066 const src0y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src0y } };
135811141067
141068 const src1l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1l } };
141069 const src1h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1h } };
135812141070 const src1b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1b } };
135813141071 const src1w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1w } };
135814141072 const src1d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1d } };
......@@ -135819,6 +141077,8 @@ const Select = struct {
135819141077 const src1x: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1x } };
135820141078 const src1y: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src1y } };
135821141079
141080 const src2l: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2l } };
141081 const src2h: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2h } };
135822141082 const src2b: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2b } };
135823141083 const src2w: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2w } };
135824141084 const src2d: Select.Operand = .{ .flags = .{ .tag = .ref, .base = .src2d } };
......@@ -136194,7 +141454,7 @@ const Select = struct {
136194141454 else => unreachable,
136195141455 } },
136196141456 else => |mcv| .{ .mem = try mcv.mem(s.cg, .{ .size = op.flags.base.size }) },
136197 .register => |reg| .{ .reg = s.lowerReg(registerAlias(reg, @intCast(@divExact(op.flags.base.size.bitSize(s.cg.target), 8)))) },
141457 .register => |reg| .{ .reg = s.lowerReg(reg.toSize(op.flags.base.size, s.cg.target)) },
136198141458 .lea_symbol => |sym_off| .{ .imm = .rel(sym_off) },
136199141459 },
136200141460 .simm => .{ .imm = .s(op.adjustedImm(i32, s)) },
......@@ -136203,8 +141463,8 @@ const Select = struct {
136203141463 .base = switch (op.flags.base.ref.valueOf(s)) {
136204141464 else => unreachable,
136205141465 .none => .none,
136206 .register => |base_reg| .{ .reg = registerAlias(base_reg, @divExact(s.cg.target.ptrBitWidth(), 8)) },
136207 .register_offset => |base_reg_off| .{ .reg = registerAlias(base_reg_off.reg, @divExact(s.cg.target.ptrBitWidth(), 8)) },
141466 .register => |base_reg| .{ .reg = base_reg.toSize(.ptr, s.cg.target) },
141467 .register_offset => |base_reg_off| .{ .reg = base_reg_off.reg.toSize(.ptr, s.cg.target) },
136208141468 .lea_symbol => |base_sym_off| .{ .reloc = base_sym_off.sym_index },
136209141469 },
136210141470 .mod = .{ .rm = .{
......@@ -136212,8 +141472,8 @@ const Select = struct {
136212141472 .index = switch (op.flags.index.ref.valueOf(s)) {
136213141473 else => unreachable,
136214141474 .none => .none,
136215 .register => |index_reg| registerAlias(index_reg, @divExact(s.cg.target.ptrBitWidth(), 8)),
136216 .register_offset => |index_reg_off| registerAlias(index_reg_off.reg, @divExact(s.cg.target.ptrBitWidth(), 8)),
141475 .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),
141476 .register_offset => |index_reg_off| index_reg_off.reg.toSize(.ptr, s.cg.target),
136217141477 },
136218141478 .scale = op.flags.index.scale,
136219141479 .disp = op.adjustedImm(i32, s) + switch (op.flags.base.ref.valueOf(s)) {
......@@ -136234,7 +141494,7 @@ const Select = struct {
136234141494 .index = switch (op.flags.index.ref.valueOf(s)) {
136235141495 else => unreachable,
136236141496 .none => .none,
136237 .register => |index_reg| registerAlias(index_reg, @divExact(s.cg.target.ptrBitWidth(), 8)),
141497 .register => |index_reg| index_reg.toSize(.ptr, s.cg.target),
136238141498 },
136239141499 .scale = op.flags.index.scale,
136240141500 .disp = op.adjustedImm(i32, s),
src/arch/x86_64/abi.zig+5
......@@ -578,6 +578,11 @@ pub const RegisterClass = struct {
578578 for (allocatable_regs, 0..) |reg, index| if (reg.class() == .general_purpose) set.set(index);
579579 break :blk set;
580580 };
581 pub const gphi: RegisterBitSet = blk: {
582 var set = RegisterBitSet.initEmpty();
583 for (allocatable_regs, 0..) |reg, index| if (reg.hasHi8()) set.set(index);
584 break :blk set;
585 };
581586 pub const x87: RegisterBitSet = blk: {
582587 var set = RegisterBitSet.initEmpty();
583588 for (allocatable_regs, 0..) |reg, index| if (reg.class() == .x87) set.set(index);
src/arch/x86_64/bits.zig+75-7
......@@ -529,12 +529,36 @@ pub const Register = enum(u8) {
529529 16 => reg.to16(),
530530 32 => reg.to32(),
531531 64 => reg.to64(),
532 80 => reg.to80(),
532533 128 => reg.to128(),
533534 256 => reg.to256(),
535 512 => reg.to512(),
534536 else => unreachable,
535537 };
536538 }
537539
540 pub fn toSize(reg: Register, size: Memory.Size, target: *const std.Target) Register {
541 return switch (size) {
542 .none => unreachable,
543 .ptr => reg.toBitSize(target.ptrBitWidth()),
544 .gpr => switch (target.cpu.arch) {
545 else => unreachable,
546 .x86 => reg.to32(),
547 .x86_64 => reg.to64(),
548 },
549 .low_byte => reg.toLo8(),
550 .high_byte => reg.toHi8(),
551 .byte => reg.to8(),
552 .word => reg.to16(),
553 .dword => reg.to32(),
554 .qword => reg.to64(),
555 .tbyte => reg.to80(),
556 .xword => reg.to128(),
557 .yword => reg.to256(),
558 .zword => reg.to512(),
559 };
560 }
561
538562 fn gpBase(reg: Register) u7 {
539563 return switch (@intFromEnum(reg)) {
540564 // zig fmt: off
......@@ -549,24 +573,62 @@ pub const Register = enum(u8) {
549573 }
550574
551575 pub fn to64(reg: Register) Register {
552 return @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.rax));
576 return switch (reg.class()) {
577 .general_purpose, .gphi => @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.rax)),
578 .segment => unreachable,
579 .x87, .mmx, .cr, .dr => reg,
580 .sse => reg.to128(),
581 .ip => .rip,
582 };
553583 }
554584
555585 pub fn to32(reg: Register) Register {
556 return @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.eax));
586 return switch (reg.class()) {
587 .general_purpose, .gphi => @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.eax)),
588 .segment => unreachable,
589 .x87, .mmx, .cr, .dr => reg,
590 .sse => reg.to128(),
591 .ip => .eip,
592 };
557593 }
558594
559595 pub fn to16(reg: Register) Register {
560 return @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.ax));
596 return switch (reg.class()) {
597 .general_purpose, .gphi => @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.ax)),
598 .segment, .x87, .mmx, .cr, .dr => reg,
599 .sse => reg.to128(),
600 .ip => .ip,
601 };
561602 }
562603
563604 pub fn to8(reg: Register) Register {
564 return switch (@intFromEnum(reg)) {
565 else => @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.al)),
566 @intFromEnum(Register.ah)...@intFromEnum(Register.bh) => reg,
605 return switch (reg.class()) {
606 .general_purpose => reg.toLo8(),
607 .gphi, .segment, .x87, .mmx, .cr, .dr => reg,
608 .sse => reg.to128(),
609 .ip => .ip,
567610 };
568611 }
569612
613 pub fn toLo8(reg: Register) Register {
614 return @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.al));
615 }
616
617 pub fn toHi8(reg: Register) Register {
618 assert(reg.hasHi8());
619 return @enumFromInt(@intFromEnum(reg) - reg.gpBase() + @intFromEnum(Register.ah));
620 }
621
622 pub fn hasHi8(reg: Register) bool {
623 const reg_id = reg.id();
624 return (reg_id >= comptime Register.ah.id()) and reg_id <= comptime Register.bh.id();
625 }
626
627 pub fn to80(reg: Register) Register {
628 assert(reg.class() == .x87);
629 return reg;
630 }
631
570632 fn sseBase(reg: Register) u8 {
571633 assert(reg.class() == .sse);
572634 return switch (@intFromEnum(reg)) {
......@@ -577,6 +639,10 @@ pub const Register = enum(u8) {
577639 };
578640 }
579641
642 pub fn to512(reg: Register) Register {
643 return @enumFromInt(@intFromEnum(reg) - reg.sseBase() + @intFromEnum(Register.zmm0));
644 }
645
580646 pub fn to256(reg: Register) Register {
581647 return @enumFromInt(@intFromEnum(reg) - reg.sseBase() + @intFromEnum(Register.ymm0));
582648 }
......@@ -710,6 +776,8 @@ pub const Memory = struct {
710776 none,
711777 ptr,
712778 gpr,
779 low_byte,
780 high_byte,
713781 byte,
714782 word,
715783 dword,
......@@ -755,7 +823,7 @@ pub const Memory = struct {
755823 .x86 => 32,
756824 .x86_64 => 64,
757825 },
758 .byte => 8,
826 .low_byte, .high_byte, .byte => 8,
759827 .word => 16,
760828 .dword => 32,
761829 .qword => 64,
test/behavior/saturating_arithmetic.zig+1-1
......@@ -259,13 +259,13 @@ test "saturating mul i64, i128, wasm only" {
259259
260260test "saturating multiplication" {
261261 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
263262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
264263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
265264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266265 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
267266 if (builtin.zig_backend == .stage2_c and builtin.cpu.arch.isArm()) return error.SkipZigTest;
268267 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
268 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
269269
270270 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch.isWasm()) {
271271 // https://github.com/ziglang/zig/issues/9660
test/behavior/x86_64/binary.zig+8
......@@ -5134,6 +5134,14 @@ test mulWrap {
51345134 try test_mul_wrap.testIntVectors();
51355135}
51365136
5137inline fn mulSat(comptime Type: type, lhs: Type, rhs: Type) Type {
5138 return lhs *| rhs;
5139}
5140test mulSat {
5141 const test_mul_sat = binary(mulSat, .{});
5142 try test_mul_sat.testInts();
5143}
5144
51375145inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) {
51385146 return lhs * rhs;
51395147}