|
From: | Richard Henderson |
Subject: | Re: [PATCH 32/55] target/arm: Implement MVE VRMLALDAVH, VRMLSLDAVH |
Date: | Tue, 8 Jun 2021 18:05:07 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 6/7/21 9:57 AM, Peter Maydell wrote:
+#define DO_LDAVH(OP, ESIZE, TYPE, H, XCHG, EVENACC, ODDACC, TO128) \ + uint64_t HELPER(glue(mve_, OP))(CPUARMState *env, void *vn, \ + void *vm, uint64_t a) \ + { \ + uint16_t mask = mve_element_mask(env); \ + unsigned e; \ + TYPE *n = vn, *m = vm; \ + Int128 acc = TO128(a); \
This seems to miss the << 8. Which suggests that the whole thing can be done without Int128:
+ for (e = 0; e < 16 / ESIZE; e++, mask >>= ESIZE) { \ + if (mask & 1) { \ + if (e & 1) { \ + acc = ODDACC(acc, TO128(n[H(e - 1 * XCHG)] * m[H(e)])); \
tmp = n * m; tmp = (tmp >> 8) + ((tmp >> 7) & 1); acc ODDACC tmp;
+static bool trans_VRMLALDAVH_S(DisasContext *s, arg_vmlaldav *a) +{ + MVEGenDualAccOpFn *fns[] = {
static const, etc. r~
[Prev in Thread] | Current Thread | [Next in Thread] |