qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.11 22/23] tcg/ppc: Look for shifted consta


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH for-2.11 22/23] tcg/ppc: Look for shifted constants
Date: Fri, 4 Aug 2017 13:39:12 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

Hi Richard,

On 08/04/2017 02:44 AM, Richard Henderson wrote:
Signed-off-by: Richard Henderson <address@hidden>
---
  tcg/ppc/tcg-target.inc.c | 9 +++++++++
  1 file changed, 9 insertions(+)

diff --git a/tcg/ppc/tcg-target.inc.c b/tcg/ppc/tcg-target.inc.c
index bc14d2c9c6..4b32809217 100644
--- a/tcg/ppc/tcg-target.inc.c
+++ b/tcg/ppc/tcg-target.inc.c
@@ -598,6 +598,7 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type, 
TCGReg ret,
  {
      intptr_t tb_diff;
      int32_t high;
+    int lsb;
tcg_debug_assert(TCG_TARGET_REG_BITS == 64 || type == TCG_TYPE_I32); @@ -638,6 +639,14 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type, TCGReg ret,
          return;
      }
+ lsb = ctz64(arg);
+    high = arg >> lsb;
+    if (arg == (int16_t)arg) {

Can you move these here?

+    lsb = ctz64(arg);
+    high = arg >> lsb;

+        tcg_out32(s, ADDI | TAI(ret, 0, high));
+        tcg_out_shli64(s, ret, ret, lsb);
+        return;
+    }
+
      high = arg >> 31 >> 1;
      tcg_out_movi(s, TCG_TYPE_I32, ret, high);
      if (high) {


Regards,

Phil.



reply via email to

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