Revision 6fc9dbcc

b/tcg/ppc64/tcg-target.c
448 448
    }
449 449
    else {
450 450
        if ((uint64_t) arg >> 32) {
451
            uint16_t h16 = arg >> 16;
452
            uint16_t l16 = arg;
453

  
451 454
            tcg_out_movi32 (s, ret, (arg >> 32) + (arg32 < 0));
452 455
            tcg_out_rld (s, RLDICR, ret, ret, 32, 31);
453
            if (arg32) {
454
                tcg_out_movi32 (s, 0, arg32);
455
                tcg_out32 (s, ADD | TAB (ret, ret, 0));
456
            }
456
            if (h16) tcg_out32 (s, ORIS | RS (ret) | RA (ret) | h16);
457
            if (l16) tcg_out32 (s, ORI | RS (ret) | RA (ret) | l16);
457 458
        }
458 459
        else {
459 460
            tcg_out_movi32 (s, ret, arg32);
461
            if (arg32 < 0)
462
                tcg_out_rld (s, RLDICL, ret, ret, 0, 32);
460 463
        }
461 464
    }
462 465
}

Also available in: Unified diff