| ... | ... | @@ -2408,7 +2408,7 @@ fn genBodyBlock(self: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2408 | 2408 | } |
| 2409 | 2409 | |
| 2410 | 2410 | fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2411 | | @setEvalBranchQuota(19_300); |
| 2411 | @setEvalBranchQuota(20_000); |
| 2412 | 2412 | const pt = cg.pt; |
| 2413 | 2413 | const zcu = pt.zcu; |
| 2414 | 2414 | const ip = &zcu.intern_pool; |
| ... | ... | @@ -2444,8 +2444,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 2444 | 2444 | try cg.inst_tracking.ensureUnusedCapacity(cg.gpa, 1); |
| 2445 | 2445 | switch (air_tags[@intFromEnum(inst)]) { |
| 2446 | 2446 | // zig fmt: off |
| 2447 | | .shl_sat => try cg.airShlSat(inst), |
| 2448 | | |
| 2449 | 2447 | .bitcast => try cg.airBitCast(inst), |
| 2450 | 2448 | |
| 2451 | 2449 | .splat => try cg.airSplat(inst), |
| ... | ... | @@ -4408,7 +4406,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4408 | 4406 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4409 | 4407 | .clobbers = .{ .eflags = true }, |
| 4410 | 4408 | .each = .{ .once = &.{ |
| 4411 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4409 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4412 | 4410 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 4413 | 4411 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 4414 | 4412 | .{ ._, ._, .add, .dst0b, .src1b, ._, ._ }, |
| ... | ... | @@ -4457,7 +4455,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4457 | 4455 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4458 | 4456 | .clobbers = .{ .eflags = true }, |
| 4459 | 4457 | .each = .{ .once = &.{ |
| 4460 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4458 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4461 | 4459 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 4462 | 4460 | .{ ._, ._, .add, .dst0b, .src1b, ._, ._ }, |
| 4463 | 4461 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4585,7 +4583,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4585 | 4583 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4586 | 4584 | .clobbers = .{ .eflags = true }, |
| 4587 | 4585 | .each = .{ .once = &.{ |
| 4588 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4586 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4589 | 4587 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4590 | 4588 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 4591 | 4589 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| ... | ... | @@ -4617,7 +4615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4617 | 4615 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4618 | 4616 | .clobbers = .{ .eflags = true }, |
| 4619 | 4617 | .each = .{ .once = &.{ |
| 4620 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4618 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4621 | 4619 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4622 | 4620 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 4623 | 4621 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| ... | ... | @@ -4683,7 +4681,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4683 | 4681 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4684 | 4682 | .clobbers = .{ .eflags = true }, |
| 4685 | 4683 | .each = .{ .once = &.{ |
| 4686 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4684 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4687 | 4685 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4688 | 4686 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| 4689 | 4687 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4713,7 +4711,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4713 | 4711 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4714 | 4712 | .clobbers = .{ .eflags = true }, |
| 4715 | 4713 | .each = .{ .once = &.{ |
| 4716 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4714 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4717 | 4715 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4718 | 4716 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 4719 | 4717 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4744,7 +4742,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4744 | 4742 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4745 | 4743 | .clobbers = .{ .eflags = true }, |
| 4746 | 4744 | .each = .{ .once = &.{ |
| 4747 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4745 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4748 | 4746 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4749 | 4747 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| 4750 | 4748 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4776,7 +4774,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4776 | 4774 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4777 | 4775 | .clobbers = .{ .eflags = true }, |
| 4778 | 4776 | .each = .{ .once = &.{ |
| 4779 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4777 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4780 | 4778 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4781 | 4779 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 4782 | 4780 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4929,7 +4927,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4929 | 4927 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4930 | 4928 | .clobbers = .{ .eflags = true }, |
| 4931 | 4929 | .each = .{ .once = &.{ |
| 4932 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4930 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4933 | 4931 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4934 | 4932 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| 4935 | 4933 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4959,7 +4957,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4959 | 4957 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4960 | 4958 | .clobbers = .{ .eflags = true }, |
| 4961 | 4959 | .each = .{ .once = &.{ |
| 4962 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4960 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4963 | 4961 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4964 | 4962 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 4965 | 4963 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -4990,7 +4988,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 4990 | 4988 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 4991 | 4989 | .clobbers = .{ .eflags = true }, |
| 4992 | 4990 | .each = .{ .once = &.{ |
| 4993 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 4991 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 4994 | 4992 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 4995 | 4993 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| 4996 | 4994 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5022,7 +5020,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5022 | 5020 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5023 | 5021 | .clobbers = .{ .eflags = true }, |
| 5024 | 5022 | .each = .{ .once = &.{ |
| 5025 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5023 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5026 | 5024 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 5027 | 5025 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 5028 | 5026 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5055,7 +5053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5055 | 5053 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5056 | 5054 | .clobbers = .{ .eflags = true }, |
| 5057 | 5055 | .each = .{ .once = &.{ |
| 5058 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5056 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5059 | 5057 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 5060 | 5058 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| 5061 | 5059 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5086,7 +5084,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5086 | 5084 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5087 | 5085 | .clobbers = .{ .eflags = true }, |
| 5088 | 5086 | .each = .{ .once = &.{ |
| 5089 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5087 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5090 | 5088 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 5091 | 5089 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 5092 | 5090 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5118,7 +5116,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5118 | 5116 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5119 | 5117 | .clobbers = .{ .eflags = true }, |
| 5120 | 5118 | .each = .{ .once = &.{ |
| 5121 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5119 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5122 | 5120 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 5123 | 5121 | .{ ._, ._, .add, .dst0w, .src1w, ._, ._ }, |
| 5124 | 5122 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5151,7 +5149,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5151 | 5149 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5152 | 5150 | .clobbers = .{ .eflags = true }, |
| 5153 | 5151 | .each = .{ .once = &.{ |
| 5154 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5152 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5155 | 5153 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 5156 | 5154 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 5157 | 5155 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5456,7 +5454,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5456 | 5454 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5457 | 5455 | .clobbers = .{ .eflags = true }, |
| 5458 | 5456 | .each = .{ .once = &.{ |
| 5459 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5457 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5460 | 5458 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 5461 | 5459 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 5462 | 5460 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| ... | ... | @@ -5505,7 +5503,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5505 | 5503 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5506 | 5504 | .clobbers = .{ .eflags = true }, |
| 5507 | 5505 | .each = .{ .once = &.{ |
| 5508 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5506 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5509 | 5507 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 5510 | 5508 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 5511 | 5509 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5571,7 +5569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5571 | 5569 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5572 | 5570 | .clobbers = .{ .eflags = true }, |
| 5573 | 5571 | .each = .{ .once = &.{ |
| 5574 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5572 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5575 | 5573 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 5576 | 5574 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 5577 | 5575 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5605,7 +5603,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5605 | 5603 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5606 | 5604 | .clobbers = .{ .eflags = true }, |
| 5607 | 5605 | .each = .{ .once = &.{ |
| 5608 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 5606 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 5609 | 5607 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 5610 | 5608 | .{ ._, ._, .add, .dst0d, .src1d, ._, ._ }, |
| 5611 | 5609 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5750,7 +5748,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5750 | 5748 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5751 | 5749 | .clobbers = .{ .eflags = true }, |
| 5752 | 5750 | .each = .{ .once = &.{ |
| 5753 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 5751 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 5754 | 5752 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 5755 | 5753 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 5756 | 5754 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| ... | ... | @@ -5815,7 +5813,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5815 | 5813 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5816 | 5814 | .clobbers = .{ .eflags = true }, |
| 5817 | 5815 | .each = .{ .once = &.{ |
| 5818 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 5816 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 5819 | 5817 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 5820 | 5818 | .{ ._, ._, .add, .dst0q, .src1q, ._, ._ }, |
| 5821 | 5819 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5884,7 +5882,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5884 | 5882 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5885 | 5883 | .clobbers = .{ .eflags = true }, |
| 5886 | 5884 | .each = .{ .once = &.{ |
| 5887 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 5885 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 5888 | 5886 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 5889 | 5887 | .{ ._, ._, .add, .dst0q, .src1q, ._, ._ }, |
| 5890 | 5888 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -5919,7 +5917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 5919 | 5917 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 5920 | 5918 | .clobbers = .{ .eflags = true }, |
| 5921 | 5919 | .each = .{ .once = &.{ |
| 5922 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 5920 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 5923 | 5921 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 5924 | 5922 | .{ ._, ._, .add, .dst0q, .src1q, ._, ._ }, |
| 5925 | 5923 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -14879,7 +14877,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14879 | 14877 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14880 | 14878 | .clobbers = .{ .eflags = true }, |
| 14881 | 14879 | .each = .{ .once = &.{ |
| 14882 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 14880 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 14883 | 14881 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 14884 | 14882 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 14885 | 14883 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| ... | ... | @@ -14924,7 +14922,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 14924 | 14922 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 14925 | 14923 | .clobbers = .{ .eflags = true }, |
| 14926 | 14924 | .each = .{ .once = &.{ |
| 14927 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 14925 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 14928 | 14926 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 14929 | 14927 | .{ ._, ._, .sub, .dst0b, .src1b, ._, ._ }, |
| 14930 | 14928 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15027,7 +15025,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15027 | 15025 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15028 | 15026 | .clobbers = .{ .eflags = true }, |
| 15029 | 15027 | .each = .{ .once = &.{ |
| 15030 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15028 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15031 | 15029 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15032 | 15030 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 15033 | 15031 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| ... | ... | @@ -15057,7 +15055,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15057 | 15055 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15058 | 15056 | .clobbers = .{ .eflags = true }, |
| 15059 | 15057 | .each = .{ .once = &.{ |
| 15060 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15058 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15061 | 15059 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15062 | 15060 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15063 | 15061 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| ... | ... | @@ -15117,7 +15115,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15117 | 15115 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15118 | 15116 | .clobbers = .{ .eflags = true }, |
| 15119 | 15117 | .each = .{ .once = &.{ |
| 15120 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15118 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15121 | 15119 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15122 | 15120 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15123 | 15121 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15147,7 +15145,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15147 | 15145 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15148 | 15146 | .clobbers = .{ .eflags = true }, |
| 15149 | 15147 | .each = .{ .once = &.{ |
| 15150 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15148 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15151 | 15149 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15152 | 15150 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15153 | 15151 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15177,7 +15175,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15177 | 15175 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15178 | 15176 | .clobbers = .{ .eflags = true }, |
| 15179 | 15177 | .each = .{ .once = &.{ |
| 15180 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15178 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15181 | 15179 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15182 | 15180 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15183 | 15181 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15208,7 +15206,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15208 | 15206 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15209 | 15207 | .clobbers = .{ .eflags = true }, |
| 15210 | 15208 | .each = .{ .once = &.{ |
| 15211 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15209 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15212 | 15210 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15213 | 15211 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15214 | 15212 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15355,7 +15353,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15355 | 15353 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15356 | 15354 | .clobbers = .{ .eflags = true }, |
| 15357 | 15355 | .each = .{ .once = &.{ |
| 15358 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15356 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15359 | 15357 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15360 | 15358 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15361 | 15359 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15385,7 +15383,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15385 | 15383 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15386 | 15384 | .clobbers = .{ .eflags = true }, |
| 15387 | 15385 | .each = .{ .once = &.{ |
| 15388 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15386 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15389 | 15387 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15390 | 15388 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15391 | 15389 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15415,7 +15413,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15415 | 15413 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15416 | 15414 | .clobbers = .{ .eflags = true }, |
| 15417 | 15415 | .each = .{ .once = &.{ |
| 15418 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15416 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15419 | 15417 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15420 | 15418 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15421 | 15419 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15446,7 +15444,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15446 | 15444 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15447 | 15445 | .clobbers = .{ .eflags = true }, |
| 15448 | 15446 | .each = .{ .once = &.{ |
| 15449 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15447 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15450 | 15448 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15451 | 15449 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15452 | 15450 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15477,7 +15475,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15477 | 15475 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15478 | 15476 | .clobbers = .{ .eflags = true }, |
| 15479 | 15477 | .each = .{ .once = &.{ |
| 15480 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15478 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15481 | 15479 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15482 | 15480 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15483 | 15481 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15508,7 +15506,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15508 | 15506 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15509 | 15507 | .clobbers = .{ .eflags = true }, |
| 15510 | 15508 | .each = .{ .once = &.{ |
| 15511 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15509 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15512 | 15510 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15513 | 15511 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15514 | 15512 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15539,7 +15537,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15539 | 15537 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15540 | 15538 | .clobbers = .{ .eflags = true }, |
| 15541 | 15539 | .each = .{ .once = &.{ |
| 15542 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15540 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15543 | 15541 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15544 | 15542 | .{ ._, ._, .sub, .dst0w, .src1w, ._, ._ }, |
| 15545 | 15543 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15571,7 +15569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15571 | 15569 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15572 | 15570 | .clobbers = .{ .eflags = true }, |
| 15573 | 15571 | .each = .{ .once = &.{ |
| 15574 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15572 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15575 | 15573 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 15576 | 15574 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15577 | 15575 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15780,7 +15778,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15780 | 15778 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15781 | 15779 | .clobbers = .{ .eflags = true }, |
| 15782 | 15780 | .each = .{ .once = &.{ |
| 15783 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15781 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15784 | 15782 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15785 | 15783 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 15786 | 15784 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| ... | ... | @@ -15825,7 +15823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15825 | 15823 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15826 | 15824 | .clobbers = .{ .eflags = true }, |
| 15827 | 15825 | .each = .{ .once = &.{ |
| 15828 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15826 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15829 | 15827 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15830 | 15828 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15831 | 15829 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15887,7 +15885,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15887 | 15885 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15888 | 15886 | .clobbers = .{ .eflags = true }, |
| 15889 | 15887 | .each = .{ .once = &.{ |
| 15890 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15888 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15891 | 15889 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15892 | 15890 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15893 | 15891 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -15919,7 +15917,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 15919 | 15917 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 15920 | 15918 | .clobbers = .{ .eflags = true }, |
| 15921 | 15919 | .each = .{ .once = &.{ |
| 15922 | | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 15920 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 15923 | 15921 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 15924 | 15922 | .{ ._, ._, .sub, .dst0d, .src1d, ._, ._ }, |
| 15925 | 15923 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -16039,7 +16037,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16039 | 16037 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16040 | 16038 | .clobbers = .{ .eflags = true }, |
| 16041 | 16039 | .each = .{ .once = &.{ |
| 16042 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16040 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 16043 | 16041 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16044 | 16042 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 16045 | 16043 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| ... | ... | @@ -16100,7 +16098,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16100 | 16098 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16101 | 16099 | .clobbers = .{ .eflags = true }, |
| 16102 | 16100 | .each = .{ .once = &.{ |
| 16103 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16101 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 16104 | 16102 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16105 | 16103 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16106 | 16104 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -16165,7 +16163,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16165 | 16163 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16166 | 16164 | .clobbers = .{ .eflags = true }, |
| 16167 | 16165 | .each = .{ .once = &.{ |
| 16168 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16166 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 16169 | 16167 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16170 | 16168 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16171 | 16169 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -16198,7 +16196,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 16198 | 16196 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 16199 | 16197 | .clobbers = .{ .eflags = true }, |
| 16200 | 16198 | .each = .{ .once = &.{ |
| 16201 | | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 16199 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 16202 | 16200 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 16203 | 16201 | .{ ._, ._, .sub, .dst0q, .src1q, ._, ._ }, |
| 16204 | 16202 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| ... | ... | @@ -58000,20 +57998,3084 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58000 | 57998 | }, .{ |
| 58001 | 57999 | .required_features = .{ .@"64bit", null, null, null }, |
| 58002 | 58000 | .src_constraints = .{ |
| 58003 | | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 58004 | | .{ .unsigned_int = .byte }, |
| 58001 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 58002 | .{ .unsigned_int = .byte }, |
| 58003 | .any, |
| 58004 | }, |
| 58005 | .patterns = &.{ |
| 58006 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58007 | }, |
| 58008 | .extra_temps = .{ |
| 58009 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58010 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58011 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58012 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58013 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58014 | .unused, |
| 58015 | .unused, |
| 58016 | .unused, |
| 58017 | .unused, |
| 58018 | .unused, |
| 58019 | .unused, |
| 58020 | }, |
| 58021 | .dst_temps = .{ .mem, .unused }, |
| 58022 | .clobbers = .{ .eflags = true }, |
| 58023 | .each = .{ .once = &.{ |
| 58024 | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58025 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58026 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58027 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58028 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58029 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58030 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58031 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58032 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58033 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58034 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58035 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58036 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58037 | .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ }, |
| 58038 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58039 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 58040 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 58041 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 58042 | } }, |
| 58043 | }, .{ |
| 58044 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58045 | .src_constraints = .{ |
| 58046 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58047 | .{ .unsigned_int = .byte }, |
| 58048 | .any, |
| 58049 | }, |
| 58050 | .patterns = &.{ |
| 58051 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58052 | }, |
| 58053 | .extra_temps = .{ |
| 58054 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58055 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58056 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58057 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58058 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58059 | .unused, |
| 58060 | .unused, |
| 58061 | .unused, |
| 58062 | .unused, |
| 58063 | .unused, |
| 58064 | .unused, |
| 58065 | }, |
| 58066 | .dst_temps = .{ .mem, .unused }, |
| 58067 | .clobbers = .{ .eflags = true }, |
| 58068 | .each = .{ .once = &.{ |
| 58069 | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58070 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58071 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58072 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58073 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58074 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58075 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58076 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58077 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58078 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58079 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58080 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58081 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58082 | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58083 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58084 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58085 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 58086 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58087 | } }, |
| 58088 | }, .{ |
| 58089 | .required_features = .{ .@"64bit", null, null, null }, |
| 58090 | .src_constraints = .{ |
| 58091 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58092 | .{ .unsigned_int = .byte }, |
| 58093 | .any, |
| 58094 | }, |
| 58095 | .patterns = &.{ |
| 58096 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58097 | }, |
| 58098 | .extra_temps = .{ |
| 58099 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58100 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58101 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58102 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58103 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58104 | .unused, |
| 58105 | .unused, |
| 58106 | .unused, |
| 58107 | .unused, |
| 58108 | .unused, |
| 58109 | .unused, |
| 58110 | }, |
| 58111 | .dst_temps = .{ .mem, .unused }, |
| 58112 | .clobbers = .{ .eflags = true }, |
| 58113 | .each = .{ .once = &.{ |
| 58114 | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58115 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58116 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58117 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58118 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58119 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58120 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58121 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58122 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58123 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58124 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58125 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58126 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58127 | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58128 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58129 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58130 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 58131 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 58132 | } }, |
| 58133 | }, .{ |
| 58134 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58135 | .src_constraints = .{ |
| 58136 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 58137 | .{ .unsigned_int = .word }, |
| 58138 | .any, |
| 58139 | }, |
| 58140 | .patterns = &.{ |
| 58141 | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 58142 | }, |
| 58143 | .extra_temps = .{ |
| 58144 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58145 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58146 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58147 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58148 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58149 | .unused, |
| 58150 | .unused, |
| 58151 | .unused, |
| 58152 | .unused, |
| 58153 | .unused, |
| 58154 | .unused, |
| 58155 | }, |
| 58156 | .dst_temps = .{ .mem, .unused }, |
| 58157 | .clobbers = .{ .eflags = true }, |
| 58158 | .each = .{ .once = &.{ |
| 58159 | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58160 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58161 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58162 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58163 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58164 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58165 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58166 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58167 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58168 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58169 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58170 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58171 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58172 | .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ }, |
| 58173 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58174 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 58175 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 58176 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58177 | } }, |
| 58178 | }, .{ |
| 58179 | .required_features = .{ .@"64bit", null, null, null }, |
| 58180 | .src_constraints = .{ |
| 58181 | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 58182 | .{ .unsigned_int = .word }, |
| 58183 | .any, |
| 58184 | }, |
| 58185 | .patterns = &.{ |
| 58186 | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 58187 | }, |
| 58188 | .extra_temps = .{ |
| 58189 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58190 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58191 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58192 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58193 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58194 | .unused, |
| 58195 | .unused, |
| 58196 | .unused, |
| 58197 | .unused, |
| 58198 | .unused, |
| 58199 | .unused, |
| 58200 | }, |
| 58201 | .dst_temps = .{ .mem, .unused }, |
| 58202 | .clobbers = .{ .eflags = true }, |
| 58203 | .each = .{ .once = &.{ |
| 58204 | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58205 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58206 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58207 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58208 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58209 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58210 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58211 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58212 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58213 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58214 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58215 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58216 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58217 | .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ }, |
| 58218 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58219 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 58220 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 58221 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 58222 | } }, |
| 58223 | }, .{ |
| 58224 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58225 | .src_constraints = .{ |
| 58226 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58227 | .{ .unsigned_int = .word }, |
| 58228 | .any, |
| 58229 | }, |
| 58230 | .patterns = &.{ |
| 58231 | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 58232 | }, |
| 58233 | .extra_temps = .{ |
| 58234 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58235 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58236 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58237 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58238 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58239 | .unused, |
| 58240 | .unused, |
| 58241 | .unused, |
| 58242 | .unused, |
| 58243 | .unused, |
| 58244 | .unused, |
| 58245 | }, |
| 58246 | .dst_temps = .{ .mem, .unused }, |
| 58247 | .clobbers = .{ .eflags = true }, |
| 58248 | .each = .{ .once = &.{ |
| 58249 | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58250 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58251 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58252 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58253 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58254 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58255 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58256 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58257 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58258 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58259 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58260 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58261 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58262 | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58263 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58264 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58265 | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 58266 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58267 | } }, |
| 58268 | }, .{ |
| 58269 | .required_features = .{ .@"64bit", null, null, null }, |
| 58270 | .src_constraints = .{ |
| 58271 | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58272 | .{ .unsigned_int = .word }, |
| 58273 | .any, |
| 58274 | }, |
| 58275 | .patterns = &.{ |
| 58276 | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 58277 | }, |
| 58278 | .extra_temps = .{ |
| 58279 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58280 | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58281 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58282 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58283 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58284 | .unused, |
| 58285 | .unused, |
| 58286 | .unused, |
| 58287 | .unused, |
| 58288 | .unused, |
| 58289 | .unused, |
| 58290 | }, |
| 58291 | .dst_temps = .{ .mem, .unused }, |
| 58292 | .clobbers = .{ .eflags = true }, |
| 58293 | .each = .{ .once = &.{ |
| 58294 | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58295 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58296 | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58297 | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58298 | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58299 | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58300 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58301 | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58302 | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58303 | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58304 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58305 | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58306 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58307 | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58308 | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58309 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58310 | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 58311 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 58312 | } }, |
| 58313 | } }) catch |err| switch (err) { |
| 58314 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{ |
| 58315 | @tagName(air_tag), |
| 58316 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 58317 | cg.typeOf(bin_op.rhs).fmt(pt), |
| 58318 | ops[0].tracking(cg), |
| 58319 | ops[1].tracking(cg), |
| 58320 | }), |
| 58321 | else => |e| return e, |
| 58322 | }; |
| 58323 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 58324 | }, |
| 58325 | .shl, .shl_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: { |
| 58326 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 58327 | if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst); |
| 58328 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 58329 | var res: [1]Temp = undefined; |
| 58330 | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| 58331 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 58332 | .patterns = &.{ |
| 58333 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58334 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58335 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58336 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58337 | }, |
| 58338 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58339 | .clobbers = .{ .eflags = true }, |
| 58340 | .each = .{ .once = &.{ |
| 58341 | .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ }, |
| 58342 | } }, |
| 58343 | }, .{ |
| 58344 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 58345 | .patterns = &.{ |
| 58346 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58347 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58348 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58349 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58350 | }, |
| 58351 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58352 | .clobbers = .{ .eflags = true }, |
| 58353 | .each = .{ .once = &.{ |
| 58354 | .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ }, |
| 58355 | } }, |
| 58356 | }, .{ |
| 58357 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_unsigned_int = 4 }, .any }, |
| 58358 | .patterns = &.{ |
| 58359 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58360 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58361 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58362 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58363 | }, |
| 58364 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58365 | .clobbers = .{ .eflags = true }, |
| 58366 | .each = .{ .once = &.{ |
| 58367 | .{ ._, ._l, .sa, .dst0w, .src1b, ._, ._ }, |
| 58368 | } }, |
| 58369 | }, .{ |
| 58370 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_unsigned_int = 4 }, .any }, |
| 58371 | .patterns = &.{ |
| 58372 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58373 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58374 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58375 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58376 | }, |
| 58377 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58378 | .clobbers = .{ .eflags = true }, |
| 58379 | .each = .{ .once = &.{ |
| 58380 | .{ ._, ._l, .sh, .dst0w, .src1b, ._, ._ }, |
| 58381 | } }, |
| 58382 | }, .{ |
| 58383 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58384 | .patterns = &.{ |
| 58385 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58386 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58387 | }, |
| 58388 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58389 | .clobbers = .{ .eflags = true }, |
| 58390 | .each = .{ .once = &.{ |
| 58391 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 58392 | } }, |
| 58393 | }, .{ |
| 58394 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58395 | .patterns = &.{ |
| 58396 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58397 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58398 | }, |
| 58399 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58400 | .clobbers = .{ .eflags = true }, |
| 58401 | .each = .{ .once = &.{ |
| 58402 | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 58403 | } }, |
| 58404 | }, .{ |
| 58405 | .required_features = .{ .bmi2, null, null, null }, |
| 58406 | .src_constraints = .{ .{ .int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58407 | .patterns = &.{ |
| 58408 | .{ .src = .{ .mem, .to_gpr, .none } }, |
| 58409 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 58410 | }, |
| 58411 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 58412 | .each = .{ .once = &.{ |
| 58413 | .{ ._, ._lx, .sh, .dst0d, .src0d, .src1d, ._ }, |
| 58414 | } }, |
| 58415 | }, .{ |
| 58416 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58417 | .patterns = &.{ |
| 58418 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58419 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58420 | }, |
| 58421 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58422 | .clobbers = .{ .eflags = true }, |
| 58423 | .each = .{ .once = &.{ |
| 58424 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 58425 | } }, |
| 58426 | }, .{ |
| 58427 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58428 | .patterns = &.{ |
| 58429 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58430 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58431 | }, |
| 58432 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58433 | .clobbers = .{ .eflags = true }, |
| 58434 | .each = .{ .once = &.{ |
| 58435 | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 58436 | } }, |
| 58437 | }, .{ |
| 58438 | .required_features = .{ .@"64bit", null, null, null }, |
| 58439 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58440 | .patterns = &.{ |
| 58441 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58442 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58443 | }, |
| 58444 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58445 | .clobbers = .{ .eflags = true }, |
| 58446 | .each = .{ .once = &.{ |
| 58447 | .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 58448 | } }, |
| 58449 | }, .{ |
| 58450 | .required_features = .{ .@"64bit", null, null, null }, |
| 58451 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58452 | .patterns = &.{ |
| 58453 | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58454 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58455 | }, |
| 58456 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58457 | .clobbers = .{ .eflags = true }, |
| 58458 | .each = .{ .once = &.{ |
| 58459 | .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ }, |
| 58460 | } }, |
| 58461 | }, .{ |
| 58462 | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 58463 | .src_constraints = .{ .{ .int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58464 | .patterns = &.{ |
| 58465 | .{ .src = .{ .mem, .to_gpr, .none } }, |
| 58466 | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 58467 | }, |
| 58468 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 58469 | .each = .{ .once = &.{ |
| 58470 | .{ ._, ._lx, .sh, .dst0q, .src0q, .src1q, ._ }, |
| 58471 | } }, |
| 58472 | }, .{ |
| 58473 | .required_features = .{ .@"64bit", null, null, null }, |
| 58474 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58475 | .patterns = &.{ |
| 58476 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58477 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58478 | }, |
| 58479 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58480 | .clobbers = .{ .eflags = true }, |
| 58481 | .each = .{ .once = &.{ |
| 58482 | .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 58483 | } }, |
| 58484 | }, .{ |
| 58485 | .required_features = .{ .@"64bit", null, null, null }, |
| 58486 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58487 | .patterns = &.{ |
| 58488 | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58489 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58490 | }, |
| 58491 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58492 | .clobbers = .{ .eflags = true }, |
| 58493 | .each = .{ .once = &.{ |
| 58494 | .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ }, |
| 58495 | } }, |
| 58496 | }, .{ |
| 58497 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58498 | .src_constraints = .{ |
| 58499 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58500 | .{ .unsigned_int = .byte }, |
| 58501 | .any, |
| 58502 | }, |
| 58503 | .patterns = &.{ |
| 58504 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58505 | }, |
| 58506 | .extra_temps = .{ |
| 58507 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58508 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58509 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58510 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58511 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58512 | .unused, |
| 58513 | .unused, |
| 58514 | .unused, |
| 58515 | .unused, |
| 58516 | .unused, |
| 58517 | .unused, |
| 58518 | }, |
| 58519 | .dst_temps = .{ .mem, .unused }, |
| 58520 | .clobbers = .{ .eflags = true }, |
| 58521 | .each = .{ .once = &.{ |
| 58522 | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58523 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58524 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58525 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 58526 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58527 | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58528 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58529 | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58530 | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58531 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58532 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58533 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 58534 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 58535 | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58536 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58537 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58538 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 58539 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 58540 | } }, |
| 58541 | }, .{ |
| 58542 | .required_features = .{ .@"64bit", null, null, null }, |
| 58543 | .src_constraints = .{ |
| 58544 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58545 | .{ .unsigned_int = .byte }, |
| 58546 | .any, |
| 58547 | }, |
| 58548 | .patterns = &.{ |
| 58549 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58550 | }, |
| 58551 | .extra_temps = .{ |
| 58552 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58553 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58554 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58555 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58556 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58557 | .unused, |
| 58558 | .unused, |
| 58559 | .unused, |
| 58560 | .unused, |
| 58561 | .unused, |
| 58562 | .unused, |
| 58563 | }, |
| 58564 | .dst_temps = .{ .mem, .unused }, |
| 58565 | .clobbers = .{ .eflags = true }, |
| 58566 | .each = .{ .once = &.{ |
| 58567 | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58568 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58569 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58570 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 58571 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58572 | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58573 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58574 | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58575 | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58576 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58577 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58578 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 58579 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 58580 | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58581 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58582 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58583 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 58584 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 58585 | } }, |
| 58586 | }, .{ |
| 58587 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58588 | .src_constraints = .{ |
| 58589 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58590 | .{ .unsigned_int = .word }, |
| 58591 | .any, |
| 58592 | }, |
| 58593 | .patterns = &.{ |
| 58594 | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 58595 | }, |
| 58596 | .extra_temps = .{ |
| 58597 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58598 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58599 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58600 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58601 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58602 | .unused, |
| 58603 | .unused, |
| 58604 | .unused, |
| 58605 | .unused, |
| 58606 | .unused, |
| 58607 | .unused, |
| 58608 | }, |
| 58609 | .dst_temps = .{ .mem, .unused }, |
| 58610 | .clobbers = .{ .eflags = true }, |
| 58611 | .each = .{ .once = &.{ |
| 58612 | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58613 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58614 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58615 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 58616 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58617 | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58618 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58619 | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58620 | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58621 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58622 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58623 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 58624 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 58625 | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58626 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58627 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58628 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 58629 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 58630 | } }, |
| 58631 | }, .{ |
| 58632 | .required_features = .{ .@"64bit", null, null, null }, |
| 58633 | .src_constraints = .{ |
| 58634 | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58635 | .{ .unsigned_int = .word }, |
| 58636 | .any, |
| 58637 | }, |
| 58638 | .patterns = &.{ |
| 58639 | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 58640 | }, |
| 58641 | .extra_temps = .{ |
| 58642 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58643 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58644 | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58645 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58646 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58647 | .unused, |
| 58648 | .unused, |
| 58649 | .unused, |
| 58650 | .unused, |
| 58651 | .unused, |
| 58652 | .unused, |
| 58653 | }, |
| 58654 | .dst_temps = .{ .mem, .unused }, |
| 58655 | .clobbers = .{ .eflags = true }, |
| 58656 | .each = .{ .once = &.{ |
| 58657 | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58658 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58659 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58660 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 58661 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58662 | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58663 | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58664 | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58665 | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58666 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58667 | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58668 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 58669 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 58670 | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58671 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58672 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58673 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 58674 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 58675 | } }, |
| 58676 | } }) catch |err| switch (err) { |
| 58677 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{ |
| 58678 | @tagName(air_tag), |
| 58679 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 58680 | cg.typeOf(bin_op.rhs).fmt(pt), |
| 58681 | ops[0].tracking(cg), |
| 58682 | ops[1].tracking(cg), |
| 58683 | }), |
| 58684 | else => |e| return e, |
| 58685 | }; |
| 58686 | switch (air_tag) { |
| 58687 | else => unreachable, |
| 58688 | .shl => res[0].wrapInt(cg) catch |err| switch (err) { |
| 58689 | error.SelectFailed => return cg.fail("failed to select wrap {} {} {} {}", .{ |
| 58690 | cg.typeOf(bin_op.lhs).fmt(pt), |
| 58691 | cg.typeOf(bin_op.rhs).fmt(pt), |
| 58692 | ops[0].tracking(cg), |
| 58693 | ops[1].tracking(cg), |
| 58694 | }), |
| 58695 | else => |e| return e, |
| 58696 | }, |
| 58697 | .shl_exact => {}, |
| 58698 | } |
| 58699 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 58700 | }, |
| 58701 | .shl_sat => |air_tag| if (use_old) try cg.airShlSat(inst) else fallback: { |
| 58702 | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 58703 | const lhs_ty = cg.typeOf(bin_op.lhs); |
| 58704 | if (lhs_ty.isVector(zcu)) break :fallback try cg.airShlSat(inst); |
| 58705 | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 58706 | var res: [1]Temp = undefined; |
| 58707 | switch (ops[1].tracking(cg).short) { |
| 58708 | .immediate => |rhs_imm| res[0] = try cg.tempInit( |
| 58709 | .i32, |
| 58710 | .{ .immediate = if (rhs_imm < cg.intInfo(lhs_ty).?.bits) |
| 58711 | rhs_imm |
| 58712 | else |
| 58713 | @bitCast(@as(i64, -1)) }, |
| 58714 | ), |
| 58715 | else => cg.select(&res, &.{.i32}, ops[1..2], comptime &.{ .{ |
| 58716 | .src_constraints = .{ .{ .unsigned_int = .byte }, .any, .any }, |
| 58717 | .patterns = &.{ |
| 58718 | .{ .src = .{ .mem, .none, .none } }, |
| 58719 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 58720 | }, |
| 58721 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 58722 | .each = .{ .once = &.{ |
| 58723 | .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ }, |
| 58724 | } }, |
| 58725 | }, .{ |
| 58726 | .src_constraints = .{ .{ .unsigned_int = .word }, .any, .any }, |
| 58727 | .patterns = &.{ |
| 58728 | .{ .src = .{ .mem, .none, .none } }, |
| 58729 | .{ .src = .{ .to_gpr, .none, .none } }, |
| 58730 | }, |
| 58731 | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 58732 | .each = .{ .once = &.{ |
| 58733 | .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ }, |
| 58734 | } }, |
| 58735 | }, .{ |
| 58736 | .src_constraints = .{ .{ .unsigned_int = .dword }, .any, .any }, |
| 58737 | .patterns = &.{ |
| 58738 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 58739 | }, |
| 58740 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58741 | .each = .{ .once = &.{} }, |
| 58742 | }, .{ |
| 58743 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 58744 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 58745 | .patterns = &.{ |
| 58746 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 58747 | }, |
| 58748 | .extra_temps = .{ |
| 58749 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58750 | .unused, |
| 58751 | .unused, |
| 58752 | .unused, |
| 58753 | .unused, |
| 58754 | .unused, |
| 58755 | .unused, |
| 58756 | .unused, |
| 58757 | .unused, |
| 58758 | .unused, |
| 58759 | .unused, |
| 58760 | }, |
| 58761 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58762 | .each = .{ .once = &.{ |
| 58763 | .{ ._, ._, .mov, .tmp0d, .si(1 << 16), ._, ._ }, |
| 58764 | .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ }, |
| 58765 | .{ ._, ._nb, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 58766 | } }, |
| 58767 | }, .{ |
| 58768 | .required_features = .{ .@"64bit", null, null, null }, |
| 58769 | .src_constraints = .{ .{ .unsigned_int = .qword }, .any, .any }, |
| 58770 | .patterns = &.{ |
| 58771 | .{ .src = .{ .to_mut_gpr, .none, .none } }, |
| 58772 | }, |
| 58773 | .extra_temps = .{ |
| 58774 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58775 | .unused, |
| 58776 | .unused, |
| 58777 | .unused, |
| 58778 | .unused, |
| 58779 | .unused, |
| 58780 | .unused, |
| 58781 | .unused, |
| 58782 | .unused, |
| 58783 | .unused, |
| 58784 | .unused, |
| 58785 | }, |
| 58786 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58787 | .each = .{ .once = &.{ |
| 58788 | .{ ._, ._, .cmp, .src0q, .si(1 << 16), ._, ._ }, |
| 58789 | .{ ._, ._, .cmc, ._, ._, ._, ._ }, |
| 58790 | .{ ._, ._, .sbb, .tmp0d, .tmp0d, ._, ._ }, |
| 58791 | .{ ._, ._, .@"or", .dst0d, .tmp0d, ._, ._ }, |
| 58792 | } }, |
| 58793 | }, .{ |
| 58794 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 58795 | .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 58796 | .patterns = &.{ |
| 58797 | .{ .src = .{ .to_mem, .none, .none } }, |
| 58798 | }, |
| 58799 | .extra_temps = .{ |
| 58800 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58801 | .unused, |
| 58802 | .unused, |
| 58803 | .unused, |
| 58804 | .unused, |
| 58805 | .unused, |
| 58806 | .unused, |
| 58807 | .unused, |
| 58808 | .unused, |
| 58809 | .unused, |
| 58810 | .unused, |
| 58811 | }, |
| 58812 | .dst_temps = .{ .{ .reg = .ecx }, .unused }, |
| 58813 | .each = .{ .once = &.{ |
| 58814 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 58815 | .{ ._, ._, .mov, .dst0d, .si(1 << 16), ._, ._ }, |
| 58816 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 58817 | .{ ._, ._ne, .j, .@"0f", ._, ._, ._ }, |
| 58818 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58819 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 58820 | .{ ._, ._, .mov, .tmp0q, .mem(.src0q), ._, ._ }, |
| 58821 | .{ ._, ._, .cmp, .tmp0q, .dst0q, ._, ._ }, |
| 58822 | .{ ._, ._na, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 58823 | } }, |
| 58824 | }, .{ |
| 58825 | .required_features = .{ .@"64bit", null, null, null }, |
| 58826 | .src_constraints = .{ .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, .any, .any }, |
| 58827 | .patterns = &.{ |
| 58828 | .{ .src = .{ .to_mem, .none, .none } }, |
| 58829 | }, |
| 58830 | .extra_temps = .{ |
| 58831 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58832 | .unused, |
| 58833 | .unused, |
| 58834 | .unused, |
| 58835 | .unused, |
| 58836 | .unused, |
| 58837 | .unused, |
| 58838 | .unused, |
| 58839 | .unused, |
| 58840 | .unused, |
| 58841 | .unused, |
| 58842 | }, |
| 58843 | .dst_temps = .{ .{ .reg = .ecx }, .unused }, |
| 58844 | .each = .{ .once = &.{ |
| 58845 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 58846 | .{ ._, ._, .mov, .dst0d, .si(1 << 16), ._, ._ }, |
| 58847 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 58848 | .{ ._, ._ne, .j, .@"0f", ._, ._, ._ }, |
| 58849 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58850 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 58851 | .{ ._, ._, .mov, .tmp0q, .mem(.src0q), ._, ._ }, |
| 58852 | .{ ._, ._, .cmp, .dst0q, .tmp0q, ._, ._ }, |
| 58853 | .{ ._, ._, .sbb, .dst0d, .dst0d, ._, ._ }, |
| 58854 | .{ ._, ._, .@"or", .dst0d, .tmp0d, ._, ._ }, |
| 58855 | } }, |
| 58856 | } }) catch |err| switch (err) { |
| 58857 | error.SelectFailed => return cg.fail("failed to select {s} {} {}", .{ |
| 58858 | @tagName(air_tag), |
| 58859 | cg.typeOf(bin_op.rhs).fmt(pt), |
| 58860 | ops[1].tracking(cg), |
| 58861 | }), |
| 58862 | else => |e| return e, |
| 58863 | }, |
| 58864 | } |
| 58865 | if (ops[1].index != res[0].index) { |
| 58866 | try ops[1].die(cg); |
| 58867 | ops[1] = res[0]; |
| 58868 | } else cg.temp_type[@intFromEnum(res[0].unwrap(cg).temp)] = .i32; |
| 58869 | cg.select(&res, &.{lhs_ty}, &ops, comptime &.{ .{ |
| 58870 | .required_features = .{ .cmov, null, null, null }, |
| 58871 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 58872 | .patterns = &.{ |
| 58873 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 58874 | }, |
| 58875 | .extra_temps = .{ |
| 58876 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 58877 | .unused, |
| 58878 | .unused, |
| 58879 | .unused, |
| 58880 | .unused, |
| 58881 | .unused, |
| 58882 | .unused, |
| 58883 | .unused, |
| 58884 | .unused, |
| 58885 | .unused, |
| 58886 | .unused, |
| 58887 | }, |
| 58888 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58889 | .each = .{ .once = &.{ |
| 58890 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 58891 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 58892 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 58893 | .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ }, |
| 58894 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 58895 | } }, |
| 58896 | }, .{ |
| 58897 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 58898 | .patterns = &.{ |
| 58899 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 58900 | }, |
| 58901 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58902 | .each = .{ .once = &.{ |
| 58903 | .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ }, |
| 58904 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 58905 | .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ }, |
| 58906 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ }, |
| 58907 | } }, |
| 58908 | }, .{ |
| 58909 | .required_features = .{ .cmov, null, null, null }, |
| 58910 | .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 32 }, .any }, |
| 58911 | .patterns = &.{ |
| 58912 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 58913 | }, |
| 58914 | .extra_temps = .{ |
| 58915 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 58916 | .unused, |
| 58917 | .unused, |
| 58918 | .unused, |
| 58919 | .unused, |
| 58920 | .unused, |
| 58921 | .unused, |
| 58922 | .unused, |
| 58923 | .unused, |
| 58924 | .unused, |
| 58925 | .unused, |
| 58926 | }, |
| 58927 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58928 | .each = .{ .once = &.{ |
| 58929 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 58930 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 58931 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 58932 | .{ ._, ._, .add, .dst0b, .src0b, ._, ._ }, |
| 58933 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 58934 | } }, |
| 58935 | }, .{ |
| 58936 | .src_constraints = .{ .{ .exact_signed_int = 8 }, .{ .exact_signed_int = 32 }, .any }, |
| 58937 | .patterns = &.{ |
| 58938 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 58939 | }, |
| 58940 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58941 | .each = .{ .once = &.{ |
| 58942 | .{ ._, ._, .add, .dst0b, .src0b, ._, ._ }, |
| 58943 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 58944 | .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ }, |
| 58945 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smin), ._, ._ }, |
| 58946 | } }, |
| 58947 | }, .{ |
| 58948 | .required_features = .{ .cmov, null, null, null }, |
| 58949 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 58950 | .patterns = &.{ |
| 58951 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58952 | }, |
| 58953 | .extra_temps = .{ |
| 58954 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 58955 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 58956 | .unused, |
| 58957 | .unused, |
| 58958 | .unused, |
| 58959 | .unused, |
| 58960 | .unused, |
| 58961 | .unused, |
| 58962 | .unused, |
| 58963 | .unused, |
| 58964 | .unused, |
| 58965 | }, |
| 58966 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58967 | .each = .{ .once = &.{ |
| 58968 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 58969 | .{ ._, ._r, .sa, .tmp0b, .ui(7), ._, ._ }, |
| 58970 | .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 58971 | .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ }, |
| 58972 | .{ ._, ._, .xor, .tmp0b, .sa(.src0, .add_smax), ._, ._ }, |
| 58973 | .{ ._, ._, .cmp, .tmp1b, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 58974 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 58975 | } }, |
| 58976 | }, .{ |
| 58977 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 58978 | .patterns = &.{ |
| 58979 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58980 | }, |
| 58981 | .extra_temps = .{ |
| 58982 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 58983 | .unused, |
| 58984 | .unused, |
| 58985 | .unused, |
| 58986 | .unused, |
| 58987 | .unused, |
| 58988 | .unused, |
| 58989 | .unused, |
| 58990 | .unused, |
| 58991 | .unused, |
| 58992 | .unused, |
| 58993 | }, |
| 58994 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58995 | .each = .{ .once = &.{ |
| 58996 | .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 58997 | .{ ._, ._, .cmp, .tmp0b, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 58998 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 58999 | .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ }, |
| 59000 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ }, |
| 59001 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59002 | .{ .@"1:", ._l, .sa, .dst0b, .src1b, ._, ._ }, |
| 59003 | } }, |
| 59004 | }, .{ |
| 59005 | .src_constraints = .{ .{ .signed_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59006 | .patterns = &.{ |
| 59007 | .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59008 | }, |
| 59009 | .extra_temps = .{ |
| 59010 | .{ .type = .i8, .kind = .{ .rc = .general_purpose } }, |
| 59011 | .unused, |
| 59012 | .unused, |
| 59013 | .unused, |
| 59014 | .unused, |
| 59015 | .unused, |
| 59016 | .unused, |
| 59017 | .unused, |
| 59018 | .unused, |
| 59019 | .unused, |
| 59020 | .unused, |
| 59021 | }, |
| 59022 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59023 | .each = .{ .once = &.{ |
| 59024 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59025 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59026 | .{ ._, ._, .@"test", .src0b, .src0b, ._, ._ }, |
| 59027 | .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59028 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59029 | .{ ._, ._r, .sa, .dst0b, .ui(7), ._, ._ }, |
| 59030 | .{ ._, ._, .xor, .dst0b, .sa(.src0, .add_smax), ._, ._ }, |
| 59031 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59032 | .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59033 | .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ }, |
| 59034 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59035 | .{ ._, ._l, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ }, |
| 59036 | .{ ._, ._r, .sa, .tmp0b, .uia(8, .src0, .sub_bit_size), ._, ._ }, |
| 59037 | .{ ._, ._r, .sa, .tmp0b, .src1b, ._, ._ }, |
| 59038 | .{ ._, ._, .cmp, .tmp0b, .src0b, ._, ._ }, |
| 59039 | .{ ._, ._ne, .j, .@"0b", ._, ._, ._ }, |
| 59040 | } }, |
| 59041 | }, .{ |
| 59042 | .required_features = .{ .cmov, null, null, null }, |
| 59043 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59044 | .patterns = &.{ |
| 59045 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59046 | }, |
| 59047 | .extra_temps = .{ |
| 59048 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 59049 | .unused, |
| 59050 | .unused, |
| 59051 | .unused, |
| 59052 | .unused, |
| 59053 | .unused, |
| 59054 | .unused, |
| 59055 | .unused, |
| 59056 | .unused, |
| 59057 | .unused, |
| 59058 | .unused, |
| 59059 | }, |
| 59060 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59061 | .each = .{ .once = &.{ |
| 59062 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59063 | .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ }, |
| 59064 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59065 | } }, |
| 59066 | }, .{ |
| 59067 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59068 | .patterns = &.{ |
| 59069 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59070 | }, |
| 59071 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59072 | .each = .{ .once = &.{ |
| 59073 | .{ ._, ._, .@"test", .dst0b, .src0b, ._, ._ }, |
| 59074 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59075 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59076 | } }, |
| 59077 | }, .{ |
| 59078 | .required_features = .{ .cmov, null, null, null }, |
| 59079 | .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_signed_int = 32 }, .any }, |
| 59080 | .patterns = &.{ |
| 59081 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59082 | }, |
| 59083 | .extra_temps = .{ |
| 59084 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 59085 | .unused, |
| 59086 | .unused, |
| 59087 | .unused, |
| 59088 | .unused, |
| 59089 | .unused, |
| 59090 | .unused, |
| 59091 | .unused, |
| 59092 | .unused, |
| 59093 | .unused, |
| 59094 | .unused, |
| 59095 | }, |
| 59096 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59097 | .each = .{ .once = &.{ |
| 59098 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59099 | .{ ._, ._, .add, .dst0b, .src0b, ._, ._ }, |
| 59100 | .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59101 | } }, |
| 59102 | }, .{ |
| 59103 | .src_constraints = .{ .{ .exact_unsigned_int = 8 }, .{ .exact_signed_int = 32 }, .any }, |
| 59104 | .patterns = &.{ |
| 59105 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59106 | }, |
| 59107 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59108 | .each = .{ .once = &.{ |
| 59109 | .{ ._, ._, .add, .dst0b, .src0b, ._, ._ }, |
| 59110 | .{ ._, ._nc, .j, .@"0f", ._, ._, ._ }, |
| 59111 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59112 | } }, |
| 59113 | }, .{ |
| 59114 | .required_features = .{ .cmov, null, null, null }, |
| 59115 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59116 | .patterns = &.{ |
| 59117 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59118 | }, |
| 59119 | .extra_temps = .{ |
| 59120 | .{ .type = .u8, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, |
| 59121 | .unused, |
| 59122 | .unused, |
| 59123 | .unused, |
| 59124 | .unused, |
| 59125 | .unused, |
| 59126 | .unused, |
| 59127 | .unused, |
| 59128 | .unused, |
| 59129 | .unused, |
| 59130 | .unused, |
| 59131 | }, |
| 59132 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59133 | .each = .{ .once = &.{ |
| 59134 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59135 | .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ }, |
| 59136 | .{ ._, ._, .cmp, .src0b, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59137 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59138 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59139 | } }, |
| 59140 | }, .{ |
| 59141 | .required_features = .{ .cmov, null, null, null }, |
| 59142 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59143 | .patterns = &.{ |
| 59144 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59145 | }, |
| 59146 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59147 | .each = .{ .once = &.{ |
| 59148 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59149 | .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ }, |
| 59150 | .{ ._, ._, .cmp, .src0b, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59151 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| 59152 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59153 | } }, |
| 59154 | }, .{ |
| 59155 | .required_features = .{ .cmov, null, null, null }, |
| 59156 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59157 | .patterns = &.{ |
| 59158 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59159 | }, |
| 59160 | .extra_temps = .{ |
| 59161 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 59162 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 59163 | .unused, |
| 59164 | .unused, |
| 59165 | .unused, |
| 59166 | .unused, |
| 59167 | .unused, |
| 59168 | .unused, |
| 59169 | .unused, |
| 59170 | .unused, |
| 59171 | .unused, |
| 59172 | }, |
| 59173 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59174 | .each = .{ .once = &.{ |
| 59175 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59176 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59177 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59178 | .{ ._, ._, .@"test", .src0b, .src0b, ._, ._ }, |
| 59179 | .{ ._, ._z, .cmov, .dst0d, .src0d, ._, ._ }, |
| 59180 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59181 | .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59182 | .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ }, |
| 59183 | .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ }, |
| 59184 | .{ ._, ._l, .sh, .tmp1b, .src1b, ._, ._ }, |
| 59185 | .{ ._, ._, .cmp, .src0b, .tmp0b, ._, ._ }, |
| 59186 | .{ ._, ._na, .cmov, .dst0d, .tmp1d, ._, ._ }, |
| 59187 | } }, |
| 59188 | }, .{ |
| 59189 | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .exact_signed_int = 32 }, .any }, |
| 59190 | .patterns = &.{ |
| 59191 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59192 | }, |
| 59193 | .extra_temps = .{ |
| 59194 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 59195 | .{ .type = .u8, .kind = .{ .rc = .general_purpose } }, |
| 59196 | .unused, |
| 59197 | .unused, |
| 59198 | .unused, |
| 59199 | .unused, |
| 59200 | .unused, |
| 59201 | .unused, |
| 59202 | .unused, |
| 59203 | .unused, |
| 59204 | .unused, |
| 59205 | }, |
| 59206 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59207 | .each = .{ .once = &.{ |
| 59208 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59209 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59210 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59211 | .{ ._, ._, .@"test", .src0b, .src0b, ._, ._ }, |
| 59212 | .{ ._, ._nz, .j, .@"0f", ._, ._, ._ }, |
| 59213 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 59214 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59215 | .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59216 | .{ ._, ._r, .sh, .tmp0b, .src1b, ._, ._ }, |
| 59217 | .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ }, |
| 59218 | .{ ._, ._l, .sh, .tmp1b, .src1b, ._, ._ }, |
| 59219 | .{ ._, ._, .cmp, .src0b, .tmp0b, ._, ._ }, |
| 59220 | .{ ._, ._a, .j, .@"0f", ._, ._, ._ }, |
| 59221 | .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, |
| 59222 | } }, |
| 59223 | }, .{ |
| 59224 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 59225 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59226 | .patterns = &.{ |
| 59227 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59228 | }, |
| 59229 | .extra_temps = .{ |
| 59230 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59231 | .unused, |
| 59232 | .unused, |
| 59233 | .unused, |
| 59234 | .unused, |
| 59235 | .unused, |
| 59236 | .unused, |
| 59237 | .unused, |
| 59238 | .unused, |
| 59239 | .unused, |
| 59240 | .unused, |
| 59241 | }, |
| 59242 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59243 | .each = .{ .once = &.{ |
| 59244 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59245 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 59246 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 59247 | .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ }, |
| 59248 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59249 | } }, |
| 59250 | }, .{ |
| 59251 | .required_features = .{ .cmov, null, null, null }, |
| 59252 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59253 | .patterns = &.{ |
| 59254 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59255 | }, |
| 59256 | .extra_temps = .{ |
| 59257 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59258 | .unused, |
| 59259 | .unused, |
| 59260 | .unused, |
| 59261 | .unused, |
| 59262 | .unused, |
| 59263 | .unused, |
| 59264 | .unused, |
| 59265 | .unused, |
| 59266 | .unused, |
| 59267 | .unused, |
| 59268 | }, |
| 59269 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59270 | .each = .{ .once = &.{ |
| 59271 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59272 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 59273 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59274 | .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ }, |
| 59275 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59276 | } }, |
| 59277 | }, .{ |
| 59278 | .required_features = .{ .fast_imm16, null, null, null }, |
| 59279 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59280 | .patterns = &.{ |
| 59281 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59282 | }, |
| 59283 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59284 | .each = .{ .once = &.{ |
| 59285 | .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ }, |
| 59286 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59287 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59288 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 59289 | } }, |
| 59290 | }, .{ |
| 59291 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59292 | .patterns = &.{ |
| 59293 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59294 | }, |
| 59295 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59296 | .each = .{ .once = &.{ |
| 59297 | .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ }, |
| 59298 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59299 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59300 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59301 | } }, |
| 59302 | }, .{ |
| 59303 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 59304 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any }, |
| 59305 | .patterns = &.{ |
| 59306 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59307 | }, |
| 59308 | .extra_temps = .{ |
| 59309 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59310 | .unused, |
| 59311 | .unused, |
| 59312 | .unused, |
| 59313 | .unused, |
| 59314 | .unused, |
| 59315 | .unused, |
| 59316 | .unused, |
| 59317 | .unused, |
| 59318 | .unused, |
| 59319 | .unused, |
| 59320 | }, |
| 59321 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59322 | .each = .{ .once = &.{ |
| 59323 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59324 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 59325 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 59326 | .{ ._, ._, .add, .dst0w, .src0w, ._, ._ }, |
| 59327 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59328 | } }, |
| 59329 | }, .{ |
| 59330 | .required_features = .{ .cmov, null, null, null }, |
| 59331 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any }, |
| 59332 | .patterns = &.{ |
| 59333 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59334 | }, |
| 59335 | .extra_temps = .{ |
| 59336 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59337 | .unused, |
| 59338 | .unused, |
| 59339 | .unused, |
| 59340 | .unused, |
| 59341 | .unused, |
| 59342 | .unused, |
| 59343 | .unused, |
| 59344 | .unused, |
| 59345 | .unused, |
| 59346 | .unused, |
| 59347 | }, |
| 59348 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59349 | .each = .{ .once = &.{ |
| 59350 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59351 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 59352 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59353 | .{ ._, ._, .add, .dst0w, .src0w, ._, ._ }, |
| 59354 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59355 | } }, |
| 59356 | }, .{ |
| 59357 | .required_features = .{ .fast_imm16, null, null, null }, |
| 59358 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any }, |
| 59359 | .patterns = &.{ |
| 59360 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59361 | }, |
| 59362 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59363 | .each = .{ .once = &.{ |
| 59364 | .{ ._, ._, .add, .dst0w, .src0w, ._, ._ }, |
| 59365 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 59366 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59367 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smin), ._, ._ }, |
| 59368 | } }, |
| 59369 | }, .{ |
| 59370 | .src_constraints = .{ .{ .exact_signed_int = 16 }, .{ .exact_signed_int = 32 }, .any }, |
| 59371 | .patterns = &.{ |
| 59372 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59373 | }, |
| 59374 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59375 | .each = .{ .once = &.{ |
| 59376 | .{ ._, ._, .add, .dst0w, .src0w, ._, ._ }, |
| 59377 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 59378 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59379 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smin), ._, ._ }, |
| 59380 | } }, |
| 59381 | }, .{ |
| 59382 | .required_features = .{ .cmov, .fast_imm16, null, null }, |
| 59383 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59384 | .patterns = &.{ |
| 59385 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59386 | }, |
| 59387 | .extra_temps = .{ |
| 59388 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59389 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59390 | .unused, |
| 59391 | .unused, |
| 59392 | .unused, |
| 59393 | .unused, |
| 59394 | .unused, |
| 59395 | .unused, |
| 59396 | .unused, |
| 59397 | .unused, |
| 59398 | .unused, |
| 59399 | }, |
| 59400 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59401 | .each = .{ .once = &.{ |
| 59402 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59403 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 59404 | .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 59405 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59406 | .{ ._, ._, .xor, .tmp0w, .sa(.src0, .add_smax), ._, ._ }, |
| 59407 | .{ ._, ._, .cmp, .tmp1w, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59408 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59409 | } }, |
| 59410 | }, .{ |
| 59411 | .required_features = .{ .cmov, null, null, null }, |
| 59412 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59413 | .patterns = &.{ |
| 59414 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59415 | }, |
| 59416 | .extra_temps = .{ |
| 59417 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59418 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59419 | .unused, |
| 59420 | .unused, |
| 59421 | .unused, |
| 59422 | .unused, |
| 59423 | .unused, |
| 59424 | .unused, |
| 59425 | .unused, |
| 59426 | .unused, |
| 59427 | .unused, |
| 59428 | }, |
| 59429 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59430 | .each = .{ .once = &.{ |
| 59431 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59432 | .{ ._, ._r, .sa, .tmp0w, .ui(15), ._, ._ }, |
| 59433 | .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 59434 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59435 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59436 | .{ ._, ._, .cmp, .tmp1w, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59437 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59438 | } }, |
| 59439 | }, .{ |
| 59440 | .required_features = .{ .fast_imm16, null, null, null }, |
| 59441 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59442 | .patterns = &.{ |
| 59443 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59444 | }, |
| 59445 | .extra_temps = .{ |
| 59446 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59447 | .unused, |
| 59448 | .unused, |
| 59449 | .unused, |
| 59450 | .unused, |
| 59451 | .unused, |
| 59452 | .unused, |
| 59453 | .unused, |
| 59454 | .unused, |
| 59455 | .unused, |
| 59456 | .unused, |
| 59457 | }, |
| 59458 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59459 | .each = .{ .once = &.{ |
| 59460 | .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 59461 | .{ ._, ._, .cmp, .tmp0w, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59462 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59463 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59464 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 59465 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59466 | .{ .@"1:", ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59467 | } }, |
| 59468 | }, .{ |
| 59469 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59470 | .patterns = &.{ |
| 59471 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59472 | }, |
| 59473 | .extra_temps = .{ |
| 59474 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59475 | .unused, |
| 59476 | .unused, |
| 59477 | .unused, |
| 59478 | .unused, |
| 59479 | .unused, |
| 59480 | .unused, |
| 59481 | .unused, |
| 59482 | .unused, |
| 59483 | .unused, |
| 59484 | .unused, |
| 59485 | }, |
| 59486 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59487 | .each = .{ .once = &.{ |
| 59488 | .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 59489 | .{ ._, ._, .cmp, .tmp0w, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59490 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59491 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59492 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59493 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59494 | .{ .@"1:", ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59495 | } }, |
| 59496 | }, .{ |
| 59497 | .required_features = .{ .fast_imm16, null, null, null }, |
| 59498 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59499 | .patterns = &.{ |
| 59500 | .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59501 | }, |
| 59502 | .extra_temps = .{ |
| 59503 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59504 | .unused, |
| 59505 | .unused, |
| 59506 | .unused, |
| 59507 | .unused, |
| 59508 | .unused, |
| 59509 | .unused, |
| 59510 | .unused, |
| 59511 | .unused, |
| 59512 | .unused, |
| 59513 | .unused, |
| 59514 | }, |
| 59515 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59516 | .each = .{ .once = &.{ |
| 59517 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59518 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59519 | .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ }, |
| 59520 | .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59521 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59522 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59523 | .{ ._, ._, .xor, .dst0w, .sa(.src0, .add_smax), ._, ._ }, |
| 59524 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59525 | .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59526 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59527 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59528 | .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 59529 | .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 59530 | .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ }, |
| 59531 | .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ }, |
| 59532 | .{ ._, ._ne, .j, .@"0b", ._, ._, ._ }, |
| 59533 | } }, |
| 59534 | }, .{ |
| 59535 | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59536 | .patterns = &.{ |
| 59537 | .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59538 | }, |
| 59539 | .extra_temps = .{ |
| 59540 | .{ .type = .i16, .kind = .{ .rc = .general_purpose } }, |
| 59541 | .unused, |
| 59542 | .unused, |
| 59543 | .unused, |
| 59544 | .unused, |
| 59545 | .unused, |
| 59546 | .unused, |
| 59547 | .unused, |
| 59548 | .unused, |
| 59549 | .unused, |
| 59550 | .unused, |
| 59551 | }, |
| 59552 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59553 | .each = .{ .once = &.{ |
| 59554 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59555 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59556 | .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ }, |
| 59557 | .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59558 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59559 | .{ ._, ._r, .sa, .dst0w, .ui(15), ._, ._ }, |
| 59560 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59561 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59562 | .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59563 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59564 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59565 | .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 59566 | .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 59567 | .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ }, |
| 59568 | .{ ._, ._, .cmp, .tmp0w, .src0w, ._, ._ }, |
| 59569 | .{ ._, ._ne, .j, .@"0b", ._, ._, ._ }, |
| 59570 | } }, |
| 59571 | }, .{ |
| 59572 | .required_features = .{ .cmov, null, null, null }, |
| 59573 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59574 | .patterns = &.{ |
| 59575 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59576 | }, |
| 59577 | .extra_temps = .{ |
| 59578 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 59579 | .unused, |
| 59580 | .unused, |
| 59581 | .unused, |
| 59582 | .unused, |
| 59583 | .unused, |
| 59584 | .unused, |
| 59585 | .unused, |
| 59586 | .unused, |
| 59587 | .unused, |
| 59588 | .unused, |
| 59589 | }, |
| 59590 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59591 | .each = .{ .once = &.{ |
| 59592 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59593 | .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ }, |
| 59594 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59595 | } }, |
| 59596 | }, .{ |
| 59597 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59598 | .patterns = &.{ |
| 59599 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59600 | }, |
| 59601 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59602 | .each = .{ .once = &.{ |
| 59603 | .{ ._, ._, .@"test", .dst0w, .src0w, ._, ._ }, |
| 59604 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59605 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59606 | } }, |
| 59607 | }, .{ |
| 59608 | .required_features = .{ .cmov, null, null, null }, |
| 59609 | .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_signed_int = 32 }, .any }, |
| 59610 | .patterns = &.{ |
| 59611 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59612 | }, |
| 59613 | .extra_temps = .{ |
| 59614 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 59615 | .unused, |
| 59616 | .unused, |
| 59617 | .unused, |
| 59618 | .unused, |
| 59619 | .unused, |
| 59620 | .unused, |
| 59621 | .unused, |
| 59622 | .unused, |
| 59623 | .unused, |
| 59624 | .unused, |
| 59625 | }, |
| 59626 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59627 | .each = .{ .once = &.{ |
| 59628 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59629 | .{ ._, ._, .add, .dst0w, .src0w, ._, ._ }, |
| 59630 | .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59631 | } }, |
| 59632 | }, .{ |
| 59633 | .src_constraints = .{ .{ .exact_unsigned_int = 16 }, .{ .exact_signed_int = 32 }, .any }, |
| 59634 | .patterns = &.{ |
| 59635 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59636 | }, |
| 59637 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59638 | .each = .{ .once = &.{ |
| 59639 | .{ ._, ._, .add, .dst0w, .src0w, ._, ._ }, |
| 59640 | .{ ._, ._nc, .j, .@"0f", ._, ._, ._ }, |
| 59641 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59642 | } }, |
| 59643 | }, .{ |
| 59644 | .required_features = .{ .cmov, null, null, null }, |
| 59645 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59646 | .patterns = &.{ |
| 59647 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59648 | }, |
| 59649 | .extra_temps = .{ |
| 59650 | .{ .type = .u16, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, |
| 59651 | .unused, |
| 59652 | .unused, |
| 59653 | .unused, |
| 59654 | .unused, |
| 59655 | .unused, |
| 59656 | .unused, |
| 59657 | .unused, |
| 59658 | .unused, |
| 59659 | .unused, |
| 59660 | .unused, |
| 59661 | }, |
| 59662 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59663 | .each = .{ .once = &.{ |
| 59664 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59665 | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 59666 | .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59667 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59668 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59669 | } }, |
| 59670 | }, .{ |
| 59671 | .required_features = .{ .cmov, null, null, null }, |
| 59672 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59673 | .patterns = &.{ |
| 59674 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59675 | }, |
| 59676 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59677 | .each = .{ .once = &.{ |
| 59678 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59679 | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 59680 | .{ ._, ._, .cmp, .src0w, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59681 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| 59682 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59683 | } }, |
| 59684 | }, .{ |
| 59685 | .required_features = .{ .cmov, null, null, null }, |
| 59686 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59687 | .patterns = &.{ |
| 59688 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59689 | }, |
| 59690 | .extra_temps = .{ |
| 59691 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 59692 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 59693 | .unused, |
| 59694 | .unused, |
| 59695 | .unused, |
| 59696 | .unused, |
| 59697 | .unused, |
| 59698 | .unused, |
| 59699 | .unused, |
| 59700 | .unused, |
| 59701 | .unused, |
| 59702 | }, |
| 59703 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59704 | .each = .{ .once = &.{ |
| 59705 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59706 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59707 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59708 | .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ }, |
| 59709 | .{ ._, ._z, .cmov, .dst0d, .src0d, ._, ._ }, |
| 59710 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59711 | .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59712 | .{ ._, ._r, .sh, .tmp0w, .src1b, ._, ._ }, |
| 59713 | .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ }, |
| 59714 | .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ }, |
| 59715 | .{ ._, ._, .cmp, .src0w, .tmp0w, ._, ._ }, |
| 59716 | .{ ._, ._na, .cmov, .dst0d, .tmp1d, ._, ._ }, |
| 59717 | } }, |
| 59718 | }, .{ |
| 59719 | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_signed_int = 32 }, .any }, |
| 59720 | .patterns = &.{ |
| 59721 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59722 | }, |
| 59723 | .extra_temps = .{ |
| 59724 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 59725 | .{ .type = .u16, .kind = .{ .rc = .general_purpose } }, |
| 59726 | .unused, |
| 59727 | .unused, |
| 59728 | .unused, |
| 59729 | .unused, |
| 59730 | .unused, |
| 59731 | .unused, |
| 59732 | .unused, |
| 59733 | .unused, |
| 59734 | .unused, |
| 59735 | }, |
| 59736 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59737 | .each = .{ .once = &.{ |
| 59738 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59739 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59740 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59741 | .{ ._, ._, .@"test", .src0w, .src0w, ._, ._ }, |
| 59742 | .{ ._, ._nz, .j, .@"0f", ._, ._, ._ }, |
| 59743 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 59744 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59745 | .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59746 | .{ ._, ._r, .sh, .tmp0w, .src1b, ._, ._ }, |
| 59747 | .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ }, |
| 59748 | .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ }, |
| 59749 | .{ ._, ._, .cmp, .src0w, .tmp0w, ._, ._ }, |
| 59750 | .{ ._, ._a, .j, .@"0f", ._, ._, ._ }, |
| 59751 | .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, |
| 59752 | } }, |
| 59753 | }, .{ |
| 59754 | .required_features = .{ .cmov, null, null, null }, |
| 59755 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59756 | .patterns = &.{ |
| 59757 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59758 | }, |
| 59759 | .extra_temps = .{ |
| 59760 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 59761 | .unused, |
| 59762 | .unused, |
| 59763 | .unused, |
| 59764 | .unused, |
| 59765 | .unused, |
| 59766 | .unused, |
| 59767 | .unused, |
| 59768 | .unused, |
| 59769 | .unused, |
| 59770 | .unused, |
| 59771 | }, |
| 59772 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59773 | .each = .{ .once = &.{ |
| 59774 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59775 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 59776 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59777 | .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ }, |
| 59778 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59779 | } }, |
| 59780 | }, .{ |
| 59781 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59782 | .patterns = &.{ |
| 59783 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59784 | }, |
| 59785 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59786 | .each = .{ .once = &.{ |
| 59787 | .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ }, |
| 59788 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59789 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 59790 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59791 | } }, |
| 59792 | }, .{ |
| 59793 | .required_features = .{ .cmov, null, null, null }, |
| 59794 | .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any }, |
| 59795 | .patterns = &.{ |
| 59796 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59797 | }, |
| 59798 | .extra_temps = .{ |
| 59799 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 59800 | .unused, |
| 59801 | .unused, |
| 59802 | .unused, |
| 59803 | .unused, |
| 59804 | .unused, |
| 59805 | .unused, |
| 59806 | .unused, |
| 59807 | .unused, |
| 59808 | .unused, |
| 59809 | .unused, |
| 59810 | }, |
| 59811 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59812 | .each = .{ .once = &.{ |
| 59813 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59814 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 59815 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59816 | .{ ._, ._, .add, .dst0d, .src0d, ._, ._ }, |
| 59817 | .{ ._, ._o, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59818 | } }, |
| 59819 | }, .{ |
| 59820 | .src_constraints = .{ .{ .exact_signed_int = 32 }, .{ .exact_signed_int = 32 }, .any }, |
| 59821 | .patterns = &.{ |
| 59822 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59823 | }, |
| 59824 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59825 | .each = .{ .once = &.{ |
| 59826 | .{ ._, ._, .add, .dst0d, .src0d, ._, ._ }, |
| 59827 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 59828 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 59829 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smin), ._, ._ }, |
| 59830 | } }, |
| 59831 | }, .{ |
| 59832 | .required_features = .{ .cmov, null, null, null }, |
| 59833 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59834 | .patterns = &.{ |
| 59835 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59836 | }, |
| 59837 | .extra_temps = .{ |
| 59838 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 59839 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 59840 | .unused, |
| 59841 | .unused, |
| 59842 | .unused, |
| 59843 | .unused, |
| 59844 | .unused, |
| 59845 | .unused, |
| 59846 | .unused, |
| 59847 | .unused, |
| 59848 | .unused, |
| 59849 | }, |
| 59850 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59851 | .each = .{ .once = &.{ |
| 59852 | .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ }, |
| 59853 | .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ }, |
| 59854 | .{ ._, ._, .lea, .tmp1d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 59855 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59856 | .{ ._, ._, .xor, .tmp0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59857 | .{ ._, ._, .cmp, .tmp1d, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59858 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59859 | } }, |
| 59860 | }, .{ |
| 59861 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59862 | .patterns = &.{ |
| 59863 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 59864 | }, |
| 59865 | .extra_temps = .{ |
| 59866 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 59867 | .unused, |
| 59868 | .unused, |
| 59869 | .unused, |
| 59870 | .unused, |
| 59871 | .unused, |
| 59872 | .unused, |
| 59873 | .unused, |
| 59874 | .unused, |
| 59875 | .unused, |
| 59876 | .unused, |
| 59877 | }, |
| 59878 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59879 | .each = .{ .once = &.{ |
| 59880 | .{ ._, ._, .lea, .tmp0d, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 59881 | .{ ._, ._, .cmp, .tmp0d, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 59882 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59883 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 59884 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59885 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59886 | .{ .@"1:", ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59887 | } }, |
| 59888 | }, .{ |
| 59889 | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59890 | .patterns = &.{ |
| 59891 | .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } }, |
| 59892 | }, |
| 59893 | .extra_temps = .{ |
| 59894 | .{ .type = .i32, .kind = .{ .rc = .general_purpose } }, |
| 59895 | .unused, |
| 59896 | .unused, |
| 59897 | .unused, |
| 59898 | .unused, |
| 59899 | .unused, |
| 59900 | .unused, |
| 59901 | .unused, |
| 59902 | .unused, |
| 59903 | .unused, |
| 59904 | .unused, |
| 59905 | }, |
| 59906 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 59907 | .each = .{ .once = &.{ |
| 59908 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 59909 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 59910 | .{ ._, ._, .@"test", .src0d, .src0d, ._, ._ }, |
| 59911 | .{ .@"0:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59912 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59913 | .{ ._, ._r, .sa, .dst0d, .ui(31), ._, ._ }, |
| 59914 | .{ ._, ._, .xor, .dst0d, .sa(.src0, .add_smax), ._, ._ }, |
| 59915 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 59916 | .{ .@"1:", ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 59917 | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 59918 | .{ ._, ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 59919 | .{ ._, ._l, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 59920 | .{ ._, ._r, .sa, .tmp0d, .uia(32, .src0, .sub_bit_size), ._, ._ }, |
| 59921 | .{ ._, ._r, .sa, .tmp0d, .src1b, ._, ._ }, |
| 59922 | .{ ._, ._, .cmp, .tmp0d, .src0d, ._, ._ }, |
| 59923 | .{ ._, ._ne, .j, .@"0b", ._, ._, ._ }, |
| 59924 | } }, |
| 59925 | }, .{ |
| 59926 | .required_features = .{ .cmov, null, null, null }, |
| 59927 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59928 | .patterns = &.{ |
| 59929 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59930 | }, |
| 59931 | .extra_temps = .{ |
| 59932 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 59933 | .unused, |
| 59934 | .unused, |
| 59935 | .unused, |
| 59936 | .unused, |
| 59937 | .unused, |
| 59938 | .unused, |
| 59939 | .unused, |
| 59940 | .unused, |
| 59941 | .unused, |
| 59942 | .unused, |
| 59943 | }, |
| 59944 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59945 | .each = .{ .once = &.{ |
| 59946 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59947 | .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ }, |
| 59948 | .{ ._, ._nz, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59949 | } }, |
| 59950 | }, .{ |
| 59951 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 59952 | .patterns = &.{ |
| 59953 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 59954 | }, |
| 59955 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59956 | .each = .{ .once = &.{ |
| 59957 | .{ ._, ._, .@"test", .dst0d, .src0d, ._, ._ }, |
| 59958 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 59959 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59960 | } }, |
| 59961 | }, .{ |
| 59962 | .required_features = .{ .cmov, null, null, null }, |
| 59963 | .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_signed_int = 32 }, .any }, |
| 59964 | .patterns = &.{ |
| 59965 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59966 | }, |
| 59967 | .extra_temps = .{ |
| 59968 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 59969 | .unused, |
| 59970 | .unused, |
| 59971 | .unused, |
| 59972 | .unused, |
| 59973 | .unused, |
| 59974 | .unused, |
| 59975 | .unused, |
| 59976 | .unused, |
| 59977 | .unused, |
| 59978 | .unused, |
| 59979 | }, |
| 59980 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59981 | .each = .{ .once = &.{ |
| 59982 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59983 | .{ ._, ._, .add, .dst0d, .src0d, ._, ._ }, |
| 59984 | .{ ._, ._c, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 59985 | } }, |
| 59986 | }, .{ |
| 59987 | .src_constraints = .{ .{ .exact_unsigned_int = 32 }, .{ .exact_signed_int = 32 }, .any }, |
| 59988 | .patterns = &.{ |
| 59989 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 59990 | }, |
| 59991 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 59992 | .each = .{ .once = &.{ |
| 59993 | .{ ._, ._, .add, .dst0d, .src0d, ._, ._ }, |
| 59994 | .{ ._, ._nc, .j, .@"0f", ._, ._, ._ }, |
| 59995 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 59996 | } }, |
| 59997 | }, .{ |
| 59998 | .required_features = .{ .cmov, null, null, null }, |
| 59999 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 60000 | .patterns = &.{ |
| 60001 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 60002 | }, |
| 60003 | .extra_temps = .{ |
| 60004 | .{ .type = .u32, .kind = .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } } }, |
| 60005 | .unused, |
| 60006 | .unused, |
| 60007 | .unused, |
| 60008 | .unused, |
| 60009 | .unused, |
| 60010 | .unused, |
| 60011 | .unused, |
| 60012 | .unused, |
| 60013 | .unused, |
| 60014 | .unused, |
| 60015 | }, |
| 60016 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60017 | .each = .{ .once = &.{ |
| 60018 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 60019 | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 60020 | .{ ._, ._, .cmp, .src0d, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 60021 | .{ ._, ._, .mov, .tmp0d, .ua(.src0, .add_umax), ._, ._ }, |
| 60022 | .{ ._, ._a, .cmov, .dst0d, .tmp0d, ._, ._ }, |
| 60023 | } }, |
| 60024 | }, .{ |
| 60025 | .required_features = .{ .cmov, null, null, null }, |
| 60026 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 60027 | .patterns = &.{ |
| 60028 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 60029 | }, |
| 60030 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60031 | .each = .{ .once = &.{ |
| 60032 | .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ }, |
| 60033 | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 60034 | .{ ._, ._, .cmp, .src0d, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 60035 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| 60036 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 60037 | } }, |
| 60038 | }, .{ |
| 60039 | .required_features = .{ .cmov, null, null, null }, |
| 60040 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 60041 | .patterns = &.{ |
| 60042 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 60043 | }, |
| 60044 | .extra_temps = .{ |
| 60045 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60046 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60047 | .unused, |
| 60048 | .unused, |
| 60049 | .unused, |
| 60050 | .unused, |
| 60051 | .unused, |
| 60052 | .unused, |
| 60053 | .unused, |
| 60054 | .unused, |
| 60055 | .unused, |
| 60056 | }, |
| 60057 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60058 | .each = .{ .once = &.{ |
| 60059 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 60060 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60061 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60062 | .{ ._, ._, .@"test", .src0d, .src0d, ._, ._ }, |
| 60063 | .{ ._, ._z, .cmov, .dst0d, .src0d, ._, ._ }, |
| 60064 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 60065 | .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 60066 | .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ }, |
| 60067 | .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ }, |
| 60068 | .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ }, |
| 60069 | .{ ._, ._, .cmp, .src0d, .tmp0d, ._, ._ }, |
| 60070 | .{ ._, ._na, .cmov, .dst0d, .tmp1d, ._, ._ }, |
| 60071 | } }, |
| 60072 | }, .{ |
| 60073 | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_signed_int = 32 }, .any }, |
| 60074 | .patterns = &.{ |
| 60075 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 60076 | }, |
| 60077 | .extra_temps = .{ |
| 60078 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60079 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60080 | .unused, |
| 60081 | .unused, |
| 60082 | .unused, |
| 60083 | .unused, |
| 60084 | .unused, |
| 60085 | .unused, |
| 60086 | .unused, |
| 60087 | .unused, |
| 60088 | .unused, |
| 60089 | }, |
| 60090 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60091 | .each = .{ .once = &.{ |
| 60092 | .{ ._, ._, .mov, .dst0d, .ua(.src0, .add_umax), ._, ._ }, |
| 60093 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60094 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60095 | .{ ._, ._, .@"test", .src0d, .src0d, ._, ._ }, |
| 60096 | .{ ._, ._nz, .j, .@"0f", ._, ._, ._ }, |
| 60097 | .{ ._, ._, .xor, .dst0d, .dst0d, ._, ._ }, |
| 60098 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 60099 | .{ .@"1:", ._, .mov, .tmp0d, .dst0d, ._, ._ }, |
| 60100 | .{ ._, ._r, .sh, .tmp0d, .src1b, ._, ._ }, |
| 60101 | .{ ._, ._, .mov, .tmp1d, .src0d, ._, ._ }, |
| 60102 | .{ ._, ._l, .sh, .tmp1d, .src1b, ._, ._ }, |
| 60103 | .{ ._, ._, .cmp, .src0d, .tmp0d, ._, ._ }, |
| 60104 | .{ ._, ._a, .j, .@"0f", ._, ._, ._ }, |
| 60105 | .{ ._, ._, .mov, .dst0d, .tmp1d, ._, ._ }, |
| 60106 | } }, |
| 60107 | }, .{ |
| 60108 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 60109 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60110 | .patterns = &.{ |
| 60111 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 60112 | }, |
| 60113 | .extra_temps = .{ |
| 60114 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60115 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60116 | .unused, |
| 60117 | .unused, |
| 60118 | .unused, |
| 60119 | .unused, |
| 60120 | .unused, |
| 60121 | .unused, |
| 60122 | .unused, |
| 60123 | .unused, |
| 60124 | .unused, |
| 60125 | }, |
| 60126 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60127 | .each = .{ .once = &.{ |
| 60128 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 60129 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60130 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60131 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| 60132 | .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ }, |
| 60133 | .{ ._, ._nz, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 60134 | } }, |
| 60135 | }, .{ |
| 60136 | .required_features = .{ .@"64bit", null, null, null }, |
| 60137 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60138 | .patterns = &.{ |
| 60139 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 60140 | }, |
| 60141 | .extra_temps = .{ |
| 60142 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60143 | .unused, |
| 60144 | .unused, |
| 60145 | .unused, |
| 60146 | .unused, |
| 60147 | .unused, |
| 60148 | .unused, |
| 60149 | .unused, |
| 60150 | .unused, |
| 60151 | .unused, |
| 60152 | .unused, |
| 60153 | }, |
| 60154 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60155 | .each = .{ .once = &.{ |
| 60156 | .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ }, |
| 60157 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60158 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 60159 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smax), ._, ._ }, |
| 60160 | .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ }, |
| 60161 | } }, |
| 60162 | }, .{ |
| 60163 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 60164 | .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 32 }, .any }, |
| 60165 | .patterns = &.{ |
| 60166 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 60167 | }, |
| 60168 | .extra_temps = .{ |
| 60169 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60170 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60171 | .unused, |
| 60172 | .unused, |
| 60173 | .unused, |
| 60174 | .unused, |
| 60175 | .unused, |
| 60176 | .unused, |
| 60177 | .unused, |
| 60178 | .unused, |
| 60179 | .unused, |
| 60180 | }, |
| 60181 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60182 | .each = .{ .once = &.{ |
| 60183 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 60184 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60185 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60186 | .{ ._, ._, .xor, .tmp0q, .tmp1q, ._, ._ }, |
| 60187 | .{ ._, ._, .add, .dst0q, .src0q, ._, ._ }, |
| 60188 | .{ ._, ._o, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 60189 | } }, |
| 60190 | }, .{ |
| 60191 | .required_features = .{ .@"64bit", null, null, null }, |
| 60192 | .src_constraints = .{ .{ .exact_signed_int = 64 }, .{ .exact_signed_int = 32 }, .any }, |
| 60193 | .patterns = &.{ |
| 60194 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 60195 | }, |
| 60196 | .extra_temps = .{ |
| 60197 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60198 | .unused, |
| 60199 | .unused, |
| 60200 | .unused, |
| 60201 | .unused, |
| 60202 | .unused, |
| 60203 | .unused, |
| 60204 | .unused, |
| 60205 | .unused, |
| 60206 | .unused, |
| 60207 | .unused, |
| 60208 | }, |
| 60209 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60210 | .each = .{ .once = &.{ |
| 60211 | .{ ._, ._, .add, .dst0q, .src0q, ._, ._ }, |
| 60212 | .{ ._, ._no, .j, .@"0f", ._, ._, ._ }, |
| 60213 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 60214 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smin), ._, ._ }, |
| 60215 | .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ }, |
| 60216 | } }, |
| 60217 | }, .{ |
| 60218 | .required_features = .{ .@"64bit", .cmov, null, null }, |
| 60219 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60220 | .patterns = &.{ |
| 60221 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 60222 | }, |
| 60223 | .extra_temps = .{ |
| 60224 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60225 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60226 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60227 | .unused, |
| 60228 | .unused, |
| 60229 | .unused, |
| 60230 | .unused, |
| 60231 | .unused, |
| 60232 | .unused, |
| 60233 | .unused, |
| 60234 | .unused, |
| 60235 | }, |
| 60236 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60237 | .each = .{ .once = &.{ |
| 60238 | .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ }, |
| 60239 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60240 | .{ ._, ._, .lea, .tmp1q, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 60241 | .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 60242 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_smax), ._, ._ }, |
| 60243 | .{ ._, ._, .xor, .tmp0q, .tmp2q, ._, ._ }, |
| 60244 | .{ ._, ._, .mov, .tmp2q, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 60245 | .{ ._, ._, .cmp, .tmp1q, .tmp2q, ._, ._ }, |
| 60246 | .{ ._, ._a, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 60247 | } }, |
| 60248 | }, .{ |
| 60249 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60250 | .patterns = &.{ |
| 60251 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 60252 | }, |
| 60253 | .extra_temps = .{ |
| 60254 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60255 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60256 | .unused, |
| 60257 | .unused, |
| 60258 | .unused, |
| 60259 | .unused, |
| 60260 | .unused, |
| 60261 | .unused, |
| 60262 | .unused, |
| 60263 | .unused, |
| 60264 | .unused, |
| 60265 | }, |
| 60266 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60267 | .each = .{ .once = &.{ |
| 60268 | .{ ._, ._, .lea, .tmp0q, .leaad(.src0, .add_smax_shr_src1, 1), ._, ._ }, |
| 60269 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 60270 | .{ ._, ._, .cmp, .tmp0q, .tmp1q, ._, ._ }, |
| 60271 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60272 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 60273 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60274 | .{ ._, ._, .xor, .dst0q, .tmp1q, ._, ._ }, |
| 60275 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 60276 | .{ .@"1:", ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 60277 | } }, |
| 60278 | }, .{ |
| 60279 | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60280 | .patterns = &.{ |
| 60281 | .{ .src = .{ .to_gpr, .{ .to_reg = .ecx }, .none } }, |
| 60282 | }, |
| 60283 | .extra_temps = .{ |
| 60284 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60285 | .unused, |
| 60286 | .unused, |
| 60287 | .unused, |
| 60288 | .unused, |
| 60289 | .unused, |
| 60290 | .unused, |
| 60291 | .unused, |
| 60292 | .unused, |
| 60293 | .unused, |
| 60294 | .unused, |
| 60295 | }, |
| 60296 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60297 | .each = .{ .once = &.{ |
| 60298 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60299 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60300 | .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, |
| 60301 | .{ .@"0:", ._, .mov, .dst0q, .src0q, ._, ._ }, |
| 60302 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60303 | .{ ._, ._r, .sa, .dst0q, .ui(63), ._, ._ }, |
| 60304 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_smax), ._, ._ }, |
| 60305 | .{ ._, ._, .xor, .dst0q, .tmp0q, ._, ._ }, |
| 60306 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 60307 | .{ .@"1:", ._, .mov, .dst0q, .src0q, ._, ._ }, |
| 60308 | .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 60309 | .{ ._, ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 60310 | .{ ._, ._l, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ }, |
| 60311 | .{ ._, ._r, .sa, .tmp0q, .uia(64, .src0, .sub_bit_size), ._, ._ }, |
| 60312 | .{ ._, ._r, .sa, .tmp0q, .src1b, ._, ._ }, |
| 60313 | .{ ._, ._, .cmp, .tmp0q, .src0q, ._, ._ }, |
| 60314 | .{ ._, ._ne, .j, .@"0b", ._, ._, ._ }, |
| 60315 | } }, |
| 60316 | }, .{ |
| 60317 | .required_features = .{ .cmov, null, null, null }, |
| 60318 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60319 | .patterns = &.{ |
| 60320 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 60321 | }, |
| 60322 | .extra_temps = .{ |
| 60323 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60324 | .unused, |
| 60325 | .unused, |
| 60326 | .unused, |
| 60327 | .unused, |
| 60328 | .unused, |
| 60329 | .unused, |
| 60330 | .unused, |
| 60331 | .unused, |
| 60332 | .unused, |
| 60333 | .unused, |
| 60334 | }, |
| 60335 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60336 | .each = .{ .once = &.{ |
| 60337 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60338 | .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ }, |
| 60339 | .{ ._, ._nz, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 60340 | } }, |
| 60341 | }, .{ |
| 60342 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60343 | .patterns = &.{ |
| 60344 | .{ .src = .{ .to_mut_gpr, .{ .imm = -1 }, .none } }, |
| 60345 | }, |
| 60346 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60347 | .each = .{ .once = &.{ |
| 60348 | .{ ._, ._, .@"test", .dst0q, .src0q, ._, ._ }, |
| 60349 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60350 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60351 | } }, |
| 60352 | }, .{ |
| 60353 | .required_features = .{ .cmov, null, null, null }, |
| 60354 | .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_signed_int = 32 }, .any }, |
| 60355 | .patterns = &.{ |
| 60356 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 60357 | }, |
| 60358 | .extra_temps = .{ |
| 60359 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60360 | .unused, |
| 60361 | .unused, |
| 60362 | .unused, |
| 60363 | .unused, |
| 60364 | .unused, |
| 60365 | .unused, |
| 60366 | .unused, |
| 60367 | .unused, |
| 60368 | .unused, |
| 60369 | .unused, |
| 60370 | }, |
| 60371 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60372 | .each = .{ .once = &.{ |
| 60373 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60374 | .{ ._, ._, .add, .dst0q, .src0q, ._, ._ }, |
| 60375 | .{ ._, ._c, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 60376 | } }, |
| 60377 | }, .{ |
| 60378 | .src_constraints = .{ .{ .exact_unsigned_int = 64 }, .{ .exact_signed_int = 32 }, .any }, |
| 60379 | .patterns = &.{ |
| 60380 | .{ .src = .{ .to_mut_gpr, .{ .imm = 1 }, .none } }, |
| 60381 | }, |
| 60382 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60383 | .each = .{ .once = &.{ |
| 60384 | .{ ._, ._, .add, .dst0q, .src0q, ._, ._ }, |
| 60385 | .{ ._, ._nc, .j, .@"0f", ._, ._, ._ }, |
| 60386 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60387 | } }, |
| 60388 | }, .{ |
| 60389 | .required_features = .{ .cmov, null, null, null }, |
| 60390 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60391 | .patterns = &.{ |
| 60392 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 60393 | }, |
| 60394 | .extra_temps = .{ |
| 60395 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60396 | .unused, |
| 60397 | .unused, |
| 60398 | .unused, |
| 60399 | .unused, |
| 60400 | .unused, |
| 60401 | .unused, |
| 60402 | .unused, |
| 60403 | .unused, |
| 60404 | .unused, |
| 60405 | .unused, |
| 60406 | }, |
| 60407 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60408 | .each = .{ .once = &.{ |
| 60409 | .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ }, |
| 60410 | .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ }, |
| 60411 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 60412 | .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ }, |
| 60413 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60414 | .{ ._, ._a, .cmov, .dst0q, .tmp0q, ._, ._ }, |
| 60415 | } }, |
| 60416 | }, .{ |
| 60417 | .required_features = .{ .cmov, null, null, null }, |
| 60418 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60419 | .patterns = &.{ |
| 60420 | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 60421 | }, |
| 60422 | .extra_temps = .{ |
| 60423 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60424 | .unused, |
| 60425 | .unused, |
| 60426 | .unused, |
| 60427 | .unused, |
| 60428 | .unused, |
| 60429 | .unused, |
| 60430 | .unused, |
| 60431 | .unused, |
| 60432 | .unused, |
| 60433 | .unused, |
| 60434 | }, |
| 60435 | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 60436 | .each = .{ .once = &.{ |
| 60437 | .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ }, |
| 60438 | .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ }, |
| 60439 | .{ ._, ._, .mov, .tmp0q, .ua(.src0, .add_umax_shr_src1), ._, ._ }, |
| 60440 | .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ }, |
| 60441 | .{ ._, ._na, .j, .@"0f", ._, ._, ._ }, |
| 60442 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60443 | } }, |
| 60444 | }, .{ |
| 60445 | .required_features = .{ .cmov, null, null, null }, |
| 60446 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60447 | .patterns = &.{ |
| 60448 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 60449 | }, |
| 60450 | .extra_temps = .{ |
| 60451 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60452 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60453 | .unused, |
| 60454 | .unused, |
| 60455 | .unused, |
| 60456 | .unused, |
| 60457 | .unused, |
| 60458 | .unused, |
| 60459 | .unused, |
| 60460 | .unused, |
| 60461 | .unused, |
| 60462 | }, |
| 60463 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60464 | .each = .{ .once = &.{ |
| 60465 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60466 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60467 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60468 | .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, |
| 60469 | .{ ._, ._z, .cmov, .dst0q, .src0q, ._, ._ }, |
| 60470 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 60471 | .{ .@"1:", ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 60472 | .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ }, |
| 60473 | .{ ._, ._, .mov, .tmp1q, .src0q, ._, ._ }, |
| 60474 | .{ ._, ._l, .sh, .tmp1q, .src1b, ._, ._ }, |
| 60475 | .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ }, |
| 60476 | .{ ._, ._na, .cmov, .dst0q, .tmp1q, ._, ._ }, |
| 60477 | } }, |
| 60478 | }, .{ |
| 60479 | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_signed_int = 32 }, .any }, |
| 60480 | .patterns = &.{ |
| 60481 | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .ecx }, .none } }, |
| 60482 | }, |
| 60483 | .extra_temps = .{ |
| 60484 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60485 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60486 | .unused, |
| 60487 | .unused, |
| 60488 | .unused, |
| 60489 | .unused, |
| 60490 | .unused, |
| 60491 | .unused, |
| 60492 | .unused, |
| 60493 | .unused, |
| 60494 | .unused, |
| 60495 | }, |
| 60496 | .dst_temps = .{ .{ .rc = .general_purpose }, .unused }, |
| 60497 | .each = .{ .once = &.{ |
| 60498 | .{ ._, ._, .mov, .dst0q, .ua(.src0, .add_umax), ._, ._ }, |
| 60499 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60500 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60501 | .{ ._, ._, .@"test", .src0q, .src0q, ._, ._ }, |
| 60502 | .{ ._, ._nz, .j, .@"0f", ._, ._, ._ }, |
| 60503 | .{ ._, ._, .xor, .dst0q, .dst0q, ._, ._ }, |
| 60504 | .{ ._, ._mp, .j, .@"0f", ._, ._, ._ }, |
| 60505 | .{ .@"1:", ._, .mov, .tmp0q, .dst0q, ._, ._ }, |
| 60506 | .{ ._, ._r, .sh, .tmp0q, .src1b, ._, ._ }, |
| 60507 | .{ ._, ._, .mov, .tmp1q, .src0q, ._, ._ }, |
| 60508 | .{ ._, ._l, .sh, .tmp1q, .src1b, ._, ._ }, |
| 60509 | .{ ._, ._, .cmp, .src0q, .tmp0q, ._, ._ }, |
| 60510 | .{ ._, ._a, .j, .@"0f", ._, ._, ._ }, |
| 60511 | .{ ._, ._, .mov, .dst0q, .tmp1q, ._, ._ }, |
| 60512 | } }, |
| 60513 | }, .{ |
| 60514 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 60515 | .src_constraints = .{ |
| 60516 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } }, |
| 60517 | .{ .exact_signed_int = 32 }, |
| 60518 | .any, |
| 60519 | }, |
| 60520 | .patterns = &.{ |
| 60521 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 60522 | }, |
| 60523 | .extra_temps = .{ |
| 60524 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 60525 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60526 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 60527 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60528 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60529 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60530 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60531 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60532 | .unused, |
| 60533 | .unused, |
| 60534 | .unused, |
| 60535 | }, |
| 60536 | .dst_temps = .{ .mem, .unused }, |
| 60537 | .clobbers = .{ .eflags = true }, |
| 60538 | .each = .{ .once = &.{ |
| 60539 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60540 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60541 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 60542 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 60543 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 60544 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 60545 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 60546 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 60547 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 60548 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 60549 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 60550 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 60551 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 60552 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 60553 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60554 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 60555 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 60556 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60557 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 60558 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 60559 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 60560 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 60561 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 60562 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 60563 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 60564 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 60565 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 60566 | .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ }, |
| 60567 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 60568 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 60569 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 60570 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 60571 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60572 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 60573 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 60574 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 60575 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 60576 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 60577 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 60578 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 60579 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 60580 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60581 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 60582 | .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 60583 | .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ }, |
| 60584 | .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ }, |
| 60585 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 60586 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60587 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 60588 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60589 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60590 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 60591 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 60592 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 60593 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 60594 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 60595 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 60596 | } }, |
| 60597 | }, .{ |
| 60598 | .required_features = .{ .@"64bit", null, null, null }, |
| 60599 | .src_constraints = .{ |
| 60600 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 128 } }, |
| 60601 | .{ .exact_signed_int = 32 }, |
| 60602 | .any, |
| 60603 | }, |
| 60604 | .patterns = &.{ |
| 60605 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 60606 | }, |
| 60607 | .extra_temps = .{ |
| 60608 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 60609 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60610 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 60611 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60612 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60613 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60614 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60615 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60616 | .unused, |
| 60617 | .unused, |
| 60618 | .unused, |
| 60619 | }, |
| 60620 | .dst_temps = .{ .mem, .unused }, |
| 60621 | .clobbers = .{ .eflags = true }, |
| 60622 | .each = .{ .once = &.{ |
| 60623 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60624 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60625 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 60626 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 60627 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 60628 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 60629 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 60630 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 60631 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 60632 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 60633 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 60634 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 60635 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 60636 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 60637 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60638 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 60639 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 60640 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 60641 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 60642 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 60643 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 60644 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 60645 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 60646 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 60647 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 60648 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 60649 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 60650 | .{ ._, ._c, .de, .tmp6d, ._, ._, ._ }, |
| 60651 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 60652 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 60653 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 60654 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 60655 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60656 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 60657 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 60658 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 60659 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 60660 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 60661 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 60662 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 60663 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 60664 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60665 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 60666 | .{ ._, ._, .mov, .tmp7q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 60667 | .{ ._, ._r, .sa, .tmp7q, .ui(63), ._, ._ }, |
| 60668 | .{ ._, ._, .xor, .tmp7q, .tmp3q, ._, ._ }, |
| 60669 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 60670 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60671 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 60672 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60673 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60674 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 60675 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 60676 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 60677 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 60678 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 60679 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 60680 | } }, |
| 60681 | }, .{ |
| 60682 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 60683 | .src_constraints = .{ |
| 60684 | .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } }, |
| 60685 | .{ .exact_signed_int = 32 }, |
| 60686 | .any, |
| 60687 | }, |
| 60688 | .patterns = &.{ |
| 60689 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 60690 | }, |
| 60691 | .extra_temps = .{ |
| 60692 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 60693 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60694 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 60695 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60696 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60697 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60698 | .unused, |
| 60699 | .unused, |
| 60700 | .unused, |
| 60701 | .unused, |
| 60702 | .unused, |
| 60703 | }, |
| 60704 | .dst_temps = .{ .mem, .unused }, |
| 60705 | .clobbers = .{ .eflags = true }, |
| 60706 | .each = .{ .once = &.{ |
| 60707 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60708 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60709 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 60710 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 60711 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 60712 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 60713 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 60714 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 60715 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 60716 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 60717 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 60718 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 60719 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 60720 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60721 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 60722 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 60723 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 60724 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 60725 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 60726 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 60727 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 60728 | .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ }, |
| 60729 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 60730 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 60731 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 60732 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 60733 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60734 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 60735 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 60736 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 60737 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 60738 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 60739 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 60740 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 60741 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 60742 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60743 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 60744 | .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ }, |
| 60745 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60746 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 60747 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 60748 | .{ ._, ._, .mov, .src1d, .sa(.dst0, .add_size_div_8), ._, ._ }, |
| 60749 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 60750 | } }, |
| 60751 | }, .{ |
| 60752 | .required_features = .{ .@"64bit", null, null, null }, |
| 60753 | .src_constraints = .{ |
| 60754 | .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 128 } }, |
| 60755 | .{ .exact_signed_int = 32 }, |
| 60756 | .any, |
| 60757 | }, |
| 60758 | .patterns = &.{ |
| 60759 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 60760 | }, |
| 60761 | .extra_temps = .{ |
| 60762 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 60763 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60764 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 60765 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60766 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60767 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 60768 | .unused, |
| 60769 | .unused, |
| 60770 | .unused, |
| 60771 | .unused, |
| 60772 | .unused, |
| 60773 | }, |
| 60774 | .dst_temps = .{ .mem, .unused }, |
| 60775 | .clobbers = .{ .eflags = true }, |
| 60776 | .each = .{ .once = &.{ |
| 60777 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60778 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60779 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 60780 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 60781 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 60782 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 60783 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 60784 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 60785 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 60786 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 60787 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 60788 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 60789 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 60790 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60791 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 60792 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 60793 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 60794 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 60795 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 60796 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 60797 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 60798 | .{ ._, ._c, .de, .tmp5d, ._, ._, ._ }, |
| 60799 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 60800 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 60801 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 60802 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 60803 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60804 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 60805 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 60806 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 60807 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 60808 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 60809 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 60810 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 60811 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 60812 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60813 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 60814 | .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ }, |
| 60815 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60816 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 60817 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 60818 | .{ ._, ._, .mov, .src1d, .sa(.dst0, .add_size_div_8), ._, ._ }, |
| 60819 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 60820 | } }, |
| 60821 | }, .{ |
| 60822 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 60823 | .src_constraints = .{ |
| 60824 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, |
| 60825 | .{ .exact_signed_int = 32 }, |
| 60826 | .any, |
| 60827 | }, |
| 60828 | .patterns = &.{ |
| 60829 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 60830 | }, |
| 60831 | .extra_temps = .{ |
| 60832 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 60833 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60834 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 60835 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60836 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60837 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60838 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60839 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60840 | .unused, |
| 60841 | .unused, |
| 60842 | .unused, |
| 60843 | }, |
| 60844 | .dst_temps = .{ .mem, .unused }, |
| 60845 | .clobbers = .{ .eflags = true }, |
| 60846 | .each = .{ .once = &.{ |
| 60847 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60848 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60849 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 60850 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 60851 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 60852 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 60853 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 60854 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 60855 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 60856 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 60857 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 60858 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 60859 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 60860 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 60861 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60862 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 60863 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 60864 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 60865 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 60866 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 60867 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 60868 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 60869 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 60870 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 60871 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 60872 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 60873 | .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ }, |
| 60874 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 60875 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 60876 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 60877 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 60878 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60879 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 60880 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 60881 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 60882 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 60883 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 60884 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 60885 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 60886 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 60887 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 60888 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 60889 | .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 60890 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 60891 | .{ ._, ._, .xor, .tmp3q, .tmp1q, ._, ._ }, |
| 60892 | .{ ._, ._, .@"or", .tmp5q, .tmp3q, ._, ._ }, |
| 60893 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60894 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 60895 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60896 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60897 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 60898 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 60899 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 60900 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 60901 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 60902 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 60903 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 60904 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 60905 | } }, |
| 60906 | }, .{ |
| 60907 | .required_features = .{ .@"64bit", null, null, null }, |
| 60908 | .src_constraints = .{ |
| 60909 | .{ .exact_remainder_signed_int = .{ .of = .xword, .is = 64 } }, |
| 60910 | .{ .exact_signed_int = 32 }, |
| 60911 | .any, |
| 60912 | }, |
| 60913 | .patterns = &.{ |
| 60914 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 60915 | }, |
| 60916 | .extra_temps = .{ |
| 60917 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 60918 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 60919 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 60920 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60921 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60922 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60923 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60924 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 60925 | .unused, |
| 60926 | .unused, |
| 60927 | .unused, |
| 60928 | }, |
| 60929 | .dst_temps = .{ .mem, .unused }, |
| 60930 | .clobbers = .{ .eflags = true }, |
| 60931 | .each = .{ .once = &.{ |
| 60932 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 60933 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 60934 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 60935 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 60936 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 60937 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 60938 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 60939 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 60940 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 60941 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 60942 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 60943 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 60944 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 60945 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 60946 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60947 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 60948 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 60949 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 60950 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 60951 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 60952 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 60953 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 60954 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 60955 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 60956 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 60957 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 60958 | .{ ._, ._c, .de, .tmp6d, ._, ._, ._ }, |
| 60959 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 60960 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 60961 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 60962 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 60963 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 60964 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 60965 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 60966 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 60967 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 60968 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 60969 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 60970 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 60971 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 60972 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 60973 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 60974 | .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 60975 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 60976 | .{ ._, ._, .xor, .tmp3q, .tmp1q, ._, ._ }, |
| 60977 | .{ ._, ._, .@"or", .tmp5q, .tmp3q, ._, ._ }, |
| 60978 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 60979 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 60980 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 60981 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 60982 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 60983 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 60984 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 60985 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 60986 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 60987 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 60988 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 60989 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 60990 | } }, |
| 60991 | }, .{ |
| 60992 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 60993 | .src_constraints = .{ |
| 60994 | .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 60995 | .{ .exact_signed_int = 32 }, |
| 60996 | .any, |
| 60997 | }, |
| 60998 | .patterns = &.{ |
| 60999 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 61000 | }, |
| 61001 | .extra_temps = .{ |
| 61002 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 61003 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 61004 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61005 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 61006 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 61007 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 61008 | .unused, |
| 61009 | .unused, |
| 61010 | .unused, |
| 61011 | .unused, |
| 61012 | .unused, |
| 61013 | }, |
| 61014 | .dst_temps = .{ .mem, .unused }, |
| 61015 | .clobbers = .{ .eflags = true }, |
| 61016 | .each = .{ .once = &.{ |
| 61017 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61018 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61019 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61020 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61021 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61022 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 61023 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61024 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61025 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61026 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61027 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61028 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61029 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61030 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61031 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61032 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61033 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61034 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61035 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61036 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61037 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61038 | .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ }, |
| 61039 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 61040 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61041 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 61042 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61043 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61044 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 61045 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 61046 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61047 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61048 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61049 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61050 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 61051 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 61052 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61053 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61054 | .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ }, |
| 61055 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61056 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61057 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61058 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 61059 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61060 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 61061 | } }, |
| 61062 | }, .{ |
| 61063 | .required_features = .{ .@"64bit", null, null, null }, |
| 61064 | .src_constraints = .{ |
| 61065 | .{ .exact_remainder_unsigned_int = .{ .of = .xword, .is = 64 } }, |
| 61066 | .{ .exact_signed_int = 32 }, |
| 58005 | 61067 | .any, |
| 58006 | 61068 | }, |
| 58007 | 61069 | .patterns = &.{ |
| 58008 | 61070 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58009 | 61071 | }, |
| 58010 | 61072 | .extra_temps = .{ |
| 61073 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58011 | 61074 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58012 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58013 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61075 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61076 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58014 | 61077 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58015 | 61078 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58016 | | .unused, |
| 58017 | 61079 | .unused, |
| 58018 | 61080 | .unused, |
| 58019 | 61081 | .unused, |
| ... | ... | @@ -58023,44 +61085,70 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58023 | 61085 | .dst_temps = .{ .mem, .unused }, |
| 58024 | 61086 | .clobbers = .{ .eflags = true }, |
| 58025 | 61087 | .each = .{ .once = &.{ |
| 58026 | | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58027 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58028 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58029 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58030 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58031 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58032 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58033 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58034 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58035 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58036 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58037 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 61088 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61089 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61090 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61091 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61092 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61093 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58038 | 61094 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58039 | | .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ }, |
| 58040 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58041 | | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 58042 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 61095 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61096 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61097 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61098 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61099 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61100 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61101 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61102 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61103 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61104 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61105 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61106 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61107 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61108 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61109 | .{ ._, ._c, .de, .tmp5d, ._, ._, ._ }, |
| 58043 | 61110 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 61111 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61112 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 61113 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61114 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61115 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 61116 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 61117 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61118 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61119 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61120 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61121 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 61122 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 61123 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61124 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61125 | .{ ._, ._, .@"test", .tmp4q, .tmp4q, ._, ._ }, |
| 61126 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61127 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61128 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61129 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 61130 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61131 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 58044 | 61132 | } }, |
| 58045 | 61133 | }, .{ |
| 58046 | 61134 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58047 | 61135 | .src_constraints = .{ |
| 58048 | | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58049 | | .{ .unsigned_int = .byte }, |
| 61136 | .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, |
| 61137 | .{ .exact_signed_int = 32 }, |
| 58050 | 61138 | .any, |
| 58051 | 61139 | }, |
| 58052 | 61140 | .patterns = &.{ |
| 58053 | 61141 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58054 | 61142 | }, |
| 58055 | 61143 | .extra_temps = .{ |
| 61144 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58056 | 61145 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58057 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58058 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58059 | | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58060 | | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58061 | | .unused, |
| 58062 | | .unused, |
| 58063 | | .unused, |
| 61146 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61147 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61148 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61149 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61150 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61151 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 58064 | 61152 | .unused, |
| 58065 | 61153 | .unused, |
| 58066 | 61154 | .unused, |
| ... | ... | @@ -58068,44 +61156,90 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58068 | 61156 | .dst_temps = .{ .mem, .unused }, |
| 58069 | 61157 | .clobbers = .{ .eflags = true }, |
| 58070 | 61158 | .each = .{ .once = &.{ |
| 58071 | | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58072 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58073 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58074 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58075 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58076 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58077 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58078 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58079 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58080 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58081 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58082 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58083 | | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58084 | | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58085 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58086 | | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58087 | | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 61159 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61160 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61161 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61162 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61163 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61164 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58088 | 61165 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61166 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61167 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61168 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61169 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61170 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61171 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61172 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61173 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61174 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 61175 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 61176 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 61177 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 61178 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 61179 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61180 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61181 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 61182 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 61183 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 61184 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61185 | .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ }, |
| 61186 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 61187 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61188 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 61189 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61190 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61191 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 61192 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 61193 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 61194 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61195 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61196 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 61197 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 61198 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61199 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61200 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61201 | .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 61202 | .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ }, |
| 61203 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61204 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61205 | .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ }, |
| 61206 | .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, |
| 61207 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61208 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61209 | .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ }, |
| 61210 | .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ }, |
| 61211 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61212 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 61213 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61214 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 61215 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 61216 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 61217 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61218 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 61219 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61220 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 61221 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 61222 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58089 | 61223 | } }, |
| 58090 | 61224 | }, .{ |
| 58091 | 61225 | .required_features = .{ .@"64bit", null, null, null }, |
| 58092 | 61226 | .src_constraints = .{ |
| 58093 | | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58094 | | .{ .unsigned_int = .byte }, |
| 61227 | .{ .remainder_signed_int = .{ .of = .xword, .is = .qword } }, |
| 61228 | .{ .exact_signed_int = 32 }, |
| 58095 | 61229 | .any, |
| 58096 | 61230 | }, |
| 58097 | 61231 | .patterns = &.{ |
| 58098 | 61232 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58099 | 61233 | }, |
| 58100 | 61234 | .extra_temps = .{ |
| 61235 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58101 | 61236 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58102 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58103 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 58104 | | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58105 | | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58106 | | .unused, |
| 58107 | | .unused, |
| 58108 | | .unused, |
| 61237 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61238 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61239 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61240 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61241 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61242 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 58109 | 61243 | .unused, |
| 58110 | 61244 | .unused, |
| 58111 | 61245 | .unused, |
| ... | ... | @@ -58113,42 +61247,88 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58113 | 61247 | .dst_temps = .{ .mem, .unused }, |
| 58114 | 61248 | .clobbers = .{ .eflags = true }, |
| 58115 | 61249 | .each = .{ .once = &.{ |
| 58116 | | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 58117 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58118 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58119 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58120 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58121 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58122 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58123 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58124 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58125 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58126 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58127 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 61250 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61251 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61252 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61253 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61254 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61255 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58128 | 61256 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58129 | | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58130 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58131 | | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58132 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 61257 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61258 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61259 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61260 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61261 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61262 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61263 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61264 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61265 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 61266 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 61267 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 61268 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 61269 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 61270 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61271 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61272 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 61273 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 61274 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 61275 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61276 | .{ ._, ._c, .de, .tmp6d, ._, ._, ._ }, |
| 58133 | 61277 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 61278 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61279 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 61280 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61281 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61282 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 61283 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 61284 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 61285 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61286 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61287 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 61288 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 61289 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61290 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61291 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61292 | .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 61293 | .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ }, |
| 61294 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61295 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61296 | .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ }, |
| 61297 | .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, |
| 61298 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61299 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61300 | .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ }, |
| 61301 | .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ }, |
| 61302 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61303 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -16), ._, ._ }, |
| 61304 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61305 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 61306 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 61307 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 61308 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61309 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 61310 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61311 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 61312 | .{ ._, ._r, .sa, .tmp1q, .ui(63), ._, ._ }, |
| 61313 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58134 | 61314 | } }, |
| 58135 | 61315 | }, .{ |
| 58136 | | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 61316 | .required_features = .{ .@"64bit", .bmi, .slow_incdec, null }, |
| 58137 | 61317 | .src_constraints = .{ |
| 58138 | | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 58139 | | .{ .unsigned_int = .word }, |
| 61318 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 61319 | .{ .exact_signed_int = 32 }, |
| 58140 | 61320 | .any, |
| 58141 | 61321 | }, |
| 58142 | 61322 | .patterns = &.{ |
| 58143 | | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 61323 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58144 | 61324 | }, |
| 58145 | 61325 | .extra_temps = .{ |
| 61326 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58146 | 61327 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58147 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58148 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61328 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61329 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58149 | 61330 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58150 | 61331 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58151 | | .unused, |
| 58152 | 61332 | .unused, |
| 58153 | 61333 | .unused, |
| 58154 | 61334 | .unused, |
| ... | ... | @@ -58158,42 +61338,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58158 | 61338 | .dst_temps = .{ .mem, .unused }, |
| 58159 | 61339 | .clobbers = .{ .eflags = true }, |
| 58160 | 61340 | .each = .{ .once = &.{ |
| 58161 | | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58162 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58163 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58164 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58165 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58166 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58167 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58168 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58169 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58170 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58171 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58172 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 58173 | | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58174 | | .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ }, |
| 58175 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58176 | | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 58177 | | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 61341 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61342 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61343 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61344 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61345 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61346 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58178 | 61347 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61348 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61349 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61350 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61351 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61352 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61353 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61354 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61355 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61356 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61357 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61358 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61359 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61360 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61361 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61362 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61363 | .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ }, |
| 61364 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 61365 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61366 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 61367 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61368 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61369 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 61370 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 61371 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61372 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61373 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61374 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61375 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 61376 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 61377 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61378 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61379 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 61380 | .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 61381 | .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ }, |
| 61382 | .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ }, |
| 61383 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 61384 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61385 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61386 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 61387 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61388 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 61389 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61390 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 61391 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 58179 | 61392 | } }, |
| 58180 | 61393 | }, .{ |
| 58181 | | .required_features = .{ .@"64bit", null, null, null }, |
| 61394 | .required_features = .{ .@"64bit", .bmi, null, null }, |
| 58182 | 61395 | .src_constraints = .{ |
| 58183 | | .{ .remainder_signed_int = .{ .of = .qword, .is = .qword } }, |
| 58184 | | .{ .unsigned_int = .word }, |
| 61396 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 61397 | .{ .exact_signed_int = 32 }, |
| 58185 | 61398 | .any, |
| 58186 | 61399 | }, |
| 58187 | 61400 | .patterns = &.{ |
| 58188 | | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 61401 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58189 | 61402 | }, |
| 58190 | 61403 | .extra_temps = .{ |
| 61404 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58191 | 61405 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58192 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58193 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61406 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61407 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58194 | 61408 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58195 | 61409 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58196 | | .unused, |
| 58197 | 61410 | .unused, |
| 58198 | 61411 | .unused, |
| 58199 | 61412 | .unused, |
| ... | ... | @@ -58203,42 +61416,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58203 | 61416 | .dst_temps = .{ .mem, .unused }, |
| 58204 | 61417 | .clobbers = .{ .eflags = true }, |
| 58205 | 61418 | .each = .{ .once = &.{ |
| 58206 | | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58207 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58208 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58209 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58210 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58211 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58212 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58213 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58214 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58215 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58216 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58217 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 61419 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61420 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61421 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61422 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61423 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61424 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58218 | 61425 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58219 | | .{ ._, ._r, .sa, .tmp3q, .src1b, ._, ._ }, |
| 58220 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58221 | | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 58222 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 61426 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61427 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61428 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61429 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61430 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61431 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61432 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61433 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61434 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61435 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61436 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61437 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61438 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61439 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61440 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61441 | .{ ._, ._c, .de, .tmp5d, ._, ._, ._ }, |
| 58223 | 61442 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 61443 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61444 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 61445 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61446 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61447 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 61448 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 61449 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61450 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61451 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61452 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61453 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 61454 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 61455 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61456 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61457 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 61458 | .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 61459 | .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ }, |
| 61460 | .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ }, |
| 61461 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 61462 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61463 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61464 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 61465 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61466 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 61467 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61468 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 61469 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 58224 | 61470 | } }, |
| 58225 | 61471 | }, .{ |
| 58226 | 61472 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58227 | 61473 | .src_constraints = .{ |
| 58228 | | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58229 | | .{ .unsigned_int = .word }, |
| 61474 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 61475 | .{ .exact_signed_int = 32 }, |
| 58230 | 61476 | .any, |
| 58231 | 61477 | }, |
| 58232 | 61478 | .patterns = &.{ |
| 58233 | | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 61479 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58234 | 61480 | }, |
| 58235 | 61481 | .extra_temps = .{ |
| 61482 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58236 | 61483 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58237 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58238 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61484 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61485 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58239 | 61486 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58240 | 61487 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58241 | | .unused, |
| 58242 | 61488 | .unused, |
| 58243 | 61489 | .unused, |
| 58244 | 61490 | .unused, |
| ... | ... | @@ -58248,42 +61494,75 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58248 | 61494 | .dst_temps = .{ .mem, .unused }, |
| 58249 | 61495 | .clobbers = .{ .eflags = true }, |
| 58250 | 61496 | .each = .{ .once = &.{ |
| 58251 | | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58252 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58253 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58254 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58255 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58256 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58257 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58258 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58259 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58260 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58261 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58262 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 61497 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61498 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61499 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61500 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61501 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61502 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58263 | 61503 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58264 | | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58265 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 61504 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61505 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61506 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61507 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61508 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61509 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61510 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61511 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61512 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61513 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61514 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61515 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61516 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61517 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61518 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61519 | .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ }, |
| 61520 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 61521 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61522 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 61523 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61524 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61525 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 61526 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 61527 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61528 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61529 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61530 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61531 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58266 | 61532 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58267 | | .{ ._, ._, .add, .tmp0p, .si(1), ._, ._ }, |
| 58268 | | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61533 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61534 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61535 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 61536 | .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 61537 | .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ }, |
| 61538 | .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ }, |
| 61539 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 61540 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61541 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61542 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 61543 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61544 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 61545 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61546 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 61547 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 58269 | 61548 | } }, |
| 58270 | 61549 | }, .{ |
| 58271 | 61550 | .required_features = .{ .@"64bit", null, null, null }, |
| 58272 | 61551 | .src_constraints = .{ |
| 58273 | | .{ .remainder_unsigned_int = .{ .of = .qword, .is = .qword } }, |
| 58274 | | .{ .unsigned_int = .word }, |
| 61552 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .qword } }, |
| 61553 | .{ .exact_signed_int = 32 }, |
| 58275 | 61554 | .any, |
| 58276 | 61555 | }, |
| 58277 | 61556 | .patterns = &.{ |
| 58278 | | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 61557 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58279 | 61558 | }, |
| 58280 | 61559 | .extra_temps = .{ |
| 61560 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58281 | 61561 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58282 | | .{ .type = .isize, .kind = .{ .rc = .general_purpose } }, |
| 58283 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61562 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61563 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58284 | 61564 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58285 | 61565 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58286 | | .unused, |
| 58287 | 61566 | .unused, |
| 58288 | 61567 | .unused, |
| 58289 | 61568 | .unused, |
| ... | ... | @@ -58293,225 +61572,255 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58293 | 61572 | .dst_temps = .{ .mem, .unused }, |
| 58294 | 61573 | .clobbers = .{ .eflags = true }, |
| 58295 | 61574 | .each = .{ .once = &.{ |
| 58296 | | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 58297 | | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58298 | | .{ ._, ._, .lea, .tmp1p, .leasia(.none, .@"8", .tmp0, .sub_src0_size), ._, ._ }, |
| 58299 | | .{ ._, ._, .not, .tmp0p, ._, ._, ._ }, |
| 58300 | | .{ ._, ._, .lea, .tmp2p, .memsia(.dst0, .@"8", .tmp0, .add_size), ._, ._ }, |
| 58301 | | .{ ._, ._, .mov, .tmp3q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58302 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58303 | | .{ .@"0:", ._, .mov, .tmp4q, .memia(.src0q, .tmp1, .add_size), ._, ._ }, |
| 58304 | | .{ ._, ._rd, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 58305 | | .{ ._, ._, .mov, .leai(.tmp2q, .tmp1), .tmp3q, ._, ._ }, |
| 58306 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58307 | | .{ .@"1:", ._, .add, .tmp1p, .si(8), ._, ._ }, |
| 61575 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61576 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61577 | .{ ._, ._, .mov, .tmp0d, .sia(-16, .src0, .add_size), ._, ._ }, |
| 61578 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61579 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61580 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 58308 | 61581 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 58309 | | .{ ._, ._r, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58310 | | .{ .@"0:", ._, .mov, .memsia(.dst0q, .@"8", .tmp0, .add_size), .tmp3q, ._, ._ }, |
| 58311 | | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58312 | | .{ ._, ._c, .in, .tmp0p, ._, ._, ._ }, |
| 61582 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61583 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61584 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61585 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61586 | .{ ._, ._, .mov, .tmp1d, .sia(-2, .src0, .add_size_div_8), ._, ._ }, |
| 61587 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61588 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61589 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61590 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61591 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61592 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61593 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61594 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61595 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61596 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61597 | .{ ._, ._c, .de, .tmp5d, ._, ._, ._ }, |
| 58313 | 61598 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 58314 | | } }, |
| 58315 | | } }) catch |err| switch (err) { |
| 58316 | | error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{ |
| 58317 | | @tagName(air_tag), |
| 58318 | | cg.typeOf(bin_op.lhs).fmt(pt), |
| 58319 | | cg.typeOf(bin_op.rhs).fmt(pt), |
| 58320 | | ops[0].tracking(cg), |
| 58321 | | ops[1].tracking(cg), |
| 58322 | | }), |
| 58323 | | else => |e| return e, |
| 58324 | | }; |
| 58325 | | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 58326 | | }, |
| 58327 | | .shl, .shl_exact => |air_tag| if (use_old) try cg.airShlShrBinOp(inst) else fallback: { |
| 58328 | | const bin_op = air_datas[@intFromEnum(inst)].bin_op; |
| 58329 | | if (cg.typeOf(bin_op.lhs).isVector(zcu)) break :fallback try cg.airShlShrBinOp(inst); |
| 58330 | | var ops = try cg.tempsFromOperands(inst, .{ bin_op.lhs, bin_op.rhs }); |
| 58331 | | var res: [1]Temp = undefined; |
| 58332 | | cg.select(&res, &.{cg.typeOf(bin_op.lhs)}, &ops, comptime &.{ .{ |
| 58333 | | .src_constraints = .{ .{ .signed_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 58334 | | .patterns = &.{ |
| 58335 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58336 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58337 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58338 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58339 | | }, |
| 58340 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58341 | | .clobbers = .{ .eflags = true }, |
| 58342 | | .each = .{ .once = &.{ |
| 58343 | | .{ ._, ._l, .sa, .dst0b, .src1b, ._, ._ }, |
| 58344 | | } }, |
| 58345 | | }, .{ |
| 58346 | | .src_constraints = .{ .{ .unsigned_int = .byte }, .{ .unsigned_int = .byte }, .any }, |
| 58347 | | .patterns = &.{ |
| 58348 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58349 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58350 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58351 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58352 | | }, |
| 58353 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58354 | | .clobbers = .{ .eflags = true }, |
| 58355 | | .each = .{ .once = &.{ |
| 58356 | | .{ ._, ._l, .sh, .dst0b, .src1b, ._, ._ }, |
| 58357 | | } }, |
| 58358 | | }, .{ |
| 58359 | | .src_constraints = .{ .{ .signed_int = .word }, .{ .exact_unsigned_int = 4 }, .any }, |
| 58360 | | .patterns = &.{ |
| 58361 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58362 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58363 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58364 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58365 | | }, |
| 58366 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58367 | | .clobbers = .{ .eflags = true }, |
| 58368 | | .each = .{ .once = &.{ |
| 58369 | | .{ ._, ._l, .sa, .dst0w, .src1b, ._, ._ }, |
| 58370 | | } }, |
| 58371 | | }, .{ |
| 58372 | | .src_constraints = .{ .{ .unsigned_int = .word }, .{ .exact_unsigned_int = 4 }, .any }, |
| 58373 | | .patterns = &.{ |
| 58374 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58375 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58376 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58377 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 58378 | | }, |
| 58379 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58380 | | .clobbers = .{ .eflags = true }, |
| 58381 | | .each = .{ .once = &.{ |
| 58382 | | .{ ._, ._l, .sh, .dst0w, .src1b, ._, ._ }, |
| 58383 | | } }, |
| 58384 | | }, .{ |
| 58385 | | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58386 | | .patterns = &.{ |
| 58387 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58388 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58389 | | }, |
| 58390 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58391 | | .clobbers = .{ .eflags = true }, |
| 58392 | | .each = .{ .once = &.{ |
| 58393 | | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 58394 | | } }, |
| 58395 | | }, .{ |
| 58396 | | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58397 | | .patterns = &.{ |
| 58398 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58399 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58400 | | }, |
| 58401 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58402 | | .clobbers = .{ .eflags = true }, |
| 58403 | | .each = .{ .once = &.{ |
| 58404 | | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 58405 | | } }, |
| 58406 | | }, .{ |
| 58407 | | .required_features = .{ .bmi2, null, null, null }, |
| 58408 | | .src_constraints = .{ .{ .int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58409 | | .patterns = &.{ |
| 58410 | | .{ .src = .{ .mem, .to_gpr, .none } }, |
| 58411 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 58412 | | }, |
| 58413 | | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 58414 | | .each = .{ .once = &.{ |
| 58415 | | .{ ._, ._lx, .sh, .dst0d, .src0d, .src1d, ._ }, |
| 61599 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61600 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 61601 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61602 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61603 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 61604 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 61605 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61606 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61607 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61608 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61609 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 61610 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 61611 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61612 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61613 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 61614 | .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -16), ._, ._ }, |
| 61615 | .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ }, |
| 61616 | .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ }, |
| 61617 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 61618 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61619 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61620 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 61621 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61622 | .{ ._, ._, .mov, .src1d, .sia(-2, .dst0, .add_size_div_8), ._, ._ }, |
| 61623 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61624 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -16), .tmp1q, ._, ._ }, |
| 61625 | .{ ._, ._, .mov, .memad(.dst0q, .add_size, -8), .si(0), ._, ._ }, |
| 58416 | 61626 | } }, |
| 58417 | 61627 | }, .{ |
| 58418 | | .src_constraints = .{ .{ .signed_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58419 | | .patterns = &.{ |
| 58420 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58421 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 61628 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 61629 | .src_constraints = .{ |
| 61630 | .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, |
| 61631 | .{ .exact_signed_int = 32 }, |
| 61632 | .any, |
| 58422 | 61633 | }, |
| 58423 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58424 | | .clobbers = .{ .eflags = true }, |
| 58425 | | .each = .{ .once = &.{ |
| 58426 | | .{ ._, ._l, .sa, .dst0d, .src1b, ._, ._ }, |
| 58427 | | } }, |
| 58428 | | }, .{ |
| 58429 | | .src_constraints = .{ .{ .unsigned_int = .dword }, .{ .exact_unsigned_int = 5 }, .any }, |
| 58430 | 61634 | .patterns = &.{ |
| 58431 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58432 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 61635 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58433 | 61636 | }, |
| 58434 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58435 | | .clobbers = .{ .eflags = true }, |
| 58436 | | .each = .{ .once = &.{ |
| 58437 | | .{ ._, ._l, .sh, .dst0d, .src1b, ._, ._ }, |
| 58438 | | } }, |
| 58439 | | }, .{ |
| 58440 | | .required_features = .{ .@"64bit", null, null, null }, |
| 58441 | | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58442 | | .patterns = &.{ |
| 58443 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58444 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 61637 | .extra_temps = .{ |
| 61638 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 61639 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 61640 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61641 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61642 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61643 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61644 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61645 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61646 | .unused, |
| 61647 | .unused, |
| 61648 | .unused, |
| 58445 | 61649 | }, |
| 58446 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 61650 | .dst_temps = .{ .mem, .unused }, |
| 58447 | 61651 | .clobbers = .{ .eflags = true }, |
| 58448 | 61652 | .each = .{ .once = &.{ |
| 58449 | | .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 61653 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61654 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61655 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 61656 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61657 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61658 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 61659 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61660 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61661 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61662 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61663 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61664 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 61665 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61666 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61667 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61668 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 61669 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 61670 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 61671 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 61672 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 61673 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 61674 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61675 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61676 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 61677 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 61678 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 61679 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61680 | .{ ._, ._, .sub, .tmp6d, .si(1), ._, ._ }, |
| 61681 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 61682 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61683 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 61684 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61685 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61686 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 61687 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 61688 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 61689 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61690 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61691 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 61692 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 61693 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61694 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 61695 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61696 | .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 61697 | .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ }, |
| 61698 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61699 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61700 | .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ }, |
| 61701 | .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, |
| 61702 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61703 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61704 | .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ }, |
| 61705 | .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ }, |
| 61706 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61707 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 61708 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61709 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 61710 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 61711 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 61712 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61713 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 61714 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61715 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58450 | 61716 | } }, |
| 58451 | 61717 | }, .{ |
| 58452 | 61718 | .required_features = .{ .@"64bit", null, null, null }, |
| 58453 | | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58454 | | .patterns = &.{ |
| 58455 | | .{ .src = .{ .mut_mem, .imm8, .none } }, |
| 58456 | | .{ .src = .{ .to_mut_gpr, .imm8, .none } }, |
| 58457 | | }, |
| 58458 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58459 | | .clobbers = .{ .eflags = true }, |
| 58460 | | .each = .{ .once = &.{ |
| 58461 | | .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ }, |
| 58462 | | } }, |
| 58463 | | }, .{ |
| 58464 | | .required_features = .{ .@"64bit", .bmi2, null, null }, |
| 58465 | | .src_constraints = .{ .{ .int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58466 | | .patterns = &.{ |
| 58467 | | .{ .src = .{ .mem, .to_gpr, .none } }, |
| 58468 | | .{ .src = .{ .to_gpr, .to_gpr, .none } }, |
| 61719 | .src_constraints = .{ |
| 61720 | .{ .remainder_signed_int = .{ .of = .xword, .is = .xword } }, |
| 61721 | .{ .exact_signed_int = 32 }, |
| 61722 | .any, |
| 58469 | 61723 | }, |
| 58470 | | .dst_temps = .{ .{ .mut_rc = .{ .ref = .src0, .rc = .general_purpose } }, .unused }, |
| 58471 | | .each = .{ .once = &.{ |
| 58472 | | .{ ._, ._lx, .sh, .dst0q, .src0q, .src1q, ._ }, |
| 58473 | | } }, |
| 58474 | | }, .{ |
| 58475 | | .required_features = .{ .@"64bit", null, null, null }, |
| 58476 | | .src_constraints = .{ .{ .signed_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58477 | 61724 | .patterns = &.{ |
| 58478 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58479 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 61725 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58480 | 61726 | }, |
| 58481 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 58482 | | .clobbers = .{ .eflags = true }, |
| 58483 | | .each = .{ .once = &.{ |
| 58484 | | .{ ._, ._l, .sa, .dst0q, .src1b, ._, ._ }, |
| 58485 | | } }, |
| 58486 | | }, .{ |
| 58487 | | .required_features = .{ .@"64bit", null, null, null }, |
| 58488 | | .src_constraints = .{ .{ .unsigned_int = .qword }, .{ .exact_unsigned_int = 6 }, .any }, |
| 58489 | | .patterns = &.{ |
| 58490 | | .{ .src = .{ .mut_mem, .{ .to_reg = .cl }, .none } }, |
| 58491 | | .{ .src = .{ .to_mut_gpr, .{ .to_reg = .cl }, .none } }, |
| 61727 | .extra_temps = .{ |
| 61728 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 61729 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 61730 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61731 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61732 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61733 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61734 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61735 | .{ .type = .i64, .kind = .{ .rc = .general_purpose } }, |
| 61736 | .unused, |
| 61737 | .unused, |
| 61738 | .unused, |
| 58492 | 61739 | }, |
| 58493 | | .dst_temps = .{ .{ .ref = .src0 }, .unused }, |
| 61740 | .dst_temps = .{ .mem, .unused }, |
| 58494 | 61741 | .clobbers = .{ .eflags = true }, |
| 58495 | 61742 | .each = .{ .once = &.{ |
| 58496 | | .{ ._, ._l, .sh, .dst0q, .src1b, ._, ._ }, |
| 61743 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61744 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61745 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 61746 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61747 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61748 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 61749 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61750 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61751 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61752 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61753 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 61754 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 61755 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 61756 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61757 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61758 | .{ ._, ._, .mov, .tmp3q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 61759 | .{ ._, ._, .mov, .tmp4q, .lea(.tmp2q), ._, ._ }, |
| 61760 | .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ }, |
| 61761 | .{ ._, ._, .mov, .tmp5q, .tmp3q, ._, ._ }, |
| 61762 | .{ ._, ._ld, .sh, .tmp5q, .tmp4q, .src1b, ._ }, |
| 61763 | .{ ._, ._, .xor, .tmp5q, .tmp3q, ._, ._ }, |
| 61764 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61765 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61766 | .{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ }, |
| 61767 | .{ .@"0:", ._, .mov, .tmp7q, .tmp3q, ._, ._ }, |
| 61768 | .{ ._, ._, .xor, .tmp7q, .leasi(.tmp2q, .@"8", .tmp6), ._, ._ }, |
| 61769 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61770 | .{ ._, ._c, .de, .tmp6d, ._, ._, ._ }, |
| 61771 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 61772 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61773 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 61774 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 61775 | .{ .@"0:", ._, .mov, .tmp6q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61776 | .{ ._, ._ld, .sh, .tmp4q, .tmp6q, .src1b, ._ }, |
| 61777 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp4q, ._, ._ }, |
| 61778 | .{ ._, ._, .mov, .tmp4q, .tmp6q, ._, ._ }, |
| 61779 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61780 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61781 | .{ .@"1:", ._l, .sh, .tmp4q, .src1b, ._, ._ }, |
| 61782 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp4q, ._, ._ }, |
| 61783 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61784 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 61785 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61786 | .{ ._, ._, .mov, .tmp1q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 61787 | .{ ._, ._, .mov, .tmp7q, .tmp1q, ._, ._ }, |
| 61788 | .{ ._, ._l, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61789 | .{ ._, ._r, .sa, .tmp1q, .uia(64, .src0, .sub_bit_size_rem_64), ._, ._ }, |
| 61790 | .{ ._, ._, .xor, .tmp7q, .tmp1q, ._, ._ }, |
| 61791 | .{ ._, ._, .mov, .tmp0q, .tmp1q, ._, ._ }, |
| 61792 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61793 | .{ ._, ._, .@"or", .tmp5q, .tmp7q, ._, ._ }, |
| 61794 | .{ ._, ._, .xor, .tmp0q, .tmp3q, ._, ._ }, |
| 61795 | .{ ._, ._, .@"or", .tmp5q, .tmp0q, ._, ._ }, |
| 61796 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61797 | .{ .@"2:", ._, .mov, .tmp0q, .memad(.src0q, .add_size, -8), ._, ._ }, |
| 61798 | .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ }, |
| 61799 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_smax), ._, ._ }, |
| 61800 | .{ ._, ._, .xor, .tmp1q, .tmp0q, ._, ._ }, |
| 61801 | .{ ._, ._, .not, .tmp0q, ._, ._, ._ }, |
| 61802 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61803 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 61804 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61805 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58497 | 61806 | } }, |
| 58498 | 61807 | }, .{ |
| 58499 | | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 61808 | .required_features = .{ .@"64bit", .bmi, .slow_incdec, null }, |
| 58500 | 61809 | .src_constraints = .{ |
| 58501 | | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58502 | | .{ .unsigned_int = .byte }, |
| 61810 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, |
| 61811 | .{ .exact_signed_int = 32 }, |
| 58503 | 61812 | .any, |
| 58504 | 61813 | }, |
| 58505 | 61814 | .patterns = &.{ |
| 58506 | 61815 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58507 | 61816 | }, |
| 58508 | 61817 | .extra_temps = .{ |
| 61818 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58509 | 61819 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58510 | | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58511 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61820 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61821 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58512 | 61822 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58513 | 61823 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58514 | | .unused, |
| 58515 | 61824 | .unused, |
| 58516 | 61825 | .unused, |
| 58517 | 61826 | .unused, |
| ... | ... | @@ -58521,42 +61830,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58521 | 61830 | .dst_temps = .{ .mem, .unused }, |
| 58522 | 61831 | .clobbers = .{ .eflags = true }, |
| 58523 | 61832 | .each = .{ .once = &.{ |
| 58524 | | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 61833 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61834 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61835 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 61836 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61837 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61838 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 61839 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61840 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61841 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61842 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61843 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 58525 | 61844 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58526 | 61845 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58527 | 61846 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61847 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61848 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61849 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61850 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61851 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61852 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61853 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61854 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61855 | .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ }, |
| 61856 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 61857 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61858 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 58528 | 61859 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58529 | | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58530 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58531 | | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58532 | | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 61860 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61861 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 58533 | 61862 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58534 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58535 | | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 61863 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61864 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 58536 | 61865 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 58537 | | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61866 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58538 | 61867 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58539 | 61868 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58540 | 61869 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 58541 | 61870 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 61871 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 61872 | .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 61873 | .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ }, |
| 61874 | .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ }, |
| 61875 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 61876 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61877 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61878 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 61879 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61880 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 61881 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61882 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58542 | 61883 | } }, |
| 58543 | 61884 | }, .{ |
| 58544 | | .required_features = .{ .@"64bit", null, null, null }, |
| 61885 | .required_features = .{ .@"64bit", .bmi, null, null }, |
| 58545 | 61886 | .src_constraints = .{ |
| 58546 | | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58547 | | .{ .unsigned_int = .byte }, |
| 61887 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, |
| 61888 | .{ .exact_signed_int = 32 }, |
| 58548 | 61889 | .any, |
| 58549 | 61890 | }, |
| 58550 | 61891 | .patterns = &.{ |
| 58551 | 61892 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58552 | 61893 | }, |
| 58553 | 61894 | .extra_temps = .{ |
| 61895 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58554 | 61896 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58555 | | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58556 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61897 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61898 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58557 | 61899 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58558 | 61900 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58559 | | .unused, |
| 58560 | 61901 | .unused, |
| 58561 | 61902 | .unused, |
| 58562 | 61903 | .unused, |
| ... | ... | @@ -58566,42 +61907,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58566 | 61907 | .dst_temps = .{ .mem, .unused }, |
| 58567 | 61908 | .clobbers = .{ .eflags = true }, |
| 58568 | 61909 | .each = .{ .once = &.{ |
| 58569 | | .{ ._, ._, .movzx, .tmp0d, .src1b, ._, ._ }, |
| 61910 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61911 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61912 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 61913 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61914 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61915 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 61916 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61917 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61918 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61919 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61920 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 58570 | 61921 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58571 | 61922 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58572 | 61923 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 61924 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61925 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 61926 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 61927 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 61928 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 61929 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 61930 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 61931 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 61932 | .{ ._, ._c, .de, .tmp5d, ._, ._, ._ }, |
| 61933 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 61934 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61935 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 58573 | 61936 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58574 | | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58575 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58576 | | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58577 | | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 61937 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 61938 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 58578 | 61939 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58579 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58580 | | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 61940 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 61941 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 58581 | 61942 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 58582 | | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 61943 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58583 | 61944 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58584 | 61945 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58585 | 61946 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 58586 | 61947 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 61948 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 61949 | .{ ._, ._, .mov, .tmp3q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 61950 | .{ ._, ._, .andn, .tmp5q, .tmp1q, .tmp3q, ._ }, |
| 61951 | .{ ._, ._, .@"and", .tmp1q, .tmp3q, ._, ._ }, |
| 61952 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 61953 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 61954 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 61955 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 61956 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 61957 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 61958 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 61959 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58587 | 61960 | } }, |
| 58588 | 61961 | }, .{ |
| 58589 | 61962 | .required_features = .{ .@"64bit", .slow_incdec, null, null }, |
| 58590 | 61963 | .src_constraints = .{ |
| 58591 | | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58592 | | .{ .unsigned_int = .word }, |
| 61964 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, |
| 61965 | .{ .exact_signed_int = 32 }, |
| 58593 | 61966 | .any, |
| 58594 | 61967 | }, |
| 58595 | 61968 | .patterns = &.{ |
| 58596 | | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 61969 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58597 | 61970 | }, |
| 58598 | 61971 | .extra_temps = .{ |
| 61972 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58599 | 61973 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58600 | | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58601 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 61974 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 61975 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58602 | 61976 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58603 | 61977 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58604 | | .unused, |
| 58605 | 61978 | .unused, |
| 58606 | 61979 | .unused, |
| 58607 | 61980 | .unused, |
| ... | ... | @@ -58611,42 +61984,74 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58611 | 61984 | .dst_temps = .{ .mem, .unused }, |
| 58612 | 61985 | .clobbers = .{ .eflags = true }, |
| 58613 | 61986 | .each = .{ .once = &.{ |
| 58614 | | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 61987 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 61988 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 61989 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 61990 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 61991 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 61992 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 61993 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 61994 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 61995 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 61996 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 61997 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 58615 | 61998 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58616 | 61999 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58617 | 62000 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 62001 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 62002 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 62003 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 62004 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 62005 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 62006 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 62007 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 62008 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 62009 | .{ ._, ._, .sub, .tmp5d, .si(1), ._, ._ }, |
| 62010 | .{ ._, ._a, .j, .@"0b", ._, ._, ._ }, |
| 62011 | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 62012 | .{ ._, ._nae, .j, .@"1f", ._, ._, ._ }, |
| 58618 | 62013 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58619 | | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58620 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58621 | | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58622 | | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 62014 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 62015 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 58623 | 62016 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58624 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58625 | | .{ .@"1:", ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 62017 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 62018 | .{ ._, ._, .sub, .tmp1d, .si(1), ._, ._ }, |
| 58626 | 62019 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 58627 | | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 62020 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58628 | 62021 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58629 | 62022 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58630 | 62023 | .{ ._, ._, .sub, .tmp0d, .si(1), ._, ._ }, |
| 58631 | 62024 | .{ ._, ._ae, .j, .@"0b", ._, ._, ._ }, |
| 62025 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 62026 | .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 62027 | .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ }, |
| 62028 | .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ }, |
| 62029 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 62030 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 62031 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 62032 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 62033 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 62034 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 62035 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 62036 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58632 | 62037 | } }, |
| 58633 | 62038 | }, .{ |
| 58634 | 62039 | .required_features = .{ .@"64bit", null, null, null }, |
| 58635 | 62040 | .src_constraints = .{ |
| 58636 | | .{ .remainder_int = .{ .of = .qword, .is = .qword } }, |
| 58637 | | .{ .unsigned_int = .word }, |
| 62041 | .{ .remainder_unsigned_int = .{ .of = .xword, .is = .xword } }, |
| 62042 | .{ .exact_signed_int = 32 }, |
| 58638 | 62043 | .any, |
| 58639 | 62044 | }, |
| 58640 | 62045 | .patterns = &.{ |
| 58641 | | .{ .src = .{ .to_mem, .{ .to_reg = .cx }, .none } }, |
| 62046 | .{ .src = .{ .to_mem, .{ .to_reg = .cl }, .none } }, |
| 58642 | 62047 | }, |
| 58643 | 62048 | .extra_temps = .{ |
| 62049 | .{ .type = .u32, .kind = .{ .reg = .rax } }, |
| 58644 | 62050 | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58645 | | .{ .type = .u32, .kind = .{ .rc = .general_purpose } }, |
| 58646 | | .{ .type = .usize, .kind = .{ .rc = .general_purpose } }, |
| 62051 | .{ .type = .usize, .kind = .{ .reg = .rdi } }, |
| 62052 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58647 | 62053 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58648 | 62054 | .{ .type = .u64, .kind = .{ .rc = .general_purpose } }, |
| 58649 | | .unused, |
| 58650 | 62055 | .unused, |
| 58651 | 62056 | .unused, |
| 58652 | 62057 | .unused, |
| ... | ... | @@ -58656,48 +62061,66 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void { |
| 58656 | 62061 | .dst_temps = .{ .mem, .unused }, |
| 58657 | 62062 | .clobbers = .{ .eflags = true }, |
| 58658 | 62063 | .each = .{ .once = &.{ |
| 58659 | | .{ ._, ._, .movzx, .tmp0d, .src1w, ._, ._ }, |
| 62064 | .{ ._, ._, .cmp, .src1d, .sia(-1, .src0, .add_bit_size), ._, ._ }, |
| 62065 | .{ ._, ._na, .j, .@"1f", ._, ._, ._ }, |
| 62066 | .{ ._, ._, .mov, .tmp0d, .sia(-8, .src0, .add_size), ._, ._ }, |
| 62067 | .{ .@"0:", ._, .cmp, .memi(.src0q, .tmp0), .si(0), ._, ._ }, |
| 62068 | .{ ._, ._nz, .j, .@"2f", ._, ._, ._ }, |
| 62069 | .{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ }, |
| 62070 | .{ ._, ._nc, .j, .@"0b", ._, ._, ._ }, |
| 62071 | .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ }, |
| 62072 | .{ ._, ._, .xor, .tmp1d, .tmp1d, ._, ._ }, |
| 62073 | .{ ._, ._mp, .j, .@"3f", ._, ._, ._ }, |
| 62074 | .{ .@"1:", ._, .mov, .tmp0d, .src1d, ._, ._ }, |
| 58660 | 62075 | .{ ._, ._, .mov, .tmp1d, .sia(-1, .src0, .add_size_div_8), ._, ._ }, |
| 58661 | 62076 | .{ ._, ._r, .sh, .tmp0d, .ui(6), ._, ._ }, |
| 58662 | 62077 | .{ ._, ._, .sub, .tmp1d, .tmp0d, ._, ._ }, |
| 62078 | .{ ._, ._, .lea, .tmp2p, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 62079 | .{ ._, ._, .mov, .tmp3q, .lea(.tmp2q), ._, ._ }, |
| 62080 | .{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ }, |
| 62081 | .{ ._, ._ld, .sh, .tmp4q, .tmp3q, .src1b, ._ }, |
| 62082 | .{ ._, ._, .@"test", .tmp0d, .tmp0d, ._, ._ }, |
| 62083 | .{ ._, ._z, .j, .@"1f", ._, ._, ._ }, |
| 62084 | .{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ }, |
| 62085 | .{ .@"0:", ._, .@"or", .tmp4q, .leasi(.tmp2q, .@"8", .tmp5), ._, ._ }, |
| 62086 | .{ ._, ._c, .de, .tmp5d, ._, ._, ._ }, |
| 62087 | .{ ._, ._nz, .j, .@"0b", ._, ._, ._ }, |
| 62088 | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 62089 | .{ ._, ._s, .j, .@"1f", ._, ._, ._ }, |
| 58663 | 62090 | .{ ._, ._, .lea, .tmp2p, .memsid(.dst0, .@"8", .tmp0, 8), ._, ._ }, |
| 58664 | | .{ ._, ._, .mov, .tmp3q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58665 | | .{ ._, ._mp, .j, .@"1f", ._, ._, ._ }, |
| 58666 | | .{ .@"0:", ._, .mov, .tmp4q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 58667 | | .{ ._, ._ld, .sh, .tmp3q, .tmp4q, .src1b, ._ }, |
| 62091 | .{ .@"0:", ._, .mov, .tmp5q, .memsi(.src0q, .@"8", .tmp1), ._, ._ }, |
| 62092 | .{ ._, ._ld, .sh, .tmp3q, .tmp5q, .src1b, ._ }, |
| 58668 | 62093 | .{ ._, ._, .mov, .leasi(.tmp2q, .@"8", .tmp1), .tmp3q, ._, ._ }, |
| 58669 | | .{ ._, ._, .mov, .tmp3q, .tmp4q, ._, ._ }, |
| 58670 | | .{ .@"1:", ._c, .de, .tmp1d, ._, ._, ._ }, |
| 62094 | .{ ._, ._, .mov, .tmp3q, .tmp5q, ._, ._ }, |
| 62095 | .{ ._, ._c, .de, .tmp1d, ._, ._, ._ }, |
| 58671 | 62096 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 58672 | | .{ ._, ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 62097 | .{ .@"1:", ._l, .sh, .tmp3q, .src1b, ._, ._ }, |
| 58673 | 62098 | .{ .@"0:", ._, .mov, .memsi(.dst0q, .@"8", .tmp0), .tmp3q, ._, ._ }, |
| 58674 | 62099 | .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ }, |
| 58675 | 62100 | .{ ._, ._c, .de, .tmp0d, ._, ._, ._ }, |
| 58676 | 62101 | .{ ._, ._ns, .j, .@"0b", ._, ._, ._ }, |
| 62102 | .{ ._, ._, .mov, .tmp1q, .ua(.src0, .add_umax), ._, ._ }, |
| 62103 | .{ ._, ._, .mov, .tmp5q, .memad(.dst0q, .add_src0_size, -8), ._, ._ }, |
| 62104 | .{ ._, ._, .@"and", .tmp1q, .tmp5q, ._, ._ }, |
| 62105 | .{ ._, ._, .xor, .tmp5q, .tmp1q, ._, ._ }, |
| 62106 | .{ ._, ._, .@"or", .tmp4q, .tmp5q, ._, ._ }, |
| 62107 | .{ ._, ._z, .j, .@"0f", ._, ._, ._ }, |
| 62108 | .{ .@"2:", ._, .mov, .tmp0q, .si(-1), ._, ._ }, |
| 62109 | .{ ._, ._, .mov, .tmp1q, .ua(.dst0, .add_umax), ._, ._ }, |
| 62110 | .{ .@"3:", ._, .lea, .tmp2p, .mem(.dst0), ._, ._ }, |
| 62111 | .{ ._, ._, .mov, .src1d, .sia(-1, .dst0, .add_size_div_8), ._, ._ }, |
| 62112 | .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ }, |
| 62113 | .{ .@"0:", ._, .mov, .memad(.dst0q, .add_size, -8), .tmp1q, ._, ._ }, |
| 58677 | 62114 | } }, |
| 58678 | 62115 | } }) catch |err| switch (err) { |
| 58679 | | error.SelectFailed => return cg.fail("failed to select {s} {} {} {} {}", .{ |
| 62116 | error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{ |
| 58680 | 62117 | @tagName(air_tag), |
| 58681 | | cg.typeOf(bin_op.lhs).fmt(pt), |
| 58682 | | cg.typeOf(bin_op.rhs).fmt(pt), |
| 62118 | lhs_ty.fmt(pt), |
| 58683 | 62119 | ops[0].tracking(cg), |
| 58684 | 62120 | ops[1].tracking(cg), |
| 58685 | 62121 | }), |
| 58686 | 62122 | else => |e| return e, |
| 58687 | 62123 | }; |
| 58688 | | switch (air_tag) { |
| 58689 | | else => unreachable, |
| 58690 | | .shl => res[0].wrapInt(cg) catch |err| switch (err) { |
| 58691 | | error.SelectFailed => return cg.fail("failed to select wrap {} {} {} {}", .{ |
| 58692 | | cg.typeOf(bin_op.lhs).fmt(pt), |
| 58693 | | cg.typeOf(bin_op.rhs).fmt(pt), |
| 58694 | | ops[0].tracking(cg), |
| 58695 | | ops[1].tracking(cg), |
| 58696 | | }), |
| 58697 | | else => |e| return e, |
| 58698 | | }, |
| 58699 | | .shl_exact => {}, |
| 58700 | | } |
| 58701 | 62124 | try res[0].finish(inst, &.{ bin_op.lhs, bin_op.rhs }, &ops, cg); |
| 58702 | 62125 | }, |
| 58703 | 62126 | .not => |air_tag| if (use_old) try cg.airUnOp(inst, air_tag) else { |
| ... | ... | @@ -139465,7 +142888,7 @@ const Select = struct { |
| 139465 | 142888 | temps: [@intFromEnum(Select.Operand.Ref.none)]Temp, |
| 139466 | 142889 | labels: [@intFromEnum(Label._)]struct { |
| 139467 | 142890 | backward: ?Mir.Inst.Index, |
| 139468 | | forward: [1]?Mir.Inst.Index, |
| 142891 | forward: [3]?Mir.Inst.Index, |
| 139469 | 142892 | }, |
| 139470 | 142893 | top: u3, |
| 139471 | 142894 | |
| ... | ... | @@ -140108,7 +143531,7 @@ const Select = struct { |
| 140108 | 143531 | none, |
| 140109 | 143532 | undef, |
| 140110 | 143533 | cc: Condition, |
| 140111 | | imm: u32, |
| 143534 | imm: i32, |
| 140112 | 143535 | ref: Select.Operand.Ref, |
| 140113 | 143536 | reg: Register, |
| 140114 | 143537 | reg_pair: [2]Register, |
| ... | ... | @@ -140198,7 +143621,7 @@ const Select = struct { |
| 140198 | 143621 | .any => .{ try cg.tempAlloc(spec.type), true }, |
| 140199 | 143622 | .none => .{ try cg.tempInit(spec.type, .none), true }, |
| 140200 | 143623 | .undef => .{ try cg.tempInit(spec.type, .undef), true }, |
| 140201 | | .imm => |imm| .{ try cg.tempInit(spec.type, .{ .immediate = imm }), true }, |
| 143624 | .imm => |imm| .{ try cg.tempInit(spec.type, .{ .immediate = @bitCast(@as(i64, imm)) }), true }, |
| 140202 | 143625 | .cc => |cc| .{ try cg.tempInit(spec.type, .{ .eflags = cc }), true }, |
| 140203 | 143626 | .ref => |ref| .{ ref.tempOf(s), false }, |
| 140204 | 143627 | .reg => |reg| .{ try cg.tempInit(spec.type, .{ .register = reg }), true }, |
| ... | ... | @@ -140565,6 +143988,8 @@ const Select = struct { |
| 140565 | 143988 | smin, |
| 140566 | 143989 | smax, |
| 140567 | 143990 | umax, |
| 143991 | smin_shr_src1, |
| 143992 | smax_shr_src1, |
| 140568 | 143993 | umax_shr_src1, |
| 140569 | 143994 | repeat, |
| 140570 | 143995 | }, |
| ... | ... | @@ -140630,8 +144055,9 @@ const Select = struct { |
| 140630 | 144055 | const sub_smin: Adjust = .{ .sign = .neg, .lhs = .smin, .op = .mul, .rhs = .@"1" }; |
| 140631 | 144056 | const add_smax: Adjust = .{ .sign = .pos, .lhs = .smax, .op = .mul, .rhs = .@"1" }; |
| 140632 | 144057 | const add_umax: Adjust = .{ .sign = .pos, .lhs = .umax, .op = .mul, .rhs = .@"1" }; |
| 140633 | | const add_umax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .umax_shr_src1, .op = .mul, .rhs = .@"1" }; |
| 140634 | 144058 | const sub_umax: Adjust = .{ .sign = .neg, .lhs = .umax, .op = .mul, .rhs = .@"1" }; |
| 144059 | const add_smax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .smax_shr_src1, .op = .mul, .rhs = .@"1" }; |
| 144060 | const add_umax_shr_src1: Adjust = .{ .sign = .pos, .lhs = .umax_shr_src1, .op = .mul, .rhs = .@"1" }; |
| 140635 | 144061 | const repeat: Adjust = .{ .sign = .pos, .lhs = .repeat, .op = .mul, .rhs = .@"1" }; |
| 140636 | 144062 | }; |
| 140637 | 144063 | const Ref = enum(u5) { |
| ... | ... | @@ -141410,6 +144836,12 @@ const Select = struct { |
| 141410 | 144836 | .umax => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate( |
| 141411 | 144837 | -%op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 141412 | 144838 | )), |
| 144839 | .smax_shr_src1 => @as(SignedImm, std.math.maxInt(SignedImm)) >> @truncate( |
| 144840 | Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 144841 | ), |
| 144842 | .smin_shr_src1 => @as(SignedImm, std.math.minInt(SignedImm)) >> @truncate( |
| 144843 | Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 144844 | ), |
| 141413 | 144845 | .umax_shr_src1 => @bitCast(@as(UnsignedImm, std.math.maxInt(UnsignedImm)) >> @truncate( |
| 141414 | 144846 | Select.Operand.Ref.src1.valueOf(s).immediate -% op.flags.base.ref.typeOf(s).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu), |
| 141415 | 144847 | )), |