Revision 733fef0e tcg/x86_64/tcg-target.c
b/tcg/x86_64/tcg-target.c | ||
---|---|---|
382 | 382 |
if (val == (int8_t)val) { |
383 | 383 |
tcg_out_modrm(s, 0x83, c, r0); |
384 | 384 |
tcg_out8(s, val); |
385 |
} else if (c == ARITH_AND && val == 0xffu) { |
|
386 |
/* movzbl */ |
|
387 |
tcg_out_modrm(s, 0xb6 | P_EXT | P_REXB, r0, r0); |
|
388 |
} else if (c == ARITH_AND && val == 0xffffu) { |
|
389 |
/* movzwl */ |
|
390 |
tcg_out_modrm(s, 0xb7 | P_EXT, r0, r0); |
|
385 | 391 |
} else { |
386 | 392 |
tcg_out_modrm(s, 0x81, c, r0); |
387 | 393 |
tcg_out32(s, val); |
... | ... | |
393 | 399 |
if (val == (int8_t)val) { |
394 | 400 |
tcg_out_modrm(s, 0x83 | P_REXW, c, r0); |
395 | 401 |
tcg_out8(s, val); |
402 |
} else if (c == ARITH_AND && val == 0xffu) { |
|
403 |
/* movzbl */ |
|
404 |
tcg_out_modrm(s, 0xb6 | P_EXT | P_REXW, r0, r0); |
|
405 |
} else if (c == ARITH_AND && val == 0xffffu) { |
|
406 |
/* movzwl */ |
|
407 |
tcg_out_modrm(s, 0xb7 | P_EXT | P_REXW, r0, r0); |
|
408 |
} else if (c == ARITH_AND && val == 0xffffffffu) { |
|
409 |
/* 32-bit mov zero extends */ |
|
410 |
tcg_out_modrm(s, 0x8b, r0, r0); |
|
396 | 411 |
} else if (val == (int32_t)val) { |
397 | 412 |
tcg_out_modrm(s, 0x81 | P_REXW, c, r0); |
398 | 413 |
tcg_out32(s, val); |
Also available in: Unified diff