On Wed, 2 Jul 2025 at 13:38, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > ---
> +#define UNPK(NAME, SREG, TW, TN, HW, HN) \ > +void HELPER(NAME)(void *vd, void *vs, uint32_t desc) \ > +{ \ > + ARMVectorReg scratch[SREG]; \ > + size_t oprsz = simd_oprsz(desc); \ > + size_t n = oprsz / sizeof(TW); \ > + if ((vs - vd) < 2 * SREG * sizeof(ARMVectorReg)) { \ > + vs = memcpy(scratch, vs, sizeof(scratch)); \ > + } \ > + for (size_t r = 0; r < SREG; ++r) { \ > + TN *s = vs + r * sizeof(ARMVectorReg); \ > + for (size_t i = 0; i < 2; ++i) { \ > + TW *d = vd + (2 * r + i) * sizeof(ARMVectorReg); \ > + for (size_t e = 0; e < n; ++e) { \ > + d[HW(e)] = s[i * n + HN(e)]; \ > + } \ > + } \ > + } \ > +} Similar remarks about the "when do we need to copy" check and the H macros as patch 49, but otherwise Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM