aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64/emit.c
diff options
context:
space:
mode:
Diffstat (limited to 'amd64/emit.c')
-rw-r--r--amd64/emit.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/amd64/emit.c b/amd64/emit.c
index 5a63a61..4ad0a04 100644
--- a/amd64/emit.c
+++ b/amd64/emit.c
@@ -293,7 +293,7 @@ encode(uchar **pcode, const struct desc *tab, int ntab, enum irclass k, struct o
rex |= (dst.reg >> 3) << 2; /* REX.R */
rex |= (src.reg >> 3) << 0; /* REX.B */
if (rex) B(0x40 | rex);
- else if (en->r8 && in_range(dst.reg, RSP, RDI)) {
+ else if (en->r8 && in_range(src.reg, RSP, RDI)) {
/* /r8 needs REX to encode SP,BP,SI,DI (otherwise -> AH..BH) */
B(0x40);
}
@@ -304,7 +304,7 @@ encode(uchar **pcode, const struct desc *tab, int ntab, enum irclass k, struct o
rex |= (src.reg >> 3) << 2; /* REX.R */
rex |= (dst.reg >> 3) << 0; /* REX.B */
if (rex) B(0x40 | rex);
- else if (en->r8 && in_range(src.reg, RSP, RDI)) {
+ else if (en->r8 && in_range(dst.reg, RSP, RDI)) {
/* /r8 needs REX to encode SP,BP,SI,DI (otherwise -> AH..BH) */
B(0x40);
}