authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-12-15 17:18:38+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-12-15 17:28:48+01:00
log04784463772decb18d70734747d3fc89c043b979
tree2552ad30128a68dac5386c501414c21cd4a11425
parent510357355a3ca597daf13fadb6aa8f7df72ea26a

stage2: fix register size selection

This actually needs proper rework, and I'll get to that when refactoring MIR.

1 files changed, 4 insertions(+), 5 deletions(-)

src/arch/x86_64/CodeGen.zig+4-5
......@@ -1635,7 +1635,7 @@ fn genBinMathOpMir(
16351635 .tag = mir_tag,
16361636 .ops = (Mir.Ops{
16371637 .reg1 = registerAlias(dst_reg, @intCast(u32, abi_size)),
1638 .reg2 = .ebp,
1638 .reg2 = registerAlias(.rbp, @intCast(u32, abi_size)),
16391639 .flags = 0b01,
16401640 }).encode(),
16411641 .data = .{ .imm = -@intCast(i32, adj_off) },
......@@ -1666,7 +1666,7 @@ fn genBinMathOpMir(
16661666 .tag = mir_tag,
16671667 .ops = (Mir.Ops{
16681668 .reg1 = registerAlias(src_reg, @intCast(u32, abi_size)),
1669 .reg2 = .ebp,
1669 .reg2 = registerAlias(.rbp, @intCast(u32, abi_size)),
16701670 .flags = 0b10,
16711671 }).encode(),
16721672 .data = .{ .imm = -@intCast(i32, adj_off) },
......@@ -2835,12 +2835,11 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro
28352835 }
28362836 const abi_size = ty.abiSize(self.target.*);
28372837 const adj_off = stack_offset + abi_size;
2838 // TODO select instruction size
28392838 _ = try self.addInst(.{
28402839 .tag = .mov,
28412840 .ops = (Mir.Ops{
28422841 .reg1 = registerAlias(reg, @intCast(u32, abi_size)),
2843 .reg2 = .rbp,
2842 .reg2 = registerAlias(.rbp, @intCast(u32, abi_size)),
28442843 .flags = 0b10,
28452844 }).encode(),
28462845 .data = .{ .imm = -@intCast(i32, adj_off) },
......@@ -3061,7 +3060,7 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void
30613060 .tag = .mov,
30623061 .ops = (Mir.Ops{
30633062 .reg1 = registerAlias(reg, @intCast(u32, abi_size)),
3064 .reg2 = .ebp,
3063 .reg2 = registerAlias(.rbp, @intCast(u32, abi_size)),
30653064 .flags = 0b01,
30663065 }).encode(),
30673066 .data = .{ .imm = ioff },