| ... | @@ -1460,6 +1460,15 @@ fn asmMemoryRegister(self: *Self, tag: Mir.Inst.FixedTag, m: Memory, reg: Regist | ... | @@ -1460,6 +1460,15 @@ fn asmMemoryRegister(self: *Self, tag: Mir.Inst.FixedTag, m: Memory, reg: Regist |
| 1460 | } | 1460 | } |
| 1461 | | 1461 | |
| 1462 | fn asmMemoryImmediate(self: *Self, tag: Mir.Inst.FixedTag, m: Memory, imm: Immediate) !void { | 1462 | fn asmMemoryImmediate(self: *Self, tag: Mir.Inst.FixedTag, m: Memory, imm: Immediate) !void { |
| | 1463 | const payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) { |
| | 1464 | .signed => |s| @bitCast(u32, s), |
| | 1465 | .unsigned => |u| @intCast(u32, u), |
| | 1466 | } }); |
| | 1467 | assert(payload + 1 == switch (m) { |
| | 1468 | .sib => try self.addExtra(Mir.MemorySib.encode(m)), |
| | 1469 | .rip => try self.addExtra(Mir.MemoryRip.encode(m)), |
| | 1470 | else => unreachable, |
| | 1471 | }); |
| 1463 | _ = try self.addInst(.{ | 1472 | _ = try self.addInst(.{ |
| 1464 | .tag = tag[1], | 1473 | .tag = tag[1], |
| 1465 | .ops = switch (m) { | 1474 | .ops = switch (m) { |
| ... | @@ -1475,17 +1484,9 @@ fn asmMemoryImmediate(self: *Self, tag: Mir.Inst.FixedTag, m: Memory, imm: Immed | ... | @@ -1475,17 +1484,9 @@ fn asmMemoryImmediate(self: *Self, tag: Mir.Inst.FixedTag, m: Memory, imm: Immed |
| 1475 | }, | 1484 | }, |
| 1476 | .data = .{ .x = .{ | 1485 | .data = .{ .x = .{ |
| 1477 | .fixes = tag[0], | 1486 | .fixes = tag[0], |
| 1478 | .payload = try self.addExtra(Mir.Imm32{ .imm = switch (imm) { | 1487 | .payload = payload, |
| 1479 | .signed => |s| @bitCast(u32, s), | | |
| 1480 | .unsigned => |u| @intCast(u32, u), | | |
| 1481 | } }), | | |
| 1482 | } }, | 1488 | } }, |
| 1483 | }); | 1489 | }); |
| 1484 | _ = switch (m) { | | |
| 1485 | .sib => try self.addExtra(Mir.MemorySib.encode(m)), | | |
| 1486 | .rip => try self.addExtra(Mir.MemoryRip.encode(m)), | | |
| 1487 | else => unreachable, | | |
| 1488 | }; | | |
| 1489 | } | 1490 | } |
| 1490 | | 1491 | |
| 1491 | fn asmMemoryRegisterRegister( | 1492 | fn asmMemoryRegisterRegister( |