Revision 560f92cc tcg/x86_64/tcg-target.c

b/tcg/x86_64/tcg-target.c
450 450
                           TCGArg arg1, TCGArg arg2, int const_arg2,
451 451
                           int label_index, int rexw)
452 452
{
453
    int c;
454 453
    if (const_arg2) {
455 454
        if (arg2 == 0) {
456
            /* use test */
457
            switch(cond) {
458
            case TCG_COND_EQ:
459
                c = JCC_JE;
460
                break;
461
            case TCG_COND_NE:
462
                c = JCC_JNE;
463
                break;
464
            case TCG_COND_LT:
465
                c = JCC_JS;
466
                break;
467
            case TCG_COND_GE:
468
                c = JCC_JNS;
469
                break;
470
            default:
471
                goto do_cmpi;
472
            }
473 455
            /* test r, r */
474 456
            tcg_out_modrm(s, 0x85 | rexw, arg1, arg1);
475
            tcg_out_jxx(s, c, label_index);
476 457
        } else {
477
        do_cmpi:
478 458
            if (rexw)
479 459
                tgen_arithi64(s, ARITH_CMP, arg1, arg2);
480 460
            else
481 461
                tgen_arithi32(s, ARITH_CMP, arg1, arg2);
482
            tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index);
483 462
        }
484 463
    } else {
485 464
        tcg_out_modrm(s, 0x01 | (ARITH_CMP << 3) | rexw, arg2, arg1);
486
        tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index);
487 465
    }
466
    tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index);
488 467
}
489 468

  
490 469
#if defined(CONFIG_SOFTMMU)

Also available in: Unified diff