summaryrefslogtreecommitdiffstats
path: root/target/arm/translate.c
diff options
context:
space:
mode:
authorRichard Henderson2020-11-02 17:52:15 +0100
committerPeter Maydell2020-11-02 17:52:15 +0100
commit8aab18a2c5209e4e48998a61fbc2d89f374331ed (patch)
tree9f40086106ebe89fc36ccaeac45f7319bb5e0398 /target/arm/translate.c
parenttarget/arm: Simplify do_long_3d and do_2scalar_long (diff)
downloadqemu-8aab18a2c5209e4e48998a61fbc2d89f374331ed.tar.gz
qemu-8aab18a2c5209e4e48998a61fbc2d89f374331ed.tar.xz
qemu-8aab18a2c5209e4e48998a61fbc2d89f374331ed.zip
target/arm: Improve do_prewiden_3d
We can use proper widening loads to extend 32-bit inputs, and skip the "widenfn" step. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20201030022618.785675-12-richard.henderson@linaro.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/translate.c')
-rw-r--r--target/arm/translate.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 7611c1f0f1..29ea1eb781 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -1183,6 +1183,12 @@ static void read_neon_element64(TCGv_i64 dest, int reg, int ele, MemOp memop)
long off = neon_element_offset(reg, ele, memop);
switch (memop) {
+ case MO_SL:
+ tcg_gen_ld32s_i64(dest, cpu_env, off);
+ break;
+ case MO_UL:
+ tcg_gen_ld32u_i64(dest, cpu_env, off);
+ break;
case MO_Q:
tcg_gen_ld_i64(dest, cpu_env, off);
break;