qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 2/6] target/alpha: optimize cvtlq() using ext


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH v4 2/6] target/alpha: optimize cvtlq() using extract op
Date: Fri, 12 May 2017 17:04:03 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0

On 05/12/2017 04:38 PM, Philippe Mathieu-Daudé wrote:
Patch created mechanically using Coccinelle script via:

     $ spatch --macro-file scripts/cocci-macro-file.h --in-place \
         --sp-file scripts/coccinelle/tcg_gen_extract.cocci --dir target

Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
  target/alpha/translate.c | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/target/alpha/translate.c b/target/alpha/translate.c
index df5d695344..531af4f5b8 100644
--- a/target/alpha/translate.c
+++ b/target/alpha/translate.c
@@ -747,9 +747,8 @@ static void gen_cvtlq(TCGv vc, TCGv vb)
      /* The arithmetic right shift here, plus the sign-extended mask below
         yields a sign-extended result without an explicit ext32s_i64.  */
      tcg_gen_sari_i64(tmp, vb, 32);
-    tcg_gen_shri_i64(vc, vb, 29);
+    tcg_gen_extract_i64(vc, vb, 29, 30);
      tcg_gen_andi_i64(tmp, tmp, (int32_t)0xc0000000);
-    tcg_gen_andi_i64(vc, vc, 0x3fffffff);
      tcg_gen_or_i64(vc, vc, tmp);

While this is accurate, looking at the broader context I think it would be better to use a deposit operation for this case.

  tcg_gen_shri_i64(tmp, vb, 29);
  tcg_gen_sari_i64(vc, vb, 32);
  tcg_gen_deposit_i64(vc, vc, tmp, 0, 30);


r~



reply via email to

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