aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJacob G-W <jacoblevgw@gmail.com>2021-11-10 14:25:43 -0500
committerJakub Konka <kubkon@jakubkonka.com>2021-11-10 21:56:03 -0800
commitf3ba72cf5a7e2c40c6a10fd987e7f4486c2b9300 (patch)
tree1d3136cf7e61a962e78460d12fe1521247d7700e /src
parente5bc092408d7a02b74011e07beaee3c98ec9a268 (diff)
downloadzig-f3ba72cf5a7e2c40c6a10fd987e7f4486c2b9300.tar.gz
zig-f3ba72cf5a7e2c40c6a10fd987e7f4486c2b9300.zip
x86_64/Emit: don't misisel push/pop for extended regs
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86_64/Emit.zig5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/arch/x86_64/Emit.zig b/src/arch/x86_64/Emit.zig
index 3c53e5f680..7430b8065b 100644
--- a/src/arch/x86_64/Emit.zig
+++ b/src/arch/x86_64/Emit.zig
@@ -197,7 +197,10 @@ fn mirPushPop(emit: *Emit, tag: Mir.Inst.Tag, inst: Mir.Inst.Index) InnerError!v
.pop => 0x58,
else => unreachable,
};
- const encoder = try Encoder.init(emit.code, 1);
+ const encoder = try Encoder.init(emit.code, 2);
+ encoder.rex(.{
+ .b = ops.reg1.isExtended(),
+ });
encoder.opcode_withReg(opc, ops.reg1.lowId());
},
0b01 => {