From e471cfe5d94f47b7bcd95ce37e7d5c75997a7a67 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 22 Nov 2025 09:50:14 +0100 Subject: amd64/emit: fix REX-requiring 8-bit GPR encoding checking wrong reg --- amd64/emit.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'amd64/emit.c') 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); } -- cgit v1.2.3