Commit 6fc9dbcc17fc158886131df2cb6d2f190fccf736

Authored by malc
1 parent 450e62e7

Fix and improve 64 bit immediate loading

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4946 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 7 additions and 4 deletions
tcg/ppc64/tcg-target.c
... ... @@ -448,15 +448,18 @@ static void tcg_out_movi (TCGContext *s, TCGType type,
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 }
... ...