[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 2/5] tcg/i386: remove hardcoded P_REXW value
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL 2/5] tcg/i386: remove hardcoded P_REXW value |
Date: |
Sat, 25 Jan 2014 15:32:49 -0800 |
From: Aurelien Jarno <address@hidden>
P_REXW is defined has a constant at the beginning of i386/tcg-target.c,
but the corresponding bit is later used in a harcoded way, which defeat
the purpose of a constant.
Fix that by using a conditional expression operator instead of a shift.
On x86 this actually makes the code slightly smaller as GCC does in
practice (opc >> 8) & 8 instead of (opc & 0x800) >> 8 so the constants
are smaller to load.
Signed-off-by: Aurelien Jarno <address@hidden>
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/i386/tcg-target.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index 495b901..753b3a1 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -381,7 +381,7 @@ static void tcg_out_opc(TCGContext *s, int opc, int r, int
rm, int x)
}
rex = 0;
- rex |= (opc & P_REXW) >> 8; /* REX.W */
+ rex |= (opc & P_REXW) ? 0x8 : 0x0; /* REX.W */
rex |= (r & 8) >> 1; /* REX.R */
rex |= (x & 8) >> 2; /* REX.X */
rex |= (rm & 8) >> 3; /* REX.B */
--
1.8.5.3
- [Qemu-devel] [PULL 0/5] tcg/i386 movbe support, Richard Henderson, 2014/01/25
- [Qemu-devel] [PULL 1/5] disas/i386.c: disassemble movbe instruction, Richard Henderson, 2014/01/25
- [Qemu-devel] [PULL 3/5] tcg/i386: add support for three-byte opcodes, Richard Henderson, 2014/01/25
- [Qemu-devel] [PULL 2/5] tcg/i386: remove hardcoded P_REXW value,
Richard Henderson <=
- [Qemu-devel] [PULL 4/5] tcg/i386: use movbe instruction in qemu_ldst routines, Richard Henderson, 2014/01/25
- [Qemu-devel] [PULL 5/5] tcg/i386: cleanup useless #ifdef, Richard Henderson, 2014/01/25
- Re: [Qemu-devel] [PULL 0/5] tcg/i386 movbe support, Peter Maydell, 2014/01/30