Revision 0566d387 tcg/i386/tcg-target.c

b/tcg/i386/tcg-target.c
166 166
#define OPC_CALL_Jz	(0xe8)
167 167
#define OPC_CMP_GvEv	(OPC_ARITH_GvEv | (ARITH_CMP << 3))
168 168
#define OPC_DEC_r32	(0x48)
169
#define OPC_IMUL_GvEv	(0xaf | P_EXT)
170
#define OPC_IMUL_GvEvIb	(0x6b)
171
#define OPC_IMUL_GvEvIz	(0x69)
169 172
#define OPC_INC_r32	(0x40)
170 173
#define OPC_JCC_long	(0x80 | P_EXT)	/* ... plus condition code */
171 174
#define OPC_JCC_short	(0x70)		/* ... plus condition code */
......
1157 1160
            int32_t val;
1158 1161
            val = args[2];
1159 1162
            if (val == (int8_t)val) {
1160
                tcg_out_modrm(s, 0x6b, args[0], args[0]);
1163
                tcg_out_modrm(s, OPC_IMUL_GvEvIb, args[0], args[0]);
1161 1164
                tcg_out8(s, val);
1162 1165
            } else {
1163
                tcg_out_modrm(s, 0x69, args[0], args[0]);
1166
                tcg_out_modrm(s, OPC_IMUL_GvEvIz, args[0], args[0]);
1164 1167
                tcg_out32(s, val);
1165 1168
            }
1166 1169
        } else {
1167
            tcg_out_modrm(s, 0xaf | P_EXT, args[0], args[2]);
1170
            tcg_out_modrm(s, OPC_IMUL_GvEv, args[0], args[2]);
1168 1171
        }
1169 1172
        break;
1170 1173
    case INDEX_op_mulu2_i32:

Also available in: Unified diff