]> git.ipfire.org Git - thirdparty/qemu.git/commit
target/arm: LD1Q, ST1Q are vector + scalar, not scalar + vector
authorPeter Maydell <peter.maydell@linaro.org>
Wed, 23 Jul 2025 16:54:56 +0000 (17:54 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 25 Jul 2025 09:31:45 +0000 (10:31 +0100)
commit1c6aae5efbd28ac35003dea341364cd63a4515a1
tree87e8a3d4d5062b009681c7a782021411d3571d7a
parentb79f944e09657f63b6dd6e78ac7966fdc7a3e6d1
target/arm: LD1Q, ST1Q are vector + scalar, not scalar + vector

Unlike the "LD1D (scalar + vector)" etc instructions, LD1Q is
vector + scalar. This means that:
 * the vector and the scalar register are in opposite fields
   in the encoding
 * 31 in the scalar register field is XZR, not XSP

The same applies for ST1Q.

This means we can't reuse the trans_LD1_zprz() and trans_ST1_zprz()
functions for LD1Q and ST1Q. Split them out to use their own
trans functions.

Note that the change made here to sve.decode requires the decodetree
bugfix "decodetree: Infer argument set before inferring format" to
avoid a spurious compile-time error about "dtype".

Fixes: d2aa9a804ee678f ("target/arm: Implement LD1Q, ST1Q for SVE2p1")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20250723165458.3509150-5-peter.maydell@linaro.org
target/arm/tcg/sve.decode
target/arm/tcg/translate-sve.c