projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4b1561c
)
target/arm: Optimize MVE VDUP
author
Peter Maydell
<peter.maydell@linaro.org>
Mon, 13 Sep 2021 09:54:35 +0000
(10:54 +0100)
committer
Peter Maydell
<peter.maydell@linaro.org>
Tue, 21 Sep 2021 15:28:27 +0000
(16:28 +0100)
Optimize the MVE VDUP insns by using TCG vector ops when possible.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id:
20210913095440
.13462-8-peter.maydell@linaro.org
target/arm/translate-mve.c
patch
|
blob
|
history
diff --git
a/target/arm/translate-mve.c
b/target/arm/translate-mve.c
index d30c7e57ea3701a16d74d6e27979f8b3c4566980..13de55242e2523d52cdce2efbd91cad22910ae72 100644
(file)
--- a/
target/arm/translate-mve.c
+++ b/
target/arm/translate-mve.c
@@
-500,11
+500,15
@@
static bool trans_VDUP(DisasContext *s, arg_VDUP *a)
return true;
}
- qd = mve_qreg_ptr(a->qd);
rt = load_reg(s, a->rt);
- tcg_gen_dup_i32(a->size, rt, rt);
- gen_helper_mve_vdup(cpu_env, qd, rt);
- tcg_temp_free_ptr(qd);
+ if (mve_no_predication(s)) {
+ tcg_gen_gvec_dup_i32(a->size, mve_qreg_offset(a->qd), 16, 16, rt);
+ } else {
+ qd = mve_qreg_ptr(a->qd);
+ tcg_gen_dup_i32(a->size, rt, rt);
+ gen_helper_mve_vdup(cpu_env, qd, rt);
+ tcg_temp_free_ptr(qd);
+ }
tcg_temp_free_i32(rt);
mve_update_eci(s);
return true;