From: Richard Henderson Date: Tue, 20 Jun 2023 13:46:59 +0000 (+0200) Subject: target/arm: Fix sve predicate store, 8 <= VQ <= 15 X-Git-Tag: pull-xen-20230801~71^2~1 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7c347c7333d9c6651b0d0f985e7d919dc3aba607;p=people%2Faperard%2Fqemu-dm.git target/arm: Fix sve predicate store, 8 <= VQ <= 15 Brown bag time: store instead of load results in uninitialized temp. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1704 Reported-by: Mark Rutland Tested-by: Alex Bennée Signed-off-by: Richard Henderson Message-id: 20230620134659.817559-1-richard.henderson@linaro.org Fixes: e6dd5e782be ("target/arm: Use tcg_gen_qemu_{ld, st}_i128 in gen_sve_{ld, st}r") Tested-by: Alex Bennée Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index ff050626e6..225d358922 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4329,7 +4329,7 @@ void gen_sve_str(DisasContext *s, TCGv_ptr base, int vofs, /* Predicate register stores can be any multiple of 2. */ if (len_remain >= 8) { t0 = tcg_temp_new_i64(); - tcg_gen_st_i64(t0, base, vofs + len_align); + tcg_gen_ld_i64(t0, base, vofs + len_align); tcg_gen_qemu_st_i64(t0, clean_addr, midx, MO_LEUQ | MO_ATOM_NONE); len_remain -= 8; len_align += 8;