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