[PATCH v2 00/11] target/arm: Fix neon reg offsets

Richard Henderson posted 11 patches 3 years, 6 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20201030022618.785675-1-richard.henderson@linaro.org
Maintainers: Peter Maydell <peter.maydell@linaro.org>
target/arm/translate.c          | 153 ++++++++---
target/arm/translate-neon.c.inc | 472 +++++++++++++++++---------------
target/arm/translate-vfp.c.inc  | 341 ++++++++++-------------
3 files changed, 516 insertions(+), 450 deletions(-)
[PATCH v2 00/11] target/arm: Fix neon reg offsets
Posted by Richard Henderson 3 years, 6 months ago
Much of the existing usage of neon_reg_offset is broken for
big-endian hosts, as it computes the offset of the first
32-bit unit, not the offset of the entire vector register.

Fix this by separating out the different usages.  Make the
whole thing look a bit more like the aarch64 code.

Changes for v2:
  * Fix two tcg temp leaks.

r~

Richard Henderson (11):
  target/arm: Introduce neon_full_reg_offset
  target/arm: Move neon_element_offset to translate.c
  target/arm: Use neon_element_offset in neon_load/store_reg
  target/arm: Use neon_element_offset in vfp_reg_offset
  target/arm: Add read/write_neon_element32
  target/arm: Expand read/write_neon_element32 to all MemOp
  target/arm: Rename neon_load_reg32 to vfp_load_reg32
  target/arm: Add read/write_neon_element64
  target/arm: Rename neon_load_reg64 to vfp_load_reg64
  target/arm: Simplify do_long_3d and do_2scalar_long
  target/arm: Improve do_prewiden_3d

 target/arm/translate.c          | 153 ++++++++---
 target/arm/translate-neon.c.inc | 472 +++++++++++++++++---------------
 target/arm/translate-vfp.c.inc  | 341 ++++++++++-------------
 3 files changed, 516 insertions(+), 450 deletions(-)

-- 
2.25.1


Re: [PATCH v2 00/11] target/arm: Fix neon reg offsets
Posted by Peter Maydell 3 years, 6 months ago
On Fri, 30 Oct 2020 at 02:26, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Much of the existing usage of neon_reg_offset is broken for
> big-endian hosts, as it computes the offset of the first
> 32-bit unit, not the offset of the entire vector register.
>
> Fix this by separating out the different usages.  Make the
> whole thing look a bit more like the aarch64 code.
>
> Changes for v2:
>   * Fix two tcg temp leaks.



Applied to target-arm.next, thanks.

-- PMM