From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org
Subject: [Qemu-devel] [PATCH 4/9] target/arm: Use pointers in neon tbl helper
Date: Mon, 18 Dec 2017 09:30:17 -0800 [thread overview]
Message-ID: <20171218173022.18418-5-richard.henderson@linaro.org> (raw)
In-Reply-To: <20171218173022.18418-1-richard.henderson@linaro.org>
Rather than passing a regno to the helper, pass pointers to the
vector register directly. This eliminates the need to pass in
the environment pointer and reduces the number of places that
directly access env->vfp.regs[].
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/helper.h | 2 +-
target/arm/op_helper.c | 17 +++++++----------
target/arm/translate.c | 8 ++++----
3 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/target/arm/helper.h b/target/arm/helper.h
index d39ca11cbd..206e39a207 100644
--- a/target/arm/helper.h
+++ b/target/arm/helper.h
@@ -201,7 +201,7 @@ DEF_HELPER_FLAGS_2(rsqrte_f32, TCG_CALL_NO_RWG, f32, f32, ptr)
DEF_HELPER_FLAGS_2(rsqrte_f64, TCG_CALL_NO_RWG, f64, f64, ptr)
DEF_HELPER_2(recpe_u32, i32, i32, ptr)
DEF_HELPER_FLAGS_2(rsqrte_u32, TCG_CALL_NO_RWG, i32, i32, ptr)
-DEF_HELPER_5(neon_tbl, i32, env, i32, i32, i32, i32)
+DEF_HELPER_FLAGS_4(neon_tbl, TCG_CALL_NO_RWG, i32, i32, i32, ptr, i32)
DEF_HELPER_3(shl_cc, i32, env, i32, i32)
DEF_HELPER_3(shr_cc, i32, env, i32, i32)
diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c
index c2bb4f3a43..df3aab170b 100644
--- a/target/arm/op_helper.c
+++ b/target/arm/op_helper.c
@@ -54,20 +54,17 @@ static int exception_target_el(CPUARMState *env)
return target_el;
}
-uint32_t HELPER(neon_tbl)(CPUARMState *env, uint32_t ireg, uint32_t def,
- uint32_t rn, uint32_t maxindex)
+uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, void *vn,
+ uint32_t maxindex)
{
- uint32_t val;
- uint32_t tmp;
- int index;
- int shift;
- uint64_t *table;
- table = (uint64_t *)&env->vfp.regs[rn];
+ uint32_t val, shift;
+ uint64_t *table = vn;
+
val = 0;
for (shift = 0; shift < 32; shift += 8) {
- index = (ireg >> shift) & 0xff;
+ uint32_t index = (ireg >> shift) & 0xff;
if (index < maxindex) {
- tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff;
+ uint32_t tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff;
val |= tmp << shift;
} else {
val |= def & (0xff << shift);
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 68e928640f..55afd29b21 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -7623,9 +7623,9 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
tcg_gen_movi_i32(tmp, 0);
}
tmp2 = neon_load_reg(rm, 0);
- tmp4 = tcg_const_i32(rn);
+ ptr1 = vfp_reg_ptr(true, rn);
tmp5 = tcg_const_i32(n);
- gen_helper_neon_tbl(tmp2, cpu_env, tmp2, tmp, tmp4, tmp5);
+ gen_helper_neon_tbl(tmp2, tmp2, tmp, ptr1, tmp5);
tcg_temp_free_i32(tmp);
if (insn & (1 << 6)) {
tmp = neon_load_reg(rd, 1);
@@ -7634,9 +7634,9 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
tcg_gen_movi_i32(tmp, 0);
}
tmp3 = neon_load_reg(rm, 1);
- gen_helper_neon_tbl(tmp3, cpu_env, tmp3, tmp, tmp4, tmp5);
+ gen_helper_neon_tbl(tmp3, tmp3, tmp, ptr1, tmp5);
tcg_temp_free_i32(tmp5);
- tcg_temp_free_i32(tmp4);
+ tcg_temp_free_ptr(ptr1);
neon_store_reg(rd, 0, tmp2);
neon_store_reg(rd, 1, tmp3);
tcg_temp_free_i32(tmp);
--
2.14.3
next prev parent reply other threads:[~2017-12-18 17:30 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-18 17:30 [Qemu-devel] [PATCH 0/9] target/arm: Prepatory work for SVE Richard Henderson
2017-12-18 17:30 ` [Qemu-devel] [PATCH 1/9] target/arm: Mark disas_set_insn_syndrome inline Richard Henderson
2017-12-18 20:27 ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2018-01-11 18:45 ` [Qemu-devel] " Peter Maydell
2017-12-18 17:30 ` [Qemu-devel] [PATCH 2/9] target/arm: Use pointers in crypto helpers Richard Henderson
2018-01-11 18:45 ` Peter Maydell
2017-12-18 17:30 ` [Qemu-devel] [PATCH 3/9] target/arm: Use pointers in neon zip/uzp helpers Richard Henderson
2018-01-11 18:46 ` Peter Maydell
2017-12-18 17:30 ` Richard Henderson [this message]
2018-01-11 18:46 ` [Qemu-devel] [PATCH 4/9] target/arm: Use pointers in neon tbl helper Peter Maydell
2017-12-18 17:30 ` [Qemu-devel] [PATCH 5/9] target/arm: Add aa32_vfp_dreg/aa64_vfp_qreg helpers Richard Henderson
2018-01-11 18:39 ` Peter Maydell
2018-01-11 19:29 ` Richard Henderson
2018-01-12 18:24 ` Peter Maydell
2018-01-12 18:44 ` Richard Henderson
2018-01-12 18:44 ` Peter Maydell
2018-01-12 18:47 ` Richard Henderson
2017-12-18 17:30 ` [Qemu-devel] [PATCH 6/9] vmstate: Add VMSTATE_UINT64_SUB_ARRAY Richard Henderson
2017-12-18 20:29 ` [Qemu-devel] [Qemu-arm] " Philippe Mathieu-Daudé
2018-01-11 18:46 ` [Qemu-devel] " Peter Maydell
2017-12-18 17:30 ` [Qemu-devel] [PATCH 7/9] target/arm: Expand vector registers for SVE Richard Henderson
2018-01-11 18:44 ` Peter Maydell
2018-01-11 18:58 ` Dr. David Alan Gilbert
2018-01-12 18:38 ` Peter Maydell
2018-01-12 18:50 ` Richard Henderson
2017-12-18 17:30 ` [Qemu-devel] [PATCH 8/9] target/arm: Add ZCR.LEN to tb->flags Richard Henderson
2018-01-12 18:49 ` Peter Maydell
2018-01-15 10:00 ` Peter Maydell
2017-12-18 17:30 ` [Qemu-devel] [PATCH 9/9] target/arm: Add ARM_FEATURE_SVE Richard Henderson
2018-01-11 18:42 ` Peter Maydell
2018-01-11 19:32 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171218173022.18418-5-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).