From 2fbe9c1d1d020d742c88dd3118425dbaea9f07b6 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Tue, 25 Jun 2019 18:29:20 -0500 Subject: [PATCH] target/arm: Stop using cpu_F0s for NEON_2RM_VRECPE_F and NEON_2RM_VRSQRTE_F Stop using cpu_F0s for NEON_2RM_VRECPE_F and NEON_2RM_VRSQRTE_F. Backports commit 9a011fece7201f8e268c982df8c7836f3335bbe6 from qemu --- qemu/target/arm/translate.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qemu/target/arm/translate.c b/qemu/target/arm/translate.c index acb9c35f..789fa59a 100644 --- a/qemu/target/arm/translate.c +++ b/qemu/target/arm/translate.c @@ -4315,7 +4315,7 @@ static int neon_2rm_is_float_op(int op) * what we are asking here is "does the code for this case in * the Neon for-each-pass loop use cpu_F0s?". */ - return op >= NEON_2RM_VRECPE_F; + return op >= NEON_2RM_VCVT_FS; } static bool neon_2rm_is_v8_op(int op) @@ -6985,14 +6985,14 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn) case NEON_2RM_VRECPE_F: { TCGv_ptr fpstatus = get_fpstatus_ptr(s, 1); - gen_helper_recpe_f32(tcg_ctx, s->F0s, s->F0s, fpstatus); + gen_helper_recpe_f32(tcg_ctx, tmp, tmp, fpstatus); tcg_temp_free_ptr(tcg_ctx, fpstatus); break; } case NEON_2RM_VRSQRTE_F: { TCGv_ptr fpstatus = get_fpstatus_ptr(s, 1); - gen_helper_rsqrte_f32(tcg_ctx, s->F0s, s->F0s, fpstatus); + gen_helper_rsqrte_f32(tcg_ctx, tmp, tmp, fpstatus); tcg_temp_free_ptr(tcg_ctx, fpstatus); break; }