authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-11-18 19:46:56+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-11-18 19:46:56+01:00
log7747bf07c73a174dbd8c976dca8a94114c49349d
tree334da8cf215f3af6292159e62024d1192b65153e
parent00966b7258bdf56fe2cc653b30b4d4352d8fe14f

stage2: use correct register alias for mem operands

When loading/storing on the stack, use `registerAlias` to correctly workout the size of the register and thus correctly select target instruction.

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

src/arch/x86_64/CodeGen.zig+4-4
...@@ -1545,7 +1545,7 @@ fn genBinMathOpMir(...@@ -1545,7 +1545,7 @@ fn genBinMathOpMir(
1545 _ = try self.addInst(.{1545 _ = try self.addInst(.{
1546 .tag = mir_tag,1546 .tag = mir_tag,
1547 .ops = (Mir.Ops{1547 .ops = (Mir.Ops{
1548 .reg1 = dst_reg,1548 .reg1 = registerAlias(dst_reg, @intCast(u32, abi_size)),
1549 .reg2 = .ebp,1549 .reg2 = .ebp,
1550 .flags = 0b01,1550 .flags = 0b01,
1551 }).encode(),1551 }).encode(),
...@@ -1576,7 +1576,7 @@ fn genBinMathOpMir(...@@ -1576,7 +1576,7 @@ fn genBinMathOpMir(
1576 _ = try self.addInst(.{1576 _ = try self.addInst(.{
1577 .tag = mir_tag,1577 .tag = mir_tag,
1578 .ops = (Mir.Ops{1578 .ops = (Mir.Ops{
1579 .reg1 = src_reg,1579 .reg1 = registerAlias(src_reg, @intCast(u32, abi_size)),
1580 .reg2 = .ebp,1580 .reg2 = .ebp,
1581 .flags = 0b10,1581 .flags = 0b10,
1582 }).encode(),1582 }).encode(),
...@@ -2749,7 +2749,7 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro...@@ -2749,7 +2749,7 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro
2749 _ = try self.addInst(.{2749 _ = try self.addInst(.{
2750 .tag = .mov,2750 .tag = .mov,
2751 .ops = (Mir.Ops{2751 .ops = (Mir.Ops{
2752 .reg1 = reg,2752 .reg1 = registerAlias(reg, @intCast(u32, abi_size)),
2753 .reg2 = .ebp,2753 .reg2 = .ebp,
2754 .flags = 0b10,2754 .flags = 0b10,
2755 }).encode(),2755 }).encode(),
...@@ -2970,7 +2970,7 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void...@@ -2970,7 +2970,7 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void
2970 _ = try self.addInst(.{2970 _ = try self.addInst(.{
2971 .tag = .mov,2971 .tag = .mov,
2972 .ops = (Mir.Ops{2972 .ops = (Mir.Ops{
2973 .reg1 = reg,2973 .reg1 = registerAlias(reg, @intCast(u32, abi_size)),
2974 .reg2 = .ebp,2974 .reg2 = .ebp,
2975 .flags = 0b01,2975 .flags = 0b01,
2976 }).encode(),2976 }).encode(),