All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, clg@kaod.org,
	"Víctor Colombo" <victor.colombo@eldorado.org.br>,
	"Daniel Henrique Barboza" <danielhb413@gmail.com>
Subject: [PULL 13/17] target/ppc: Zero second doubleword of VSR registers for FPR insns
Date: Tue, 20 Sep 2022 16:41:58 -0300	[thread overview]
Message-ID: <20220920194202.82615-14-danielhb413@gmail.com> (raw)
In-Reply-To: <20220920194202.82615-1-danielhb413@gmail.com>

From: Víctor Colombo <victor.colombo@eldorado.org.br>

FPR register are mapped to the first doubleword of the VSR registers.
Since PowerISA v3.1, the second doubleword of the target register
must be zeroed for FP instructions.

This patch does it by writting 0 to the second dw everytime the
first dw is being written using set_fpr.

Signed-off-by: Víctor Colombo <victor.colombo@eldorado.org.br>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20220906125523.38765-8-victor.colombo@eldorado.org.br>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
 target/ppc/translate.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index 29939bd923..e810842925 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -6443,6 +6443,14 @@ static inline void get_fpr(TCGv_i64 dst, int regno)
 static inline void set_fpr(int regno, TCGv_i64 src)
 {
     tcg_gen_st_i64(src, cpu_env, fpr_offset(regno));
+    /*
+     * Before PowerISA v3.1 the result of doubleword 1 of the VSR
+     * corresponding to the target FPR was undefined. However,
+     * most (if not all) real hardware were setting the result to 0.
+     * Starting at ISA v3.1, the result for doubleword 1 is now defined
+     * to be 0.
+     */
+    tcg_gen_st_i64(tcg_constant_i64(0), cpu_env, vsr64_offset(regno, false));
 }
 
 static inline void get_avr64(TCGv_i64 dst, int regno, bool high)
-- 
2.37.3



  parent reply	other threads:[~2022-09-20 23:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-20 19:41 [PULL 00/17] ppc queue Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 01/17] target/ppc: Add HASHKEYR and HASHPKEYR SPRs Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 02/17] target/ppc: Implement hashst and hashchk Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 03/17] target/ppc: Implement hashstp and hashchkp Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 04/17] target/ppc: Move fsqrt to decodetree Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 05/17] target/ppc: Move fsqrts " Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 06/17] target/ppc: Merge fsqrt and fsqrts helpers Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 07/17] target/ppc: Remove extra space from s128 field in ppc_vsr_t Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 08/17] target/ppc: Remove unused xer_* macros Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 09/17] target/ppc: Zero second doubleword in DFP instructions Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 10/17] target/ppc: Set result to QNaN for DENBCD when VXCVI occurs Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 11/17] target/ppc: Zero second doubleword for VSX madd instructions Daniel Henrique Barboza
2022-09-20 19:41 ` [PULL 12/17] target/ppc: Set OV32 when OV is set Daniel Henrique Barboza
2022-09-20 19:41 ` Daniel Henrique Barboza [this message]
2022-09-20 19:41 ` [PULL 14/17] target/ppc: Clear fpstatus flags on helpers missing it Daniel Henrique Barboza
2022-09-20 19:42 ` [PULL 15/17] hw/ppc: spapr: Use qemu_vfree() to free spapr->htab Daniel Henrique Barboza
2022-09-20 19:42 ` [PULL 16/17] hw/pci-host: pnv_phb{3, 4}: Fix heap out-of-bound access failure Daniel Henrique Barboza
2022-09-20 19:42 ` [PULL 17/17] hw/ppc/spapr: Fix code style problems reported by checkpatch Daniel Henrique Barboza
2022-09-21 19:44 ` [PULL 00/17] ppc queue Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220920194202.82615-14-danielhb413@gmail.com \
    --to=danielhb413@gmail.com \
    --cc=clg@kaod.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=victor.colombo@eldorado.org.br \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.