]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
tcg/i386: remove hardcoded P_REXW value
authorAurelien Jarno <aurelien@aurel32.net>
Wed, 6 Nov 2013 17:32:23 +0000 (18:32 +0100)
committerRichard Henderson <rth@twiddle.net>
Sat, 25 Jan 2014 22:12:38 +0000 (14:12 -0800)
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 <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg/i386/tcg-target.c

index 495b901080af11077aadacfde06ae5e23a5a8916..753b3a1c64eba9772c94ca77620d6b9f3632c9c1 100644 (file)
@@ -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 */