[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/12] target/arm: Optimize MVE VDUP
From: |
Peter Maydell |
Subject: |
[PATCH v2 07/12] target/arm: Optimize MVE VDUP |
Date: |
Mon, 13 Sep 2021 10:54:35 +0100 |
Optimize the MVE VDUP insns by using TCG vector ops when possible.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/arm/translate-mve.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/target/arm/translate-mve.c b/target/arm/translate-mve.c
index d30c7e57ea3..13de55242e2 100644
--- 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;
--
2.20.1
- [PATCH v2 00/12] target/arm: Use TCG vector ops for MVE, Peter Maydell, 2021/09/13
- [PATCH v2 01/12] target/arm: Avoid goto_tb if we're trying to exit to the main loop, Peter Maydell, 2021/09/13
- [PATCH v2 02/12] target/arm: Enforce that FPDSCR.LTPSIZE is 4 on inbound migration, Peter Maydell, 2021/09/13
- [PATCH v2 05/12] target/arm: Optimize MVE arithmetic ops, Peter Maydell, 2021/09/13
- [PATCH v2 07/12] target/arm: Optimize MVE VDUP,
Peter Maydell <=
- [PATCH v2 06/12] target/arm: Optimize MVE VNEG, VABS, Peter Maydell, 2021/09/13
- [PATCH v2 08/12] target/arm: Optimize MVE VMVN, Peter Maydell, 2021/09/13
- [PATCH v2 10/12] target/arm: Optimize MVE VSHLL and VMOVL, Peter Maydell, 2021/09/13
- [PATCH v2 09/12] target/arm: Optimize MVE VSHL, VSHR immediate forms, Peter Maydell, 2021/09/13