target/arm: Fix VUDOT/VSDOT (scalar) on big-endian hosts
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 2 Nov 2020 16:52:15 +0000 (16:52 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 2 Nov 2020 16:52:15 +0000 (16:52 +0000)
commitd1a9254be5cc93afb15be19f7543da6ff4806256
tree0b3ba2b93095b519746dc2664fd26ebdc2ebe1b9
parent552714c0812a10e5cff239bd29928e5fcb8d8b3b
target/arm: Fix VUDOT/VSDOT (scalar) on big-endian hosts

The helper functions for performing the udot/sdot operations against
a scalar were not using an address-swizzling macro when converting
the index of the scalar element into a pointer into the vm array.
This had no effect on little-endian hosts but meant we generated
incorrect results on big-endian hosts.

For these insns, the index is indexing over group of 4 8-bit values,
so 32 bits per indexed entity, and H4() is therefore what we want.
(For Neon the only possible input indexes are 0 and 1.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20201028191712.4910-3-peter.maydell@linaro.org
target/arm/vec_helper.c