OSDN Git Service
(root)
/
qmiga
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
abb1066
)
target/arm: optimize aarch32 rev16
author
Aurelien Jarno
<aurelien@aurel32.net>
Tue, 16 May 2017 23:01:56 +0000
(
01:01
+0200)
committer
Richard Henderson
<rth@twiddle.net>
Wed, 19 Jul 2017 21:45:15 +0000
(14:45 -0700)
Use the same mask to avoid having to load two different constants, as
suggested by Richard Henderson.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Message-Id: <
20170516230159
.4195-2-aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
target/arm/translate.c
patch
|
blob
|
history
diff --git
a/target/arm/translate.c
b/target/arm/translate.c
index
e27736c
..
d3003ae
100644
(file)
--- a/
target/arm/translate.c
+++ b/
target/arm/translate.c
@@
-343,11
+343,13
@@
static void gen_smul_dual(TCGv_i32 a, TCGv_i32 b)
static void gen_rev16(TCGv_i32 var)
{
TCGv_i32 tmp = tcg_temp_new_i32();
+ TCGv_i32 mask = tcg_const_i32(0x00ff00ff);
tcg_gen_shri_i32(tmp, var, 8);
- tcg_gen_andi_i32(tmp, tmp, 0x00ff00ff);
+ tcg_gen_and_i32(tmp, tmp, mask);
+ tcg_gen_and_i32(var, var, mask);
tcg_gen_shli_i32(var, var, 8);
- tcg_gen_andi_i32(var, var, 0xff00ff00);
tcg_gen_or_i32(var, var, tmp);
+ tcg_temp_free_i32(mask);
tcg_temp_free_i32(tmp);
}