aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86_64/CodeGen.zig1470
1 files changed, 1074 insertions, 396 deletions
diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig
index 24fcf31064..b1b4b68df9 100644
--- a/src/arch/x86_64/CodeGen.zig
+++ b/src/arch/x86_64/CodeGen.zig
@@ -2499,7 +2499,6 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.cmp_lt_errors_len => try cg.airCmpLtErrorsLen(inst),
.bitcast => try cg.airBitCast(inst),
- .intcast => try cg.airIntCast(inst),
.trunc => try cg.airTrunc(inst),
.is_non_null => try cg.airIsNonNull(inst),
.is_null => try cg.airIsNull(inst),
@@ -2589,7 +2588,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leaa(.none, .src0, .add_src0_elem_size_times_src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leaa(.src0, .add_src0_elem_size_times_src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 1 }},
@@ -2598,7 +2597,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 2 }},
@@ -2607,7 +2606,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"2", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
@@ -2616,8 +2615,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"2", .src1), ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 4 }},
@@ -2626,7 +2625,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"4", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
@@ -2635,8 +2634,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .ref = .src1 }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"4", .src1), ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -2646,7 +2645,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"8", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -2656,8 +2655,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .ref = .src1 }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"8", .src1), ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
}, .{
.dst_constraints = .{.po2_elem_size},
@@ -2668,7 +2667,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._l, .sh, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
} },
}, .{
.patterns = &.{
@@ -2678,7 +2677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .add_src0_elem_size), ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
} }) catch |err| switch (err) {
error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
@@ -2705,7 +2704,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leaa(.none, .src0, .sub_src0_elem_size_times_src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leaa(.src0, .sub_src0_elem_size_times_src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 1 }},
@@ -2716,7 +2715,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .neg, .src1p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 2 }},
@@ -2727,7 +2726,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .neg, .src1p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"2", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"2", .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 2 + 1 }},
@@ -2737,9 +2736,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .general_purpose }},
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"2", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"2", .src1), ._, ._ },
.{ ._, ._, .neg, .dst0p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 4 }},
@@ -2750,7 +2749,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .neg, .src1p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"4", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"4", .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .elem_size_is = 4 + 1 }},
@@ -2760,9 +2759,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .general_purpose }},
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"4", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"4", .src1), ._, ._ },
.{ ._, ._, .neg, .dst0p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -2774,7 +2773,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .neg, .src1p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src0, .@"8", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src0, .@"8", .src1), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -2785,9 +2784,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .general_purpose }},
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
- .{ ._, ._, .lea, .dst0p, .leasi(.none, .src1, .@"8", .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leasi(.src1, .@"8", .src1), ._, ._ },
.{ ._, ._, .neg, .dst0p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
}, .{
.dst_constraints = .{.po2_elem_size},
@@ -2799,7 +2798,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.each = .{ .once = &.{
.{ ._, ._l, .sa, .src1p, .sa(.none, .add_log2_src0_elem_size), ._, ._ },
.{ ._, ._, .neg, .src1p, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .src1), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .src1), ._, ._ },
} },
}, .{
.patterns = &.{
@@ -2809,7 +2808,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, .i_, .mul, .dst0p, .src1p, .sa(.none, .sub_src0_elem_size), ._ },
- .{ ._, ._, .lea, .dst0p, .leai(.none, .src0, .dst0), ._, ._ },
+ .{ ._, ._, .lea, .dst0p, .leai(.src0, .dst0), ._, ._ },
} },
} }) catch |err| switch (err) {
error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
@@ -4540,7 +4539,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._dqa, .mov, .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
.{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
.{ ._, .p_, .xor, .dst0x, .src0x, ._, ._ },
.{ ._, .p_, .xor, .tmp2x, .src1x, ._, ._ },
@@ -4678,7 +4677,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
.{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
@@ -4997,7 +4996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
.{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
.{ ._, .vp_q, .cmpgt, .dst0x, .tmp2x, .dst0x, ._ },
@@ -5028,7 +5027,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
.{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
.{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
@@ -5060,7 +5059,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
.{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
.{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
.{ ._, .vp_q, .cmpgt, .dst0y, .tmp2y, .dst0y, ._ },
@@ -5090,7 +5089,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
.{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
@@ -5126,7 +5125,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
.{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
@@ -5162,7 +5161,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
.{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
@@ -5264,7 +5263,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
@@ -5303,7 +5302,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
@@ -5342,7 +5341,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
@@ -5379,7 +5378,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
@@ -8380,7 +8379,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._dqa, .mov, .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._dqa, .mov, .dst0x, .lea(.tmp0x), ._, ._ },
.{ ._, ._dqa, .mov, .tmp2x, .dst0x, ._, ._ },
.{ ._, .p_, .xor, .dst0x, .src1x, ._, ._ },
.{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
@@ -8518,7 +8517,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
.{ ._, ._dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
@@ -8841,7 +8840,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, .vp_, .xor, .dst0x, .tmp2x, .src0x, ._ },
.{ ._, .vp_, .xor, .tmp2x, .tmp2x, .src1x, ._ },
.{ ._, .vp_q, .cmpgt, .dst0x, .dst0x, .tmp2x, ._ },
@@ -8872,7 +8871,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
.{ ._, .p_, .xor, .tmp2x, .src0x, ._, ._ },
.{ ._, .p_, .xor, .tmp3x, .src1x, ._, ._ },
@@ -8904,7 +8903,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
.{ ._, .vp_, .xor, .dst0y, .tmp2y, .src0y, ._ },
.{ ._, .vp_, .xor, .tmp2y, .tmp2y, .src1y, ._ },
.{ ._, .vp_q, .cmpgt, .dst0y, .dst0y, .tmp2y, ._ },
@@ -8934,7 +8933,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .vp_q, .broadcast, .tmp2y, .lea(.tmp0q), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_dqa, .mov, .tmp3y, .memia(.src0y, .tmp0, .add_size), ._, ._ },
.{ ._, .v_dqa, .mov, .tmp4y, .memia(.src1y, .tmp0, .add_size), ._, ._ },
@@ -8970,7 +8969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .v_, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_dqa, .mov, .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
.{ ._, .v_dqa, .mov, .tmp4x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
@@ -9006,7 +9005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.clobbers = .{ .eflags = true },
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._, .movddup, .tmp2x, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, ._, .movddup, .tmp2x, .lea(.tmp0q), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._dqa, .mov, .tmp5x, .tmp2x, ._, ._ },
.{ ._, ._dqa, .mov, .tmp6x, .tmp2x, ._, ._ },
@@ -9108,7 +9107,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
@@ -9147,7 +9146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
@@ -9186,7 +9185,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
@@ -9223,7 +9222,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._c, .cl, ._, ._, ._, ._ },
.{ .@"1:", ._, .mov, .tmp2q, .memia(.src0q, .tmp0, .add_size), ._, ._ },
.{ ._, ._, .sbb, .tmp2q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
- .{ ._, ._, .lea, .tmp0p, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0p, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._c, .de, .tmp1d, ._, ._, ._ },
.{ ._, ._nz, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .lea, .tmp1p, .memia(.src0, .tmp0, .add_size_sub_elem_size), ._, ._ },
@@ -10997,7 +10996,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .p_, .xor, .dst0q, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -11031,7 +11030,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
+ .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
} },
}, .{
.required_features = .{ .sse2, null, null, null },
@@ -11065,7 +11064,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .p_, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .sse, null, null, null },
@@ -11087,7 +11086,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._ps, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .avx2, null, null, null },
@@ -11121,7 +11120,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -11155,7 +11154,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .avx2, null, null, null },
@@ -11812,7 +11811,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .p_, .xor, .dst0q, .lea(.qword, .tmp0), ._, ._ },
+ .{ ._, .p_, .xor, .dst0q, .lea(.tmp0q), ._, ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -11846,7 +11845,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
+ .{ ._, .vp_, .xor, .dst0x, .src0x, .lea(.tmp0x), ._ },
} },
}, .{
.required_features = .{ .sse2, null, null, null },
@@ -11880,7 +11879,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .p_, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, .p_, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .sse, null, null, null },
@@ -11902,7 +11901,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._ps, .xor, .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._ps, .xor, .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .avx2, null, null, null },
@@ -11936,7 +11935,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .vp_, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -11970,7 +11969,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .rc = .sse }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .v_pd, .xor, .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -11993,9 +11992,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2q, .memi(.src0q, .tmp0), ._, ._ },
- .{ ._, ._, .xor, .tmp2q, .leai(.qword, .tmp1, .tmp0), ._, ._ },
+ .{ ._, ._, .xor, .tmp2q, .leai(.tmp1q, .tmp0), ._, ._ },
.{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp2q, ._, ._ },
- .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
.{ ._, ._b, .j, .@"0b", ._, ._, ._ },
} },
@@ -12019,9 +12018,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ ._, ._, .lea, .tmp1p, .mem(.tmp3), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .memi(.src0d, .tmp0), ._, ._ },
- .{ ._, ._, .xor, .tmp2d, .leai(.dword, .tmp1, .tmp0), ._, ._ },
+ .{ ._, ._, .xor, .tmp2d, .leai(.tmp1d, .tmp0), ._, ._ },
.{ ._, ._, .mov, .memi(.dst0d, .tmp0), .tmp2d, ._, ._ },
- .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 4), ._, ._ },
.{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
.{ ._, ._b, .j, .@"0b", ._, ._, ._ },
} },
@@ -13161,7 +13160,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", .lzcnt, null, null },
@@ -13190,7 +13189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
@@ -13220,7 +13219,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
- .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .dst0d, ._, ._, ._ },
} },
}, .{
@@ -13250,7 +13249,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
- .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .dst0d, ._, ._, ._ },
} },
}, .{
@@ -13281,7 +13280,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", .lzcnt, null, null },
@@ -13310,7 +13309,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", .bsf_bsr_0_clobbers_result, null, null },
@@ -13340,7 +13339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .mov, .dst0d, .si(-1), ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
- .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .dst0d, ._, ._, ._ },
} },
}, .{
@@ -13370,7 +13369,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
- .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .dst0d, ._, ._, ._ },
} },
}, .{
@@ -13404,7 +13403,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", .lzcnt, null, null },
@@ -13436,7 +13435,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -13467,7 +13466,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
- .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .dst0d, ._, ._, ._ },
} },
}, .{
@@ -13501,7 +13500,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", .lzcnt, null, null },
@@ -13533,7 +13532,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
.{ .@"0:", ._, .neg, .tmp0d, ._, ._, ._ },
- .{ ._, ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .add_src0_bit_size, -64), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -13564,7 +13563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .sub, .tmp0d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
- .{ .@"0:", ._, .lea, .dst0d, .leasiad(.none, .dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"0:", ._, .lea, .dst0d, .leasiad(.dst0, .@"8", .tmp0, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .dst0d, ._, ._, ._ },
} },
}, .{
@@ -14581,7 +14580,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
@@ -14590,9 +14589,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14621,7 +14620,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
@@ -14629,9 +14628,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14660,17 +14659,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
.{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
- .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .tmp3b, ._, ._, ._ },
.{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14699,7 +14698,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
@@ -14708,9 +14707,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14739,7 +14738,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
@@ -14747,9 +14746,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14778,17 +14777,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
.{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
- .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .tmp3b, ._, ._, ._ },
.{ ._, ._, .mov, .memia(.dst0b, .tmp0, .add_len), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14817,7 +14816,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
@@ -14826,9 +14825,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14857,7 +14856,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
@@ -14865,9 +14864,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14896,17 +14895,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-16, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
.{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
- .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
.{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14935,7 +14934,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .xor, .tmp4d, .tmp4d, ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
@@ -14944,9 +14943,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -14975,7 +14974,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._, .lzcnt, .tmp4q, .tmp3q, ._, ._ },
.{ ._, ._nc, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
@@ -14983,9 +14982,9 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
.{ .@"1:", ._, .neg, .tmp2d, ._, ._, ._ },
- .{ ._, ._, .lea, .tmp3d, .leasiad(.none, .tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
+ .{ ._, ._, .lea, .tmp3d, .leasiad(.tmp4, .@"8", .tmp2, .add_src0_bit_size, -64), ._, ._ },
.{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -15014,17 +15013,17 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .lea, .tmp1q, .mem(.src0), ._, ._ },
.{ .@"0:", ._, .mov, .tmp2d, .sia(-8, .none, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .mov, .tmp3q, .ua(.src0, .add_umax), ._, ._ },
- .{ .@"1:", ._, .@"and", .tmp3q, .leai(.qword, .tmp1, .tmp2), ._, ._ },
+ .{ .@"1:", ._, .@"and", .tmp3q, .leai(.tmp1q, .tmp2), ._, ._ },
.{ ._, ._r, .bs, .tmp3q, .tmp3q, ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3q, .si(-1), ._, ._ },
.{ ._, ._, .sub, .tmp2d, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .xor, .tmp2d, .tmp2d, ._, ._ },
- .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.none, .tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
+ .{ .@"1:", ._, .lea, .tmp3d, .leasiad(.tmp3, .@"8", .tmp2, .sub_src0_bit_size, 1), ._, ._ },
.{ ._, ._, .neg, .tmp3d, ._, ._, ._ },
.{ ._, ._, .mov, .memsia(.dst0w, .@"2", .tmp0, .add_2_len), .tmp3w, ._, ._ },
- .{ ._, ._, .lea, .tmp1q, .leaa(.none, .tmp1, .add_src0_elem_size), ._, ._ },
+ .{ ._, ._, .lea, .tmp1q, .leaa(.tmp1, .add_src0_elem_size), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(1), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -15524,7 +15523,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15536,7 +15535,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
.{ ._, ._, .not, .tmp2d, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0d, .tmp1), .tmp2d, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15570,7 +15569,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .ackssw, .tmp3y, .tmp3y, .tmp3y, ._ },
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15583,7 +15582,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3y, ._, ._ },
.{ ._, ._, .not, .tmp2d, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15616,7 +15615,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_d, .cmpeq, .tmp3y, .tmp3y, .memia(.src1y, .tmp0, .add_size), ._ },
.{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15628,7 +15627,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_ps, .movmsk, .tmp2d, .tmp3y, ._, ._ },
.{ ._, ._, .not, .tmp2b, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15663,7 +15662,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_pd, .movmsk, .tmp3d, .tmp4y, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -15687,7 +15686,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -15730,7 +15729,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .cmpeq, .tmp3x, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._ },
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15742,7 +15741,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .not, .tmp2d, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15776,7 +15775,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .ackssw, .tmp3x, .tmp3x, .tmp3x, ._ },
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15789,7 +15788,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .vp_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .not, .tmp2b, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15824,7 +15823,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -15848,7 +15847,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -15893,7 +15892,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -15917,7 +15916,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -15960,7 +15959,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .cmpeq, .tmp3x, .memia(.src1x, .tmp0, .add_size), ._, ._ },
.{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -15972,7 +15971,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .not, .tmp2d, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0w, .tmp1), .tmp2w, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -16006,7 +16005,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .ackssw, .tmp3x, .tmp3x, ._, ._ },
.{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -16019,7 +16018,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .movmsk, .tmp2d, .tmp3x, ._, ._ },
.{ ._, ._, .not, .tmp2b, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -16054,7 +16053,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._ps, .movmsk, .tmp3d, .tmp4x, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -16078,7 +16077,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp3b, .si(0b1111), ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -16123,7 +16122,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._pd, .movmsk, .tmp3d, .tmp4x, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -16147,7 +16146,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp3b, .si(0b11), ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -16190,7 +16189,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .cmpeq, .tmp3q, .memia(.src1q, .tmp0, .add_size), ._, ._ },
.{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -16202,7 +16201,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .movmsk, .tmp2d, .tmp3q, ._, ._ },
.{ ._, ._, .not, .tmp2b, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0b, .tmp1), .tmp2b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(8), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
},
@@ -16239,7 +16238,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
.{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
@@ -16265,7 +16264,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp4b, .si(0b1111), ._, ._ },
.{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
@@ -16313,7 +16312,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_b, .movmsk, .tmp4d, .tmp5q, ._, ._ },
.{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
@@ -16340,7 +16339,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .xor, .tmp4b, .si(0b11), ._, ._ },
.{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
@@ -17281,8 +17280,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.ne => .neq,
}) },
.{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -17319,7 +17318,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.ne => .neq,
}) },
.{ ._, .v_ps, .movmsk, .tmp4d, .tmp2y, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
.{ ._, ._c, .in, .tmp1p, ._, ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
@@ -17642,7 +17641,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
.{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
.{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
- .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
@@ -17751,7 +17750,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
.{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
.{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
- .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
@@ -17863,7 +17862,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp6d, .tmp0d, ._, ._ },
.{ ._, ._l, .sh, .tmp7q, .tmp6b, ._, ._ },
.{ ._, ._, .@"or", .tmp1q, .tmp7q, ._, ._ },
- .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp0d, .si(0b111111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp5d, .tmp0d, ._, ._ },
@@ -17966,8 +17965,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.ne => .neq,
}) },
.{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18003,7 +18002,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.ne => .neq,
}) },
.{ ._, .v_ps, .movmsk, .tmp3d, .tmp2y, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
.{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
@@ -18048,8 +18047,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .p_w, .ackssd, .tmp2x, .tmp3x, ._, ._ },
.{ ._, .p_b, .ackssw, .tmp2x, .tmp2x, ._, ._ },
.{ ._, .p_b, .movmsk, .tmp4d, .tmp2x, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18094,8 +18093,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
.{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
.{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18134,8 +18133,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._ps, .movmsk, .tmp4d, .tmp2x, ._, ._ },
.{ ._, ._l, .sh, .tmp4b, .ui(4), ._, ._ },
.{ ._, ._, .@"or", .tmp3b, .tmp4b, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
.{ .@"1:", ._ps, .mova, .tmp2x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
.{ ._, ._ps, .cmp, .tmp2x, .memia(.src1x, .tmp0, .add_size), .vp(switch (cc) {
else => unreachable,
@@ -18145,7 +18144,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._ps, .movmsk, .tmp3d, .tmp2x, ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(32), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp3b, ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp3b, ._, ._ },
} },
}, .{
.required_features = .{ .avx, .slow_incdec, null, null },
@@ -18188,8 +18187,8 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
.{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1p, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18234,7 +18233,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_pd, .movmsk, .tmp5d, .tmp3y, ._, ._ },
.{ ._, ._l, .sh, .tmp5b, .ui(4), ._, ._ },
.{ ._, ._, .@"or", .tmp4b, .tmp5b, ._, ._ },
- .{ ._, ._, .mov, .lea(.byte, .tmp1), .tmp4b, ._, ._ },
+ .{ ._, ._, .mov, .lea(.tmp1b), .tmp4b, ._, ._ },
.{ ._, ._c, .in, .tmp1q, ._, ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(64), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
@@ -18274,7 +18273,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, .v_pd, .movmsk, .tmp4d, .tmp3y, ._, ._ },
.{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 4), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 4), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
@@ -18323,7 +18322,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._pd, .movmsk, .tmp4d, .tmp3x, ._, ._ },
.{ ._, ._l, .ro, .tmp4b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp4b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 2), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 2), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp4d, .tmp1d, ._, ._ },
@@ -18382,7 +18381,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
}, .tmp3b, .tmp4b, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -18550,7 +18549,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
}, .tmp3b, .tmp4b, ._, ._ },
.{ ._, ._l, .ro, .tmp3b, .tmp1b, ._, ._ },
.{ ._, ._, .@"or", .tmp2b, .tmp3b, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp3d, .tmp1d, ._, ._ },
@@ -18714,7 +18713,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
.{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
.{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18804,7 +18803,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
.{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
.{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18894,7 +18893,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
.{ ._, ._l, .sh, .tmp7d, .tmp6b, ._, ._ },
.{ ._, ._, .@"or", .dst0d, .tmp7d, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .add, .tmp0p, .si(16), ._, ._ },
.{ ._, ._nc, .j, .@"0b", ._, ._, ._ },
} },
@@ -18983,7 +18982,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
.{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
@@ -19091,7 +19090,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
.{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
@@ -19199,7 +19198,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .mov, .tmp7d, .tmp1d, ._, ._ },
.{ ._, ._l, .sh, .tmp8q, .tmp7b, ._, ._ },
.{ ._, ._, .@"or", .tmp2q, .tmp8q, ._, ._ },
- .{ ._, ._, .lea, .tmp1d, .lead(.none, .tmp1, 1), ._, ._ },
+ .{ ._, ._, .lea, .tmp1d, .lead(.tmp1, 1), ._, ._ },
.{ ._, ._, .@"test", .tmp1d, .si(0b111111), ._, ._ },
.{ ._, ._nz, .j, .@"1f", ._, ._, ._ },
.{ ._, ._, .mov, .tmp6d, .tmp1d, ._, ._ },
@@ -20245,7 +20244,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.{ ._, ._, .sbb, .tmp4q, .tmp2q, ._, ._ },
.{ ._, ._c, .set, .tmp3b, ._, ._, ._ },
.{ ._, ._, .mov, .memi(.dst0q, .tmp0), .tmp4q, ._, ._ },
- .{ ._, ._, .lea, .tmp0d, .lead(.none, .tmp0, 8), ._, ._ },
+ .{ ._, ._, .lea, .tmp0d, .lead(.tmp0, 8), ._, ._ },
.{ ._, ._, .sub, .tmp1d, .si(8), ._, ._ },
.{ ._, ._a, .j, .@"1b", ._, ._, ._ },
.{ ._, ._, .cmp, .tmp0d, .sa(.src0, .add_unaligned_size), ._, ._ },
@@ -20271,7 +20270,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
+ .{ ._, .v_ps, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
} },
}, .{
.required_features = .{ .sse, null, null, null },
@@ -20293,7 +20292,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -20315,7 +20314,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .v_ps, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -20337,7 +20336,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
+ .{ ._, .v_pd, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
} },
}, .{
.required_features = .{ .sse2, null, null, null },
@@ -20359,7 +20358,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._pd, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._pd, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -20381,7 +20380,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .x87, null, null, null },
@@ -20427,7 +20426,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.xword, .tmp0), ._ },
+ .{ ._, .vp_, .@"and", .dst0x, .src0x, .lea(.tmp0x), ._ },
} },
}, .{
.required_features = .{ .sse2, null, null, null },
@@ -20449,7 +20448,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .p_, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, .p_, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .sse, null, null, null },
@@ -20471,7 +20470,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .ref = .src0 }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._ps, .@"and", .dst0x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._ps, .@"and", .dst0x, .lea(.tmp0x), ._, ._ },
} },
}, .{
.required_features = .{ .avx2, null, null, null },
@@ -20493,7 +20492,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .vp_, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -20515,7 +20514,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.{ .mut_rc = .{ .ref = .src0, .rc = .sse } }},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.yword, .tmp0), ._ },
+ .{ ._, .v_pd, .@"and", .dst0y, .src0y, .lea(.tmp0y), ._ },
} },
}, .{
.required_features = .{ .avx, null, null, null },
@@ -20537,7 +20536,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_ps, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
+ .{ ._, .v_ps, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_ps, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
.{ ._, .v_ps, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
@@ -20564,7 +20563,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
.{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
@@ -20592,7 +20591,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
+ .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
.{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
@@ -20619,7 +20618,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._pd, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._pd, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._pd, .mova, .tmp3x, .tmp2x, ._, ._ },
.{ ._, ._pd, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
@@ -20647,7 +20646,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_dqa, .mov, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
+ .{ ._, .v_dqa, .mov, .tmp2y, .lea(.tmp0y), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .vp_, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
.{ ._, .v_dqa, .mov, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
@@ -20674,7 +20673,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, .v_pd, .mova, .tmp2y, .lea(.yword, .tmp0), ._, ._ },
+ .{ ._, .v_pd, .mova, .tmp2y, .lea(.tmp0y), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", .v_pd, .@"and", .tmp3y, .tmp2y, .memia(.src0y, .tmp0, .add_size), ._ },
.{ ._, .v_pd, .mova, .memia(.dst0y, .tmp0, .add_size), .tmp3y, ._, ._ },
@@ -20701,7 +20700,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._dqa, .mov, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._dqa, .mov, .tmp2x, .lea(.tmp0x), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._dqa, .mov, .tmp3x, .tmp2x, ._, ._ },
.{ ._, .p_, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
@@ -20729,7 +20728,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
.dst_temps = .{.mem},
.each = .{ .once = &.{
.{ ._, ._, .lea, .tmp0p, .mem(.tmp1), ._, ._ },
- .{ ._, ._ps, .mova, .tmp2x, .lea(.xword, .tmp0), ._, ._ },
+ .{ ._, ._ps, .mova, .tmp2x, .lea(.tmp0x), ._, ._ },
.{ ._, ._, .mov, .tmp0p, .sa(.src0, .sub_size), ._, ._ },
.{ .@"0:", ._ps, .mova, .tmp3x, .tmp2x, ._, ._ },
.{ ._, ._ps, .@"and", .tmp3x, .memia(.src0x, .tmp0, .add_size), ._, ._ },
@@ -24537,6 +24536,683 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
};
try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
},
+ .intcast => |air_tag| if (use_old) try cg.airIntCast(inst) else fallback: {
+ const ty_op = air_datas[@intFromEnum(inst)].ty_op;
+ const dst_ty = ty_op.ty.toType();
+ if (dst_ty.isVector(zcu)) break :fallback try cg.airIntCast(inst);
+ const src_ty = cg.typeOf(ty_op.operand);
+ var ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
+ var res: [1]Temp = undefined;
+ cg.select(&res, &.{dst_ty}, &ops, if (dst_ty.scalarType(zcu).abiSize(zcu) <= src_ty.scalarType(zcu).abiSize(zcu)) comptime &.{ .{
+ .dst_constraints = .{.{ .int = .dword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .dst_constraints = .{.{ .int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0q, .src0q, ._, ._ },
+ } },
+ }, .{
+ .dst_constraints = .{.{ .int = .byte }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0b, .mem(.src0b), ._, ._ },
+ } },
+ }, .{
+ .dst_constraints = .{.{ .int = .word }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0w, .mem(.src0w), ._, ._ },
+ } },
+ }, .{
+ .dst_constraints = .{.{ .int = .dword }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0d, .mem(.src0d), ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .dst_constraints = .{.{ .int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0q, .mem(.src0q), ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .usize, .kind = .{ .reg = .rsi } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sa(.dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
+ } },
+ } } else comptime &.{ .{
+ .src_constraints = .{ .{ .signed_int = .byte }, .any },
+ .dst_constraints = .{.{ .signed_int = .dword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .dst0d, .src0b, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .int = .byte }, .any },
+ .dst_constraints = .{.{ .int = .dword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .byte }, .any },
+ .dst_constraints = .{.{ .signed_int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .dst0q, .src0b, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .byte }, .any },
+ .dst_constraints = .{.{ .int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .dst0d, .src0b, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .byte }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .tmp0q, .src0b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .byte }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .signed_int = .byte }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i32, .kind = .{ .reg = .eax } },
+ .{ .type = .usize, .kind = .{ .reg = .edi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .tmp0d, .src0b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sd, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .int = .byte }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u32, .kind = .{ .reg = .eax } },
+ .{ .type = .usize, .kind = .{ .reg = .edi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .tmp0d, .src0b, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sd, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
+ .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .signed_int = .word }, .any },
+ .dst_constraints = .{.{ .signed_int = .dword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .dst0d, .src0w, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .int = .word }, .any },
+ .dst_constraints = .{.{ .int = .dword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .word }, .any },
+ .dst_constraints = .{.{ .signed_int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .dst0q, .src0w, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .word }, .any },
+ .dst_constraints = .{.{ .int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .dst0d, .src0w, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .word }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .tmp0q, .src0w, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .word }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .signed_int = .word }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i32, .kind = .{ .reg = .eax } },
+ .{ .type = .usize, .kind = .{ .reg = .edi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movsx, .tmp0d, .src0w, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sd, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .int = .word }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u32, .kind = .{ .reg = .eax } },
+ .{ .type = .usize, .kind = .{ .reg = .edi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .movzx, .tmp0d, .src0w, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sd, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
+ .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .dword }, .any },
+ .dst_constraints = .{.{ .signed_int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._d, .movsx, .dst0q, .src0d, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .dword }, .any },
+ .dst_constraints = .{.{ .int = .qword }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .dst_temps = .{.{ .rc = .general_purpose }},
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .dst0d, .src0d, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .dword }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._d, .movsx, .tmp0q, .src0d, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .dword }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .signed_int = .dword }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .dword, .is = .dword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i32, .kind = .{ .reg = .eax } },
+ .{ .type = .usize, .kind = .{ .reg = .edi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sd, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0d, .ui(31), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .src_constraints = .{ .{ .int = .dword }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .dword, .is = .dword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u32, .kind = .{ .reg = .eax } },
+ .{ .type = .usize, .kind = .{ .reg = .edi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .tmp0d, .src0d, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sd, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_4), ._, ._ },
+ .{ ._, .@"rep _sd", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_int = .qword }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .i64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp0q, .ui(63), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .int = .qword }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .mem, .none } },
+ .{ .src = .{ .to_gpr, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .u64, .kind = .{ .reg = .rax } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .mov, .tmp0q, .src0q, ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp0d, .tmp0d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .dst0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }, .any },
+ .dst_constraints = .{.{ .signed_remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .usize, .kind = .{ .reg = .rsi } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .{ .type = .i64, .kind = .{ .reg = .rax } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sia(-1, .src0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
+ .{ ._, ._sq, .lod, ._, ._, ._, ._ },
+ .{ ._, ._sq, .sto, ._, ._, ._, ._ },
+ .{ ._, ._r, .sa, .tmp3q, .ui(63), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ }, .{
+ .required_features = .{ .@"64bit", null, null, null },
+ .src_constraints = .{ .{ .remainder_int = .{ .of = .qword, .is = .qword } }, .any },
+ .dst_constraints = .{.{ .remainder_int = .{ .of = .qword, .is = .qword } }},
+ .patterns = &.{
+ .{ .src = .{ .to_mem, .none } },
+ },
+ .extra_temps = .{
+ .{ .type = .usize, .kind = .{ .reg = .rsi } },
+ .{ .type = .usize, .kind = .{ .reg = .rdi } },
+ .{ .type = .u32, .kind = .{ .reg = .ecx } },
+ .{ .type = .u64, .kind = .{ .reg = .rax } },
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ .unused,
+ },
+ .dst_temps = .{.mem},
+ .clobbers = .{ .eflags = true },
+ .each = .{ .once = &.{
+ .{ ._, ._, .lea, .tmp0p, .mem(.src0), ._, ._ },
+ .{ ._, ._, .lea, .tmp1p, .mem(.dst0), ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sa(.src0, .add_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .mov, ._, ._, ._, ._ },
+ .{ ._, ._, .xor, .tmp3d, .tmp3d, ._, ._ },
+ .{ ._, ._, .mov, .tmp2d, .sa2(.dst0, .src0, .add_delta_size_div_8), ._, ._ },
+ .{ ._, .@"rep _sq", .sto, ._, ._, ._, ._ },
+ } },
+ } }) catch |err| switch (err) {
+ error.SelectFailed => return cg.fail("failed to select {s} {} {} {}", .{
+ @tagName(air_tag),
+ dst_ty.fmt(pt),
+ src_ty.fmt(pt),
+ ops[0].tracking(cg),
+ }),
+ else => |e| return e,
+ };
+ try res[0].finish(inst, &.{ty_op.operand}, &ops, cg);
+ },
.optional_payload_ptr => if (use_old) try cg.airOptionalPayloadPtr(inst) else {
const ty_op = air_datas[@intFromEnum(inst)].ty_op;
const ops = try cg.tempsFromOperands(inst, .{ty_op.operand});
@@ -24716,7 +25392,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .movzx, .dst0d, .leaa(.byte, .src0, .add_src0_elem_size_times_src1), ._, ._ },
+ .{ ._, ._, .movzx, .dst0d, .leaa(.src0b, .add_src0_elem_size_times_src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .int = .byte }},
@@ -24725,7 +25401,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .movzx, .dst0d, .leai(.byte, .src0, .src1), ._, ._ },
+ .{ ._, ._, .movzx, .dst0d, .leai(.src0b, .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .int = .word }},
@@ -24734,7 +25410,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .movzx, .dst0d, .leaa(.word, .src0, .add_src0_elem_size_times_src1), ._, ._ },
+ .{ ._, ._, .movzx, .dst0d, .leaa(.src0w, .add_src0_elem_size_times_src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .int = .word }},
@@ -24743,7 +25419,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .movzx, .dst0d, .leasi(.word, .src0, .@"2", .src1), ._, ._ },
+ .{ ._, ._, .movzx, .dst0d, .leasi(.src0w, .@"2", .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .int = .dword }},
@@ -24752,7 +25428,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .mov, .dst0d, .leaa(.dword, .src0, .add_src0_elem_size_times_src1), ._, ._ },
+ .{ ._, ._, .mov, .dst0d, .leaa(.src0d, .add_src0_elem_size_times_src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .int = .dword }},
@@ -24761,7 +25437,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .mov, .dst0d, .leasi(.dword, .src0, .@"4", .src1), ._, ._ },
+ .{ ._, ._, .mov, .dst0d, .leasi(.src0d, .@"4", .src1), ._, ._ },
} },
}, .{
.dst_constraints = .{.{ .int = .qword }},
@@ -24770,7 +25446,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .mov, .dst0q, .leaa(.qword, .src0, .add_src0_elem_size_times_src1), ._, ._ },
+ .{ ._, ._, .mov, .dst0q, .leaa(.src0q, .add_src0_elem_size_times_src1), ._, ._ },
} },
}, .{
.required_features = .{ .@"64bit", null, null, null },
@@ -24780,7 +25456,7 @@ fn genBody(cg: *CodeGen, body: []const Air.Inst.Index) InnerError!void {
},
.dst_temps = .{.{ .rc = .general_purpose }},
.each = .{ .once = &.{
- .{ ._, ._, .mov, .dst0q, .leasi(.qword, .src0, .@"8", .src1), ._, ._ },
+ .{ ._, ._, .mov, .dst0q, .leasi(.src0q, .@"8", .src1), ._, ._ },
} },
} }) catch |err| switch (err) {
error.SelectFailed => {
@@ -45924,16 +46600,19 @@ const Select = struct {
};
const Label = enum { @"0:", @"1:", @"2:", @"_", pseudo };
const Operand = struct {
- tag: Tag,
+ flags: packed struct(u16) {
+ tag: Tag,
+ adjust: Adjust = .none,
+ unused: u4 = 0,
+ },
base: Ref.Sized = .none,
index: packed struct(u6) {
ref: Ref,
- scale: Memory.Scale,
- } = .{ .ref = .none, .scale = .@"1" },
- adjust: Adjust = .none,
+ scale: Memory.Scale = .@"1",
+ } = .{ .ref = .none },
imm: i32 = 0,
- const Tag = enum {
+ const Tag = enum(u3) {
none,
backward_label,
forward_label,
@@ -45943,13 +46622,14 @@ const Select = struct {
lea,
mem,
};
- const Adjust = packed struct(u8) {
+ const Adjust = packed struct(u9) {
sign: enum(u1) { neg, pos },
- lhs: enum(u4) {
+ lhs: enum(u5) {
none,
ptr_size,
ptr_bit_size,
size,
+ delta_size,
size_sub_elem_size,
unaligned_size,
bit_size,
@@ -45970,10 +46650,12 @@ const Select = struct {
const sub_ptr_size: Adjust = .{ .sign = .neg, .lhs = .ptr_size, .op = .mul, .rhs = .@"1" };
const add_ptr_bit_size: Adjust = .{ .sign = .pos, .lhs = .ptr_bit_size, .op = .mul, .rhs = .@"1" };
const add_size: Adjust = .{ .sign = .pos, .lhs = .size, .op = .mul, .rhs = .@"1" };
+ const add_size_div_4: Adjust = .{ .sign = .pos, .lhs = .size, .op = .div, .rhs = .@"4" };
const add_size_div_8: Adjust = .{ .sign = .pos, .lhs = .size, .op = .div, .rhs = .@"8" };
const sub_size_div_8: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"8" };
const sub_size_div_4: Adjust = .{ .sign = .neg, .lhs = .size, .op = .div, .rhs = .@"4" };
const sub_size: Adjust = .{ .sign = .neg, .lhs = .size, .op = .mul, .rhs = .@"1" };
+ const add_delta_size_div_8: Adjust = .{ .sign = .pos, .lhs = .delta_size, .op = .div, .rhs = .@"8" };
const add_size_sub_elem_size: Adjust = .{ .sign = .pos, .lhs = .size_sub_elem_size, .op = .mul, .rhs = .@"1" };
const add_unaligned_size: Adjust = .{ .sign = .pos, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
const sub_unaligned_size: Adjust = .{ .sign = .neg, .lhs = .unaligned_size, .op = .mul, .rhs = .@"1" };
@@ -46147,298 +46829,293 @@ const Select = struct {
}
};
- const @"_": Select.Operand = .{ .tag = .none };
-
- const @"0b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp0, .size = .none } };
- const @"0f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp0, .size = .none } };
- const @"1b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp1, .size = .none } };
- const @"1f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp1, .size = .none } };
- const @"2b": Select.Operand = .{ .tag = .backward_label, .base = .{ .ref = .tmp2, .size = .none } };
- const @"2f": Select.Operand = .{ .tag = .forward_label, .base = .{ .ref = .tmp2, .size = .none } };
-
- const tmp0b: Select.Operand = .{ .tag = .ref, .base = .tmp0b };
- const tmp0w: Select.Operand = .{ .tag = .ref, .base = .tmp0w };
- const tmp0d: Select.Operand = .{ .tag = .ref, .base = .tmp0d };
- const tmp0p: Select.Operand = .{ .tag = .ref, .base = .tmp0p };
- const tmp0q: Select.Operand = .{ .tag = .ref, .base = .tmp0q };
- const tmp0t: Select.Operand = .{ .tag = .ref, .base = .tmp0t };
- const tmp0x: Select.Operand = .{ .tag = .ref, .base = .tmp0x };
- const tmp0y: Select.Operand = .{ .tag = .ref, .base = .tmp0y };
-
- const tmp1b: Select.Operand = .{ .tag = .ref, .base = .tmp1b };
- const tmp1w: Select.Operand = .{ .tag = .ref, .base = .tmp1w };
- const tmp1d: Select.Operand = .{ .tag = .ref, .base = .tmp1d };
- const tmp1p: Select.Operand = .{ .tag = .ref, .base = .tmp1p };
- const tmp1q: Select.Operand = .{ .tag = .ref, .base = .tmp1q };
- const tmp1t: Select.Operand = .{ .tag = .ref, .base = .tmp1t };
- const tmp1x: Select.Operand = .{ .tag = .ref, .base = .tmp1x };
- const tmp1y: Select.Operand = .{ .tag = .ref, .base = .tmp1y };
-
- const tmp2b: Select.Operand = .{ .tag = .ref, .base = .tmp2b };
- const tmp2w: Select.Operand = .{ .tag = .ref, .base = .tmp2w };
- const tmp2d: Select.Operand = .{ .tag = .ref, .base = .tmp2d };
- const tmp2p: Select.Operand = .{ .tag = .ref, .base = .tmp2p };
- const tmp2q: Select.Operand = .{ .tag = .ref, .base = .tmp2q };
- const tmp2t: Select.Operand = .{ .tag = .ref, .base = .tmp2t };
- const tmp2x: Select.Operand = .{ .tag = .ref, .base = .tmp2x };
- const tmp2y: Select.Operand = .{ .tag = .ref, .base = .tmp2y };
-
- const tmp3b: Select.Operand = .{ .tag = .ref, .base = .tmp3b };
- const tmp3w: Select.Operand = .{ .tag = .ref, .base = .tmp3w };
- const tmp3d: Select.Operand = .{ .tag = .ref, .base = .tmp3d };
- const tmp3p: Select.Operand = .{ .tag = .ref, .base = .tmp3p };
- const tmp3q: Select.Operand = .{ .tag = .ref, .base = .tmp3q };
- const tmp3t: Select.Operand = .{ .tag = .ref, .base = .tmp3t };
- const tmp3x: Select.Operand = .{ .tag = .ref, .base = .tmp3x };
- const tmp3y: Select.Operand = .{ .tag = .ref, .base = .tmp3y };
-
- const tmp4b: Select.Operand = .{ .tag = .ref, .base = .tmp4b };
- const tmp4w: Select.Operand = .{ .tag = .ref, .base = .tmp4w };
- const tmp4d: Select.Operand = .{ .tag = .ref, .base = .tmp4d };
- const tmp4p: Select.Operand = .{ .tag = .ref, .base = .tmp4p };
- const tmp4q: Select.Operand = .{ .tag = .ref, .base = .tmp4q };
- const tmp4t: Select.Operand = .{ .tag = .ref, .base = .tmp4t };
- const tmp4x: Select.Operand = .{ .tag = .ref, .base = .tmp4x };
- const tmp4y: Select.Operand = .{ .tag = .ref, .base = .tmp4y };
-
- const tmp5b: Select.Operand = .{ .tag = .ref, .base = .tmp5b };
- const tmp5w: Select.Operand = .{ .tag = .ref, .base = .tmp5w };
- const tmp5d: Select.Operand = .{ .tag = .ref, .base = .tmp5d };
- const tmp5p: Select.Operand = .{ .tag = .ref, .base = .tmp5p };
- const tmp5q: Select.Operand = .{ .tag = .ref, .base = .tmp5q };
- const tmp5t: Select.Operand = .{ .tag = .ref, .base = .tmp5t };
- const tmp5x: Select.Operand = .{ .tag = .ref, .base = .tmp5x };
- const tmp5y: Select.Operand = .{ .tag = .ref, .base = .tmp5y };
-
- const tmp6b: Select.Operand = .{ .tag = .ref, .base = .tmp6b };
- const tmp6w: Select.Operand = .{ .tag = .ref, .base = .tmp6w };
- const tmp6d: Select.Operand = .{ .tag = .ref, .base = .tmp6d };
- const tmp6p: Select.Operand = .{ .tag = .ref, .base = .tmp6p };
- const tmp6q: Select.Operand = .{ .tag = .ref, .base = .tmp6q };
- const tmp6t: Select.Operand = .{ .tag = .ref, .base = .tmp6t };
- const tmp6x: Select.Operand = .{ .tag = .ref, .base = .tmp6x };
- const tmp6y: Select.Operand = .{ .tag = .ref, .base = .tmp6y };
-
- const tmp7b: Select.Operand = .{ .tag = .ref, .base = .tmp7b };
- const tmp7w: Select.Operand = .{ .tag = .ref, .base = .tmp7w };
- const tmp7d: Select.Operand = .{ .tag = .ref, .base = .tmp7d };
- const tmp7p: Select.Operand = .{ .tag = .ref, .base = .tmp7p };
- const tmp7q: Select.Operand = .{ .tag = .ref, .base = .tmp7q };
- const tmp7t: Select.Operand = .{ .tag = .ref, .base = .tmp7t };
- const tmp7x: Select.Operand = .{ .tag = .ref, .base = .tmp7x };
- const tmp7y: Select.Operand = .{ .tag = .ref, .base = .tmp7y };
-
- const tmp8b: Select.Operand = .{ .tag = .ref, .base = .tmp8b };
- const tmp8w: Select.Operand = .{ .tag = .ref, .base = .tmp8w };
- const tmp8d: Select.Operand = .{ .tag = .ref, .base = .tmp8d };
- const tmp8p: Select.Operand = .{ .tag = .ref, .base = .tmp8p };
- const tmp8q: Select.Operand = .{ .tag = .ref, .base = .tmp8q };
- const tmp8t: Select.Operand = .{ .tag = .ref, .base = .tmp8t };
- const tmp8x: Select.Operand = .{ .tag = .ref, .base = .tmp8x };
- const tmp8y: Select.Operand = .{ .tag = .ref, .base = .tmp8y };
-
- const dst0b: Select.Operand = .{ .tag = .ref, .base = .dst0b };
- const dst0w: Select.Operand = .{ .tag = .ref, .base = .dst0w };
- const dst0d: Select.Operand = .{ .tag = .ref, .base = .dst0d };
- const dst0p: Select.Operand = .{ .tag = .ref, .base = .dst0p };
- const dst0q: Select.Operand = .{ .tag = .ref, .base = .dst0q };
- const dst0t: Select.Operand = .{ .tag = .ref, .base = .dst0t };
- const dst0x: Select.Operand = .{ .tag = .ref, .base = .dst0x };
- const dst0y: Select.Operand = .{ .tag = .ref, .base = .dst0y };
-
- const src0b: Select.Operand = .{ .tag = .ref, .base = .src0b };
- const src0w: Select.Operand = .{ .tag = .ref, .base = .src0w };
- const src0d: Select.Operand = .{ .tag = .ref, .base = .src0d };
- const src0p: Select.Operand = .{ .tag = .ref, .base = .src0p };
- const src0q: Select.Operand = .{ .tag = .ref, .base = .src0q };
- const src0t: Select.Operand = .{ .tag = .ref, .base = .src0t };
- const src0x: Select.Operand = .{ .tag = .ref, .base = .src0x };
- const src0y: Select.Operand = .{ .tag = .ref, .base = .src0y };
-
- const src1b: Select.Operand = .{ .tag = .ref, .base = .src1b };
- const src1w: Select.Operand = .{ .tag = .ref, .base = .src1w };
- const src1d: Select.Operand = .{ .tag = .ref, .base = .src1d };
- const src1p: Select.Operand = .{ .tag = .ref, .base = .src1p };
- const src1q: Select.Operand = .{ .tag = .ref, .base = .src1q };
- const src1t: Select.Operand = .{ .tag = .ref, .base = .src1t };
- const src1x: Select.Operand = .{ .tag = .ref, .base = .src1x };
- const src1y: Select.Operand = .{ .tag = .ref, .base = .src1y };
+ const @"_": Select.Operand = .{ .flags = .{ .tag = .none } };
+
+ const @"0b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp0, .size = .none } };
+ const @"0f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp0, .size = .none } };
+ const @"1b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp1, .size = .none } };
+ const @"1f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp1, .size = .none } };
+ const @"2b": Select.Operand = .{ .flags = .{ .tag = .backward_label }, .base = .{ .ref = .tmp2, .size = .none } };
+ const @"2f": Select.Operand = .{ .flags = .{ .tag = .forward_label }, .base = .{ .ref = .tmp2, .size = .none } };
+
+ const tmp0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0b };
+ const tmp0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0w };
+ const tmp0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0d };
+ const tmp0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0p };
+ const tmp0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0q };
+ const tmp0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0t };
+ const tmp0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0x };
+ const tmp0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp0y };
+
+ const tmp1b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1b };
+ const tmp1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1w };
+ const tmp1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1d };
+ const tmp1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1p };
+ const tmp1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1q };
+ const tmp1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1t };
+ const tmp1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1x };
+ const tmp1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp1y };
+
+ const tmp2b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2b };
+ const tmp2w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2w };
+ const tmp2d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2d };
+ const tmp2p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2p };
+ const tmp2q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2q };
+ const tmp2t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2t };
+ const tmp2x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2x };
+ const tmp2y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp2y };
+
+ const tmp3b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3b };
+ const tmp3w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3w };
+ const tmp3d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3d };
+ const tmp3p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3p };
+ const tmp3q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3q };
+ const tmp3t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3t };
+ const tmp3x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3x };
+ const tmp3y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp3y };
+
+ const tmp4b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4b };
+ const tmp4w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4w };
+ const tmp4d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4d };
+ const tmp4p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4p };
+ const tmp4q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4q };
+ const tmp4t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4t };
+ const tmp4x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4x };
+ const tmp4y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp4y };
+
+ const tmp5b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5b };
+ const tmp5w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5w };
+ const tmp5d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5d };
+ const tmp5p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5p };
+ const tmp5q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5q };
+ const tmp5t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5t };
+ const tmp5x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5x };
+ const tmp5y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp5y };
+
+ const tmp6b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6b };
+ const tmp6w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6w };
+ const tmp6d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6d };
+ const tmp6p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6p };
+ const tmp6q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6q };
+ const tmp6t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6t };
+ const tmp6x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6x };
+ const tmp6y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp6y };
+
+ const tmp7b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7b };
+ const tmp7w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7w };
+ const tmp7d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7d };
+ const tmp7p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7p };
+ const tmp7q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7q };
+ const tmp7t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7t };
+ const tmp7x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7x };
+ const tmp7y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp7y };
+
+ const tmp8b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8b };
+ const tmp8w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8w };
+ const tmp8d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8d };
+ const tmp8p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8p };
+ const tmp8q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8q };
+ const tmp8t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8t };
+ const tmp8x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8x };
+ const tmp8y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .tmp8y };
+
+ const dst0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0b };
+ const dst0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0w };
+ const dst0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0d };
+ const dst0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0p };
+ const dst0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0q };
+ const dst0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0t };
+ const dst0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0x };
+ const dst0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .dst0y };
+
+ const src0b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0b };
+ const src0w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0w };
+ const src0d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0d };
+ const src0p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0p };
+ const src0q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0q };
+ const src0t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0t };
+ const src0x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0x };
+ const src0y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src0y };
+
+ const src1b: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1b };
+ const src1w: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1w };
+ const src1d: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1d };
+ const src1p: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1p };
+ const src1q: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1q };
+ const src1t: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1t };
+ const src1x: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1x };
+ const src1y: Select.Operand = .{ .flags = .{ .tag = .ref }, .base = .src1y };
fn si(imm: i32) Select.Operand {
- return .{ .tag = .simm, .imm = imm };
+ return .{ .flags = .{ .tag = .simm }, .imm = imm };
}
fn sa(base: Ref.Sized, adjust: Adjust) Select.Operand {
- return .{ .tag = .simm, .base = base, .adjust = adjust };
+ return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base };
+ }
+ fn sa2(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
+ return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .index = .{ .ref = index } };
}
fn sia(imm: i32, base: Ref.Sized, adjust: Adjust) Select.Operand {
- return .{ .tag = .simm, .base = base, .adjust = adjust, .imm = imm };
+ return .{ .flags = .{ .tag = .simm, .adjust = adjust }, .base = base, .imm = imm };
}
fn ui(imm: u32) Select.Operand {
- return .{ .tag = .uimm, .imm = @bitCast(imm) };
+ return .{ .flags = .{ .tag = .uimm }, .imm = @bitCast(imm) };
}
fn ua(base: Ref.Sized, adjust: Adjust) Select.Operand {
- return .{ .tag = .uimm, .base = base, .adjust = adjust };
+ return .{ .flags = .{ .tag = .uimm, .adjust = adjust }, .base = base };
}
fn uia(imm: u32, base: Ref.Sized, adjust: Adjust) Select.Operand {
- return .{ .tag = .uimm, .base = base, .adjust = adjust, .imm = @bitCast(imm) };
+ return .{ .flags = .{ .tag = .uimm, .adjust = adjust }, .base = base, .imm = @bitCast(imm) };
}
fn rm(mode: bits.RoundMode) Select.Operand {
- return .{ .tag = .uimm, .imm = @intCast(mode.imm().unsigned) };
+ return .{ .flags = .{ .tag = .uimm }, .imm = @intCast(mode.imm().unsigned) };
}
fn sp(pred: bits.SseFloatPredicate) Select.Operand {
- return .{ .tag = .uimm, .imm = @intCast(pred.imm().unsigned) };
+ return .{ .flags = .{ .tag = .uimm }, .imm = @intCast(pred.imm().unsigned) };
}
fn vp(pred: bits.VexFloatPredicate) Select.Operand {
- return .{ .tag = .uimm, .imm = @intCast(pred.imm().unsigned) };
+ return .{ .flags = .{ .tag = .uimm }, .imm = @intCast(pred.imm().unsigned) };
}
- fn lea(size: Memory.Size, base: Ref) Select.Operand {
+ fn lea(base: Ref.Sized) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
+ .flags = .{ .tag = .lea },
+ .base = base,
};
}
- fn leaa(size: Memory.Size, base: Ref, adjust: Adjust) Select.Operand {
+ fn leaa(base: Ref.Sized, adjust: Adjust) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
- .adjust = adjust,
+ .flags = .{ .tag = .lea, .adjust = adjust },
+ .base = base,
};
}
- fn lead(size: Memory.Size, base: Ref, disp: i32) Select.Operand {
+ fn lead(base: Ref.Sized, disp: i32) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
+ .flags = .{ .tag = .lea },
+ .base = base,
.imm = disp,
};
}
- fn leai(size: Memory.Size, base: Ref, index: Ref) Select.Operand {
+ fn leai(base: Ref.Sized, index: Ref) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
- .index = .{ .ref = index, .scale = .@"1" },
+ .flags = .{ .tag = .lea },
+ .base = base,
+ .index = .{ .ref = index },
};
}
- fn leaia(size: Memory.Size, base: Ref, index: Ref, adjust: Adjust) Select.Operand {
+ fn leaia(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
- .index = .{ .ref = index, .scale = .@"1" },
- .adjust = adjust,
+ .flags = .{ .tag = .lea, .adjust = adjust },
+ .base = base,
+ .index = .{ .ref = index },
};
}
- fn leaid(size: Memory.Size, base: Ref, index: Ref, disp: i32) Select.Operand {
+ fn leaid(base: Ref.Sized, index: Ref, disp: i32) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
- .index = .{ .ref = index, .scale = .@"1" },
+ .flags = .{ .tag = .lea },
+ .base = base,
+ .index = .{ .ref = index },
.imm = disp,
};
}
- fn leasi(size: Memory.Size, base: Ref, scale: Memory.Scale, index: Ref) Select.Operand {
+ fn leasi(base: Ref.Sized, scale: Memory.Scale, index: Ref) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
+ .flags = .{ .tag = .lea },
+ .base = base,
.index = .{ .ref = index, .scale = scale },
};
}
- fn leasid(size: Memory.Size, base: Ref, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
+ fn leasid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
+ .flags = .{ .tag = .lea },
+ .base = base,
.index = .{ .ref = index, .scale = scale },
.imm = disp,
};
}
- fn leasiad(size: Memory.Size, base: Ref, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
+ fn leasiad(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
return .{
- .tag = .lea,
- .base = .{ .ref = base, .size = size },
+ .flags = .{ .tag = .lea, .adjust = adjust },
+ .base = base,
.index = .{ .ref = index, .scale = scale },
- .adjust = adjust,
.imm = disp,
};
}
fn mem(base: Ref.Sized) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem },
.base = base,
};
}
fn memd(base: Ref.Sized, disp: i32) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem },
.base = base,
.imm = disp,
};
}
fn mema(base: Ref.Sized, adjust: Adjust) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem, .adjust = adjust },
.base = base,
- .adjust = adjust,
};
}
fn memad(base: Ref.Sized, adjust: Adjust, disp: i32) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem, .adjust = adjust },
.base = base,
- .adjust = adjust,
.imm = disp,
};
}
fn memi(base: Ref.Sized, index: Ref) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem },
.base = base,
- .index = .{ .ref = index, .scale = .@"1" },
+ .index = .{ .ref = index },
};
}
fn memia(base: Ref.Sized, index: Ref, adjust: Adjust) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem, .adjust = adjust },
.base = base,
- .index = .{ .ref = index, .scale = .@"1" },
- .adjust = adjust,
+ .index = .{ .ref = index },
};
}
fn memiad(base: Ref.Sized, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem, .adjust = adjust },
.base = base,
- .index = .{ .ref = index, .scale = .@"1" },
- .adjust = adjust,
+ .index = .{ .ref = index },
.imm = disp,
};
}
fn memid(base: Ref.Sized, index: Ref, disp: i32) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem },
.base = base,
- .index = .{ .ref = index, .scale = .@"1" },
+ .index = .{ .ref = index },
.imm = disp,
};
}
fn memsi(base: Ref.Sized, scale: Memory.Scale, index: Ref) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem },
.base = base,
.index = .{ .ref = index, .scale = scale },
};
}
fn memsia(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem, .adjust = adjust },
.base = base,
.index = .{ .ref = index, .scale = scale },
- .adjust = adjust,
};
}
fn memsid(base: Ref.Sized, scale: Memory.Scale, index: Ref, disp: i32) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem },
.base = base,
.index = .{ .ref = index, .scale = scale },
.imm = disp,
@@ -46446,10 +47123,9 @@ const Select = struct {
}
fn memsiad(base: Ref.Sized, scale: Memory.Scale, index: Ref, adjust: Adjust, disp: i32) Select.Operand {
return .{
- .tag = .mem,
+ .flags = .{ .tag = .mem, .adjust = adjust },
.base = base,
.index = .{ .ref = index, .scale = scale },
- .adjust = adjust,
.imm = disp,
};
}
@@ -46458,11 +47134,13 @@ const Select = struct {
const UnsignedImm = @Type(.{
.int = .{ .signedness = .unsigned, .bits = @typeInfo(SignedImm).int.bits },
});
- const lhs: SignedImm = lhs: switch (op.adjust.lhs) {
+ const lhs: SignedImm = lhs: switch (op.flags.adjust.lhs) {
.none => 0,
.ptr_size => @divExact(s.cg.target.ptrBitWidth(), 8),
.ptr_bit_size => s.cg.target.ptrBitWidth(),
.size => @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)),
+ .delta_size => @intCast(@as(SignedImm, @intCast(op.base.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu))) -
+ @as(SignedImm, @intCast(op.index.ref.deref(s).typeOf(s.cg).abiSize(s.cg.pt.zcu)))),
.size_sub_elem_size => {
const ty = op.base.ref.deref(s).typeOf(s.cg);
break :lhs @intCast(ty.abiSize(s.cg.pt.zcu) - ty.elemType2(s.cg.pt.zcu).abiSize(s.cg.pt.zcu));
@@ -46489,8 +47167,8 @@ const Select = struct {
-%op.base.ref.deref(s).typeOf(s.cg).scalarType(s.cg.pt.zcu).bitSize(s.cg.pt.zcu),
)),
};
- const rhs = op.adjust.rhs.toLog2();
- const res = res: switch (op.adjust.op) {
+ const rhs = op.flags.adjust.rhs.toLog2();
+ const res = res: switch (op.flags.adjust.op) {
.mul => {
const res = @shlWithOverflow(lhs, rhs);
assert(res[1] == 0);
@@ -46498,14 +47176,14 @@ const Select = struct {
},
.div => @shrExact(lhs, rhs),
};
- return switch (op.adjust.sign) {
+ return switch (op.flags.adjust.sign) {
.neg => op.imm - res,
.pos => op.imm + res,
};
}
fn lower(op: Select.Operand, s: *Select) !CodeGen.Operand {
- return switch (op.tag) {
+ return switch (op.flags.tag) {
.none => .none,
.backward_label => .{ .inst = s.labels[@intFromEnum(op.base.ref)].backward.? },
.forward_label => for (&s.labels[@intFromEnum(op.base.ref)].forward) |*label| {