On 5/28/24 08:51, Peter Maydell wrote:
On Sat, 25 May 2024 at 00:27, Richard Henderson
<richard.hender...@linaro.org> wrote:
Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
target/arm/helper.h | 10 +++++++++
target/arm/tcg/translate.h | 4 ++++
target/arm/tcg/neon-dp.decode | 10 ++-------
target/arm/tcg/gengvec.c | 22 +++++++++++++++++++
target/arm/tcg/neon_helper.c | 38 ++++++++++++++++++++++++++++++++-
target/arm/tcg/translate-a64.c | 17 ++++++---------
target/arm/tcg/translate-neon.c | 6 ++----
7 files changed, 84 insertions(+), 23 deletions(-)
uint32_t HELPER(glue(neon_,name))(CPUARMState *env, uint32_t arg1, uint32_t
arg2) \
NEON_VOP_BODY(vtype, n)
+#define NEON_GVEC_VOP2(name, vtype) \
+void HELPER(name)(void *vd, void *vn, void *vm, uint32_t desc) \
+{ \
+ intptr_t i, opr_sz = simd_oprsz(desc); \
+ vtype *d = vd, *n = vn, *m = vm; \
+ for (i = 0; i < opr_sz / sizeof(vtype); i++) { \
+ NEON_FN(d[i], n[i], m[i]); \
Does this need H macros for the bigendian case ? It looks
like we use it for smaller-than-64-bit element cases.
The same operation happens in each lane, and order of evaluation does not matter. So, no
H macros needed.
r~