Revision a4b18c6d

b/tcg/x86_64/tcg-target.c
397 397

  
398 398
static inline void tgen_arithi32(TCGContext *s, int c, int r0, int32_t val)
399 399
{
400
    if (val == (int8_t)val) {
400
    if ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1)) {
401
        /* inc */
402
        tcg_out_modrm(s, 0xff, 0, r0);
403
    } else if ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1)) {
404
        /* dec */
405
        tcg_out_modrm(s, 0xff, 1, r0);
406
    } else if (val == (int8_t)val) {
401 407
        tcg_out_modrm(s, 0x83, c, r0);
402 408
        tcg_out8(s, val);
403 409
    } else if (c == ARITH_AND && val == 0xffu) {
......
414 420

  
415 421
static inline void tgen_arithi64(TCGContext *s, int c, int r0, int64_t val)
416 422
{
417
    if (val == (int8_t)val) {
423
    if ((c == ARITH_ADD && val == 1) || (c == ARITH_SUB && val == -1)) {
424
        /* inc */
425
        tcg_out_modrm(s, 0xff | P_REXW, 0, r0);
426
    } else if ((c == ARITH_ADD && val == -1) || (c == ARITH_SUB && val == 1)) {
427
        /* dec */
428
        tcg_out_modrm(s, 0xff | P_REXW, 1, r0);
429
    } else if (val == (int8_t)val) {
418 430
        tcg_out_modrm(s, 0x83 | P_REXW, c, r0);
419 431
        tcg_out8(s, val);
420 432
    } else if (c == ARITH_AND && val == 0xffu) {

Also available in: Unified diff