qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH for-next 05/15] tcg-ppc64: Look through the function


From: Richard Henderson
Subject: [Qemu-devel] [PATCH for-next 05/15] tcg-ppc64: Look through the function descriptor when profitable
Date: Mon, 5 Aug 2013 08:28:40 -1000

Loading 32-bit immediates instead of memory will be faster.
Don't attempt to generate full 64-bit immediates.

Signed-off-by: Richard Henderson <address@hidden>
---
 tcg/ppc64/tcg-target.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
index ddc9581..2563253 100644
--- a/tcg/ppc64/tcg-target.c
+++ b/tcg/ppc64/tcg-target.c
@@ -722,6 +722,17 @@ static void tcg_out_call(TCGContext *s, tcg_target_long 
arg,
 #else
     TCGReg reg = arg;
     if (const_arg) {
+        uintptr_t tgt = ((uintptr_t *)arg)[0];
+        uintptr_t toc = ((uintptr_t *)arg)[1];
+
+        /* Look through the function descriptor, if profitable.  */
+        if (tgt == (int32_t)tgt && toc == (int32_t)toc) {
+            tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R2, toc);
+            tcg_out_b(s, lk, tgt);
+            return;
+        }
+
+        /* Avoid generating two full 64-bit constants.  */
         reg = TCG_REG_R2;
         tcg_out_movi(s, TCG_TYPE_I64, reg, arg);
     }
-- 
1.8.3.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]