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~


Reply via email to