projects
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
08975da
)
target/arm: Fix tcg_gen_gvec_dup_imm vs DUP (indexed)
author
Richard Henderson
<richard.henderson@linaro.org>
Thu, 7 May 2020 17:23:52 +0000
(10:23 -0700)
committer
Peter Maydell
<peter.maydell@linaro.org>
Mon, 11 May 2020 13:22:54 +0000
(14:22 +0100)
DUP (indexed) can duplicate 128-bit elements, so using esz
unconditionally can assert in tcg_gen_gvec_dup_imm.
Fixes: 8711e71f9cbb
Reported-by: Laurent Desnogues <laurent.desnogues@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Laurent Desnogues <laurent.desnogues@gmail.com>
Tested-by: Laurent Desnogues <laurent.desnogues@gmail.com>
Message-id:
20200507172352
.15418-5-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target/arm/translate-sve.c
patch
|
blob
|
history
diff --git
a/target/arm/translate-sve.c
b/target/arm/translate-sve.c
index 8398c32362421cad880a610ca0c8a429fa0fb5f4..ac7b3119e5fa1408fe9198c332bedcac33bc8cbb 100644
(file)
--- a/
target/arm/translate-sve.c
+++ b/
target/arm/translate-sve.c
@@
-2044,7
+2044,11
@@
static bool trans_DUP_x(DisasContext *s, arg_DUP_x *a)
unsigned nofs = vec_reg_offset(s, a->rn, index, esz);
tcg_gen_gvec_dup_mem(esz, dofs, nofs, vsz, vsz);
} else {
- tcg_gen_gvec_dup_imm(esz, dofs, vsz, vsz, 0);
+ /*
+ * While dup_mem handles 128-bit elements, dup_imm does not.
+ * Thankfully element size doesn't matter for splatting zero.
+ */
+ tcg_gen_gvec_dup_imm(MO_64, dofs, vsz, vsz, 0);
}
}
return true;