tcg/i386: optimize and $0xff(ff), reg
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
add16157d7
commit
b70650cbfe
@ -281,6 +281,12 @@ static inline void tgen_arithi(TCGContext *s, int c, int r0, int32_t val)
|
|||||||
if (val == (int8_t)val) {
|
if (val == (int8_t)val) {
|
||||||
tcg_out_modrm(s, 0x83, c, r0);
|
tcg_out_modrm(s, 0x83, c, r0);
|
||||||
tcg_out8(s, val);
|
tcg_out8(s, val);
|
||||||
|
} else if (c == ARITH_AND && val == 0xffu && r0 < 4) {
|
||||||
|
/* movzbl */
|
||||||
|
tcg_out_modrm(s, 0xb6 | P_EXT, r0, r0);
|
||||||
|
} else if (c == ARITH_AND && val == 0xffffu) {
|
||||||
|
/* movzwl */
|
||||||
|
tcg_out_modrm(s, 0xb7 | P_EXT, r0, r0);
|
||||||
} else {
|
} else {
|
||||||
tcg_out_modrm(s, 0x81, c, r0);
|
tcg_out_modrm(s, 0x81, c, r0);
|
||||||
tcg_out32(s, val);
|
tcg_out32(s, val);
|
||||||
|
Loading…
Reference in New Issue
Block a user