]> git.ipfire.org Git - thirdparty/qemu.git/commit
target/arm: Don't nest H() macro calls in SVE DO_REDUCE
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 18 Jul 2025 17:30:30 +0000 (18:30 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 21 Jul 2025 10:15:08 +0000 (11:15 +0100)
commit07327d5f451162a841747836ff05cc6dd6e8c023
tree0f50318bb21a1d04b0715baaccc8ffdeda61890d
parent17f6436822ff600cae4590c4b06b3321c97f1f42
target/arm: Don't nest H() macro calls in SVE DO_REDUCE

In the part of the SVE DO_REDUCE macro used by the SVE2p1 FMAXQV,
FMINQV, etc insns, we incorrectly applied the H() macro twice when
calculating an offset to add to the vn pointer.  This has no effect
on little-endian hosts but on big-endian hosts the two invocations
will cancel each other out and we will access the wrong part of the
array.

The "s * 16" part of the expression is already aligned, so we only
need to use the H macro on the "e". Correct the macro usage.

Fixes: 1de7ecfc12d05 ("target/arm: Implement FADDQV, F{MIN, MAX}{NM}QV for SVE2p1")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20250718173032.2498900-9-peter.maydell@linaro.org
target/arm/tcg/sve_helper.c