2007-11-20 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Tue, 20 Nov 2007 17:45:36 +0000 (17:45 -0000)
committerZoltan Varga <vargaz@gmail.com>
Tue, 20 Nov 2007 17:45:36 +0000 (17:45 -0000)
* amd64/amd64-codegen.h (amd64_alu_reg_imm_size): Prefer the smaller
instruction encoding.

svn path=/trunk/mono/; revision=90005

mono/arch/ChangeLog
mono/arch/amd64/amd64-codegen.h

index b4a3ffedb493f3d222b3450b2fb4d682ccedb860..42bedf87228db321a561419e16d697d42d90a140 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * amd64/amd64-codegen.h (amd64_alu_reg_imm_size): Prefer the smaller 
+       instruction encoding.
+
 2007-11-03  David S. Miller  <davem@davemloft.net>
 
        * sparc/sparc-codegen.h (sparc_set32, sparc_set): A plain sethi
index e0127f12c0c621b6ab91c8c1bfe306e26721366a..c5cfda0a9644233531edca5ed3701973cf659a00 100644 (file)
@@ -156,17 +156,15 @@ typedef union {
 
 #define amd64_alu_reg_imm_size(inst,opc,reg,imm,size)  \
        do {    \
-               if ((reg) == X86_EAX) { \
-                       amd64_emit_rex(inst, size, 0, 0, 0); \
-                       *(inst)++ = (((unsigned char)(opc)) << 3) + 5;  \
-                       x86_imm_emit32 ((inst), (imm)); \
-                       break;  \
-               }       \
                if (x86_is_imm8((imm))) {       \
                        amd64_emit_rex(inst, size, 0, 0, (reg)); \
                        *(inst)++ = (unsigned char)0x83;        \
                        x86_reg_emit ((inst), (opc), (reg));    \
                        x86_imm_emit8 ((inst), (imm));  \
+               } else if ((reg) == X86_EAX) {  \
+                       amd64_emit_rex(inst, size, 0, 0, 0); \
+                       *(inst)++ = (((unsigned char)(opc)) << 3) + 5;  \
+                       x86_imm_emit32 ((inst), (imm)); \
                } else {        \
                        amd64_emit_rex(inst, size, 0, 0, (reg)); \
                        *(inst)++ = (unsigned char)0x81;        \