summaryrefslogtreecommitdiffstats
path: root/target/arm/translate-neon.c.inc
diff options
context:
space:
mode:
authorRichard Henderson2021-04-19 22:22:40 +0200
committerPeter Maydell2021-04-30 12:16:50 +0200
commitabe66294e1d4899b312c296e93abcd3b88f2492e (patch)
tree28c043818e8e50172fadd023f3fd9220eebc530a /target/arm/translate-neon.c.inc
parenttarget/arm: Fix SCTLR_B test for TCGv_i64 load/store (diff)
downloadqemu-abe66294e1d4899b312c296e93abcd3b88f2492e.tar.gz
qemu-abe66294e1d4899b312c296e93abcd3b88f2492e.tar.xz
qemu-abe66294e1d4899b312c296e93abcd3b88f2492e.zip
target/arm: Adjust gen_aa32_{ld, st}_i64 for align+endianness
Adjust the interface to match what has been done to the TCGv_i32 load/store functions. This is less obvious, because at present the only user of these functions, trans_VLDST_multiple, also wants to manipulate the endianness to speed up loading multiple bytes. Thus we retain an "internal" interface which is identical to the current gen_aa32_{ld,st}_i64 interface. The "new" interface will gain users as we remove the legacy interfaces, gen_aa32_ld64 and gen_aa32_st64. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210419202257.161730-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/translate-neon.c.inc')
-rw-r--r--target/arm/translate-neon.c.inc6
1 files changed, 4 insertions, 2 deletions
diff --git a/target/arm/translate-neon.c.inc b/target/arm/translate-neon.c.inc
index c82aa1412e..18d9042130 100644
--- a/target/arm/translate-neon.c.inc
+++ b/target/arm/translate-neon.c.inc
@@ -494,11 +494,13 @@ static bool trans_VLDST_multiple(DisasContext *s, arg_VLDST_multiple *a)
int tt = a->vd + reg + spacing * xs;
if (a->l) {
- gen_aa32_ld_i64(s, tmp64, addr, mmu_idx, endian | size);
+ gen_aa32_ld_internal_i64(s, tmp64, addr, mmu_idx,
+ endian | size);
neon_store_element64(tt, n, size, tmp64);
} else {
neon_load_element64(tmp64, tt, n, size);
- gen_aa32_st_i64(s, tmp64, addr, mmu_idx, endian | size);
+ gen_aa32_st_internal_i64(s, tmp64, addr, mmu_idx,
+ endian | size);
}
tcg_gen_add_i32(addr, addr, tmp);
}