Commit 3681da25f8

Jacob Young <jacobly0@users.noreply.github.com>
2023-05-12 07:16:52
x86_64: remove scratch data tags
1 parent c23e80e
Changed files (3)
src/arch/x86_64/CodeGen.zig
@@ -1079,9 +1079,9 @@ fn asmSetccRegister(self: *Self, reg: Register, cc: bits.Condition) !void {
                 .fixes = Mir.Inst.Fixes.fromCondition(cc),
                 .r1 = reg,
             } },
-            .z_and_np, .nz_or_p => .{ .r_scratch = .{
+            .z_and_np, .nz_or_p => .{ .rr = .{
                 .r1 = reg,
-                .scratch_reg = (try self.register_manager.allocReg(null, gp)).to8(),
+                .r2 = (try self.register_manager.allocReg(null, gp)).to8(),
             } },
         },
     });
@@ -1120,8 +1120,8 @@ fn asmSetccMemory(self: *Self, m: Memory, cc: bits.Condition) !void {
                 .fixes = Mir.Inst.Fixes.fromCondition(cc),
                 .payload = payload,
             } },
-            .z_and_np, .nz_or_p => .{ .x_scratch = .{
-                .scratch_reg = (try self.register_manager.allocReg(null, gp)).to8(),
+            .z_and_np, .nz_or_p => .{ .rx = .{
+                .r1 = (try self.register_manager.allocReg(null, gp)).to8(),
                 .payload = payload,
             } },
         },
src/arch/x86_64/Lower.zig
@@ -95,54 +95,54 @@ pub fn lowerMir(lower: *Lower, index: Mir.Inst.Index) Error!struct {
             },
             .pseudo_set_z_and_np_r => {
                 try lower.emit(.none, .setz, &.{
-                    .{ .reg = inst.data.r_scratch.r1 },
+                    .{ .reg = inst.data.rr.r1 },
                 });
                 try lower.emit(.none, .setnp, &.{
-                    .{ .reg = inst.data.r_scratch.scratch_reg },
+                    .{ .reg = inst.data.rr.r2 },
                 });
                 try lower.emit(.none, .@"and", &.{
-                    .{ .reg = inst.data.r_scratch.r1 },
-                    .{ .reg = inst.data.r_scratch.scratch_reg },
+                    .{ .reg = inst.data.rr.r1 },
+                    .{ .reg = inst.data.rr.r2 },
                 });
             },
             .pseudo_set_z_and_np_m_sib,
             .pseudo_set_z_and_np_m_rip,
             => {
                 try lower.emit(.none, .setz, &.{
-                    .{ .mem = lower.mem(inst.ops, inst.data.x_scratch.payload) },
+                    .{ .mem = lower.mem(inst.ops, inst.data.rx.payload) },
                 });
                 try lower.emit(.none, .setnp, &.{
-                    .{ .reg = inst.data.x_scratch.scratch_reg },
+                    .{ .reg = inst.data.rx.r1 },
                 });
                 try lower.emit(.none, .@"and", &.{
-                    .{ .mem = lower.mem(inst.ops, inst.data.x_scratch.payload) },
-                    .{ .reg = inst.data.x_scratch.scratch_reg },
+                    .{ .mem = lower.mem(inst.ops, inst.data.rx.payload) },
+                    .{ .reg = inst.data.rx.r1 },
                 });
             },
             .pseudo_set_nz_or_p_r => {
                 try lower.emit(.none, .setnz, &.{
-                    .{ .reg = inst.data.r_scratch.r1 },
+                    .{ .reg = inst.data.rr.r1 },
                 });
                 try lower.emit(.none, .setp, &.{
-                    .{ .reg = inst.data.r_scratch.scratch_reg },
+                    .{ .reg = inst.data.rr.r2 },
                 });
                 try lower.emit(.none, .@"or", &.{
-                    .{ .reg = inst.data.r_scratch.r1 },
-                    .{ .reg = inst.data.r_scratch.scratch_reg },
+                    .{ .reg = inst.data.rr.r1 },
+                    .{ .reg = inst.data.rr.r2 },
                 });
             },
             .pseudo_set_nz_or_p_m_sib,
             .pseudo_set_nz_or_p_m_rip,
             => {
                 try lower.emit(.none, .setnz, &.{
-                    .{ .mem = lower.mem(inst.ops, inst.data.x_scratch.payload) },
+                    .{ .mem = lower.mem(inst.ops, inst.data.rx.payload) },
                 });
                 try lower.emit(.none, .setp, &.{
-                    .{ .reg = inst.data.x_scratch.scratch_reg },
+                    .{ .reg = inst.data.rx.r1 },
                 });
                 try lower.emit(.none, .@"or", &.{
-                    .{ .mem = lower.mem(inst.ops, inst.data.x_scratch.payload) },
-                    .{ .reg = inst.data.x_scratch.scratch_reg },
+                    .{ .mem = lower.mem(inst.ops, inst.data.rx.payload) },
+                    .{ .reg = inst.data.rx.r1 },
                 });
             },
             .pseudo_j_z_and_np_inst => {
src/arch/x86_64/Mir.zig
@@ -711,27 +711,27 @@ pub const Inst = struct {
         pseudo_cmov_nz_or_p_rm_rip,
         /// Set byte if zero flag set and parity flag not set
         /// Requires a scratch register!
-        /// Uses `r_scratch` payload.
+        /// Uses `rr` payload.
         pseudo_set_z_and_np_r,
         /// Set byte if zero flag set and parity flag not set
         /// Requires a scratch register!
-        /// Uses `x_scratch` payload.
+        /// Uses `rx` payload.
         pseudo_set_z_and_np_m_sib,
         /// Set byte if zero flag set and parity flag not set
         /// Requires a scratch register!
-        /// Uses `x_scratch` payload.
+        /// Uses `rx` payload.
         pseudo_set_z_and_np_m_rip,
         /// Set byte if zero flag not set or parity flag set
         /// Requires a scratch register!
-        /// Uses `r_scratch` payload.
+        /// Uses `rr` payload.
         pseudo_set_nz_or_p_r,
         /// Set byte if zero flag not set or parity flag set
         /// Requires a scratch register!
-        /// Uses `x_scratch` payload.
+        /// Uses `rx` payload.
         pseudo_set_nz_or_p_m_sib,
         /// Set byte if zero flag not set or parity flag set
         /// Requires a scratch register!
-        /// Uses `x_scratch` payload.
+        /// Uses `rx` payload.
         pseudo_set_nz_or_p_m_rip,
         /// Jump if zero flag set and parity flag not set
         /// Uses `inst` payload.
@@ -836,18 +836,6 @@ pub const Inst = struct {
             i: u8,
             payload: u32,
         },
-        /// Register, scratch register
-        r_scratch: struct {
-            fixes: Fixes = ._,
-            r1: Register,
-            scratch_reg: Register,
-        },
-        /// Scratch register, followed by Custom payload found in extra.
-        x_scratch: struct {
-            fixes: Fixes = ._,
-            scratch_reg: Register,
-            payload: u32,
-        },
         /// Custom payload found in extra.
         x: struct {
             fixes: Fixes = ._,