qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]