qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0
@ 2014-04-08  9:31 Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 01/15] PPC: E500: Set PIR default reset value rather than SPR value Alexander Graf
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc

Hi Peter,

This is my last 2.0 queue for ppc.  Please pull.

Alex


The following changes since commit 55519a4b244e4822774b593e36647ecf7598286b:

  Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-2.0' into staging (2014-04-07 17:57:23 +0100)

are available in the git repository at:


  git://github.com/agraf/qemu.git tags/signed-ppc-for-upstream

for you to fetch changes up to 06f6e12491fd767b3b23573c438f925f6092e897:

  PPC: Add l1 cache sizes for 970 and above systems (2014-04-08 11:20:06 +0200)

----------------------------------------------------------------
Patch queue for ppc - 2014-04-08

This is the final queue for 2.0! It fixes a lot of bugs people have
seen during testing:

  - Fix e500 SMP
  - Fix book3s_64 DEC
  - Fix VSX (new feature in 2.0) for LE hosts
  - Fix PR KVM on top of pHyp (SLOF update)

----------------------------------------------------------------
Alexander Graf (5):
      PPC: E500: Set PIR default reset value rather than SPR value
      PPC: Clean up DECR implementation
      PPC: Only enter MSR_POW when no interrupts pending
      ppce500_spin: Initialize struct properly
      PPC: Add l1 cache sizes for 970 and above systems

Alexey Kardashevskiy (1):
      pseries: Update SLOF firmware image to qemu-slof-20140404

Tom Musta (9):
      softfloat: Introduce float32_to_uint64_round_to_zero
      target-ppc: Bug: VSX Convert to Integer Should Truncate
      target-ppc: Define Endian-Correct Accessors for VSR Field Access
      target-ppc: Correct LE Host Inversion of Lower VSRs
      target-ppc: Correct Simple VSR LE Host Inversions
      target-ppc: Correct VSX Scalar Compares
      target-ppc: Correct VSX FP to FP Conversions
      target-ppc: Correct VSX FP to Integer Conversion
      target-ppc: Correct VSX Integer to FP Conversion

 fpu/softfloat.c             |  20 ++
 hw/ppc/e500.c               |   2 +-
 hw/ppc/ppc.c                |  92 ++++++---
 hw/ppc/ppce500_spin.c       |   6 +-
 include/fpu/softfloat.h     |   1 +
 include/hw/ppc/ppc.h        |   3 +
 pc-bios/README              |   2 +-
 pc-bios/slof.bin            | Bin 921224 -> 921720 bytes
 roms/SLOF                   |   2 +-
 target-ppc/cpu.h            |   1 +
 target-ppc/excp_helper.c    |   5 +-
 target-ppc/fpu_helper.c     | 494 ++++++++++++++++++++++----------------------
 target-ppc/helper_regs.h    |   2 +-
 target-ppc/translate_init.c |   8 +
 14 files changed, 350 insertions(+), 288 deletions(-)

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 01/15] PPC: E500: Set PIR default reset value rather than SPR value
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 02/15] pseries: Update SLOF firmware image to qemu-slof-20140404 Alexander Graf
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc

We now reset SPRs to their reset values on CPU reset. So if we want
to have an SPR persistently changed, we need to change its default
reset value rather than the value itself manually.

Do this for SPR_BOOKE_PIR, fixing e500v2 SMP boot.

Reported-by: Frederic Konrad <fred.konrad@greensocs.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Tested-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
 hw/ppc/e500.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index d7ba25f..f984b3e 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -649,7 +649,7 @@ void ppce500_init(QEMUMachineInitArgs *args, PPCE500Params *params)
         input = (qemu_irq *)env->irq_inputs;
         irqs[i][OPENPIC_OUTPUT_INT] = input[PPCE500_INPUT_INT];
         irqs[i][OPENPIC_OUTPUT_CINT] = input[PPCE500_INPUT_CINT];
-        env->spr[SPR_BOOKE_PIR] = cs->cpu_index = i;
+        env->spr_cb[SPR_BOOKE_PIR].default_value = cs->cpu_index = i;
         env->mpic_iack = MPC8544_CCSRBAR_BASE +
                          MPC8544_MPIC_REGS_OFFSET + 0xa0;
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 02/15] pseries: Update SLOF firmware image to qemu-slof-20140404
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 01/15] PPC: E500: Set PIR default reset value rather than SPR value Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 03/15] softfloat: Introduce float32_to_uint64_round_to_zero Alexander Graf
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexey Kardashevskiy, peter.maydell, qemu-ppc

From: Alexey Kardashevskiy <aik@ozlabs.ru>

The change log is:
  > Isolate sc 1 detection logic
  > build: auto-detect ppc64 architecture
  > cas: increase hcall buffer size to accomodate 256 cpus
  > usb: change device tree naming
  > usb-core: adjust port numbers in set_address
  > virtio-scsi: correct srplun comment
  > Fix kernel loading
  > Workaround to make grub2 assign server ip from dhcp ack packet only
  > ELF: Enter LE binary in LE mode
  > ELF loading should fail for virt != phys

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 pc-bios/README   |   2 +-
 pc-bios/slof.bin | Bin 921224 -> 921720 bytes
 roms/SLOF        |   2 +-
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pc-bios/README b/pc-bios/README
index ef6008d..4381718 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -17,7 +17,7 @@
 - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware
   implementation for certain IBM POWER hardware.  The sources are at
   https://github.com/aik/SLOF, and the image currently in qemu is
-  built from git tag qemu-slof-20140304.
+  built from git tag qemu-slof-20140404.
 
 - sgabios (the Serial Graphics Adapter option ROM) provides a means for
   legacy x86 software to communicate with an attached serial console as
diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin
index a742bffcae7b6fa4003ac18f8c02d292a8e48d21..972e012e51ac61a2e31c9793e6c77c6a95925c3b 100644
GIT binary patch
delta 194968
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
H{oDT!<lo^d

delta 192968
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

diff --git a/roms/SLOF b/roms/SLOF
index af6b7bf..c90b50b 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit af6b7bf5879b6cd6825de2a107cb0e3219fb1df5
+Subproject commit c90b50b5055f976a0da3c032f26fb80157292adc
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 03/15] softfloat: Introduce float32_to_uint64_round_to_zero
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 01/15] PPC: E500: Set PIR default reset value rather than SPR value Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 02/15] pseries: Update SLOF firmware image to qemu-slof-20140404 Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 04/15] target-ppc: Bug: VSX Convert to Integer Should Truncate Alexander Graf
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This change adds the float32_to_uint64_round_to_zero function to the softfloat
library.  This function fills out the complement of float32 to INT round-to-zero
conversion rountines, where INT is {int32_t, uint32_t, int64_t, uint64_t}.

This contribution can be licensed under either the softfloat-2a or -2b
license.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 fpu/softfloat.c         | 20 ++++++++++++++++++++
 include/fpu/softfloat.h |  1 +
 2 files changed, 21 insertions(+)

diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 5f02c16..e00a6fb 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1628,6 +1628,26 @@ uint64 float32_to_uint64(float32 a STATUS_PARAM)
 
 /*----------------------------------------------------------------------------
 | Returns the result of converting the single-precision floating-point value
+| `a' to the 64-bit unsigned integer format.  The conversion is
+| performed according to the IEC/IEEE Standard for Binary Floating-Point
+| Arithmetic, except that the conversion is always rounded toward zero.  If
+| `a' is a NaN, the largest unsigned integer is returned.  Otherwise, if the
+| conversion overflows, the largest unsigned integer is returned.  If the
+| 'a' is negative, the result is rounded and zero is returned; values that do
+| not round to zero will raise the inexact flag.
+*----------------------------------------------------------------------------*/
+
+uint64 float32_to_uint64_round_to_zero(float32 a STATUS_PARAM)
+{
+    signed char current_rounding_mode = STATUS(float_rounding_mode);
+    set_float_rounding_mode(float_round_to_zero STATUS_VAR);
+    int64_t v = float32_to_uint64(a STATUS_VAR);
+    set_float_rounding_mode(current_rounding_mode STATUS_VAR);
+    return v;
+}
+
+/*----------------------------------------------------------------------------
+| Returns the result of converting the single-precision floating-point value
 | `a' to the 64-bit two's complement integer format.  The conversion is
 | performed according to the IEC/IEEE Standard for Binary Floating-Point
 | Arithmetic, except that the conversion is always rounded toward zero.  If
diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h
index db878c1..4b3090c 100644
--- a/include/fpu/softfloat.h
+++ b/include/fpu/softfloat.h
@@ -342,6 +342,7 @@ uint32 float32_to_uint32( float32 STATUS_PARAM );
 uint32 float32_to_uint32_round_to_zero( float32 STATUS_PARAM );
 int64 float32_to_int64( float32 STATUS_PARAM );
 uint64 float32_to_uint64(float32 STATUS_PARAM);
+uint64 float32_to_uint64_round_to_zero(float32 STATUS_PARAM);
 int64 float32_to_int64_round_to_zero( float32 STATUS_PARAM );
 float64 float32_to_float64( float32 STATUS_PARAM );
 floatx80 float32_to_floatx80( float32 STATUS_PARAM );
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 04/15] target-ppc: Bug: VSX Convert to Integer Should Truncate
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (2 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 03/15] softfloat: Introduce float32_to_uint64_round_to_zero Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 05/15] target-ppc: Define Endian-Correct Accessors for VSR Field Access Alexander Graf
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

The various VSX Convert to Integer instructions should truncate the
floating point number to an integer value, which is equivalent to
a round-to-zero rounding mode.  The existing VSX floating point to
integer conversion helpers are erroneously using the rounding mode set
int the PowerPC Floating Point Status and Control Register (FPSCR).
This change corrects this defect by using the appropriate
float*_to_*_round_to_zero() routines fro the softfloat library.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index fd91239..691d572 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -2568,7 +2568,8 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
             fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXCVI, 0);            \
             xt.tfld = rnan;                                                  \
         } else {                                                             \
-            xt.tfld = stp##_to_##ttp(xb.sfld, &env->fp_status);              \
+            xt.tfld = stp##_to_##ttp##_round_to_zero(xb.sfld,                \
+                          &env->fp_status);                                  \
             if (env->fp_status.float_exception_flags & float_flag_invalid) { \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXCVI, 0);        \
             }                                                                \
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 05/15] target-ppc: Define Endian-Correct Accessors for VSR Field Access
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (3 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 04/15] target-ppc: Bug: VSX Convert to Integer Should Truncate Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 06/15] target-ppc: Correct LE Host Inversion of Lower VSRs Alexander Graf
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This change defines accessors for VSR doubleword and word fields that
are correct from a host Endian perspective.  This allows code to
use the Power ISA indexing numbers in code.

For example, the xscvdpsxws instruction has a target VSR that looks
like this:

  0           32       64                    127
  +-----------+--------+-----------+-----------+
  | undefined | SW     | undefined | undefined |
  +-----------+--------+-----------+-----------+

VSX helper code will use VsrW(1) to access this field.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 691d572..d79aae9 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -1782,6 +1782,14 @@ typedef union _ppc_vsr_t {
     float64 f64[2];
 } ppc_vsr_t;
 
+#if defined(HOST_WORDS_BIGENDIAN)
+#define VsrW(i) u32[i]
+#define VsrD(i) u64[i]
+#else
+#define VsrW(i) u32[3-(i)]
+#define VsrD(i) u64[1-(i)]
+#endif
+
 static void getVSR(int n, ppc_vsr_t *vsr, CPUPPCState *env)
 {
     if (n < 32) {
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 06/15] target-ppc: Correct LE Host Inversion of Lower VSRs
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (4 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 05/15] target-ppc: Define Endian-Correct Accessors for VSR Field Access Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 07/15] target-ppc: Correct Simple VSR LE Host Inversions Alexander Graf
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This change properly orders the doublewords of the VSRs 0-31.  Because these
registers are constructed from separate doublewords, they must be inverted
on Little Endian hosts.  The inversion is performed both when the VSR is read
and when it is written.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index d79aae9..9fc7dd8 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -1793,8 +1793,8 @@ typedef union _ppc_vsr_t {
 static void getVSR(int n, ppc_vsr_t *vsr, CPUPPCState *env)
 {
     if (n < 32) {
-        vsr->f64[0] = env->fpr[n];
-        vsr->u64[1] = env->vsr[n];
+        vsr->VsrD(0) = env->fpr[n];
+        vsr->VsrD(1) = env->vsr[n];
     } else {
         vsr->u64[0] = env->avr[n-32].u64[0];
         vsr->u64[1] = env->avr[n-32].u64[1];
@@ -1804,8 +1804,8 @@ static void getVSR(int n, ppc_vsr_t *vsr, CPUPPCState *env)
 static void putVSR(int n, ppc_vsr_t *vsr, CPUPPCState *env)
 {
     if (n < 32) {
-        env->fpr[n] = vsr->f64[0];
-        env->vsr[n] = vsr->u64[1];
+        env->fpr[n] = vsr->VsrD(0);
+        env->vsr[n] = vsr->VsrD(1);
     } else {
         env->avr[n-32].u64[0] = vsr->u64[0];
         env->avr[n-32].u64[1] = vsr->u64[1];
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 07/15] target-ppc: Correct Simple VSR LE Host Inversions
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (5 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 06/15] target-ppc: Correct LE Host Inversion of Lower VSRs Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 08/15] target-ppc: Correct VSX Scalar Compares Alexander Graf
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

A common pattern in the VSX helper code macros is the use of "x.fld[i]" where
"x" is a VSR and "fld" is an argument to a macro ("f64" or "f32" is passed).
This is not always correct on LE hosts.

This change addresses all instances of this pattern to be "x.fld" where "fld" is:

  - "VsrD(0)" for scalar instructions accessing 64-bit numbers
  - "VsrD(i)" for vector instructions accessing 64-bit numbers
  - "VsrW(i)" for vector instructions accessing 32-bit numbers

Note that there are no instances of this pattern where a scalar instruction
accesses a 32-bit number.

Note also that it would be correct to use "VsrD(i)" for scalar instructions since
the loop index is only ever "0".  I have choosen to use "VsrD(0)" instead ... it
seems a little clearer.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 380 ++++++++++++++++++++++++------------------------
 1 file changed, 190 insertions(+), 190 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 9fc7dd8..1c37b30 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -1820,7 +1820,7 @@ static void putVSR(int n, ppc_vsr_t *vsr, CPUPPCState *env)
  *   op    - operation (add or sub)
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   sfprf - set FPRF
  */
 #define VSX_ADD_SUB(name, op, nels, tp, fld, sfprf, r2sp)                    \
@@ -1837,44 +1837,44 @@ void helper_##name(CPUPPCState *env, uint32_t opcode)                        \
     for (i = 0; i < nels; i++) {                                             \
         float_status tstat = env->fp_status;                                 \
         set_float_exception_flags(0, &tstat);                                \
-        xt.fld[i] = tp##_##op(xa.fld[i], xb.fld[i], &tstat);                 \
+        xt.fld = tp##_##op(xa.fld, xb.fld, &tstat);                          \
         env->fp_status.float_exception_flags |= tstat.float_exception_flags; \
                                                                              \
         if (unlikely(tstat.float_exception_flags & float_flag_invalid)) {    \
-            if (tp##_is_infinity(xa.fld[i]) && tp##_is_infinity(xb.fld[i])) {\
+            if (tp##_is_infinity(xa.fld) && tp##_is_infinity(xb.fld)) {      \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXISI, sfprf);    \
-            } else if (tp##_is_signaling_nan(xa.fld[i]) ||                   \
-                       tp##_is_signaling_nan(xb.fld[i])) {                   \
+            } else if (tp##_is_signaling_nan(xa.fld) ||                      \
+                       tp##_is_signaling_nan(xb.fld)) {                      \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);   \
             }                                                                \
         }                                                                    \
                                                                              \
         if (r2sp) {                                                          \
-            xt.fld[i] = helper_frsp(env, xt.fld[i]);                         \
+            xt.fld = helper_frsp(env, xt.fld);                               \
         }                                                                    \
                                                                              \
         if (sfprf) {                                                         \
-            helper_compute_fprf(env, xt.fld[i], sfprf);                      \
+            helper_compute_fprf(env, xt.fld, sfprf);                         \
         }                                                                    \
     }                                                                        \
     putVSR(xT(opcode), &xt, env);                                            \
     helper_float_check_status(env);                                          \
 }
 
-VSX_ADD_SUB(xsadddp, add, 1, float64, f64, 1, 0)
-VSX_ADD_SUB(xsaddsp, add, 1, float64, f64, 1, 1)
-VSX_ADD_SUB(xvadddp, add, 2, float64, f64, 0, 0)
-VSX_ADD_SUB(xvaddsp, add, 4, float32, f32, 0, 0)
-VSX_ADD_SUB(xssubdp, sub, 1, float64, f64, 1, 0)
-VSX_ADD_SUB(xssubsp, sub, 1, float64, f64, 1, 1)
-VSX_ADD_SUB(xvsubdp, sub, 2, float64, f64, 0, 0)
-VSX_ADD_SUB(xvsubsp, sub, 4, float32, f32, 0, 0)
+VSX_ADD_SUB(xsadddp, add, 1, float64, VsrD(0), 1, 0)
+VSX_ADD_SUB(xsaddsp, add, 1, float64, VsrD(0), 1, 1)
+VSX_ADD_SUB(xvadddp, add, 2, float64, VsrD(i), 0, 0)
+VSX_ADD_SUB(xvaddsp, add, 4, float32, VsrW(i), 0, 0)
+VSX_ADD_SUB(xssubdp, sub, 1, float64, VsrD(0), 1, 0)
+VSX_ADD_SUB(xssubsp, sub, 1, float64, VsrD(0), 1, 1)
+VSX_ADD_SUB(xvsubdp, sub, 2, float64, VsrD(i), 0, 0)
+VSX_ADD_SUB(xvsubsp, sub, 4, float32, VsrW(i), 0, 0)
 
 /* VSX_MUL - VSX floating point multiply
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   sfprf - set FPRF
  */
 #define VSX_MUL(op, nels, tp, fld, sfprf, r2sp)                              \
@@ -1891,25 +1891,25 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     for (i = 0; i < nels; i++) {                                             \
         float_status tstat = env->fp_status;                                 \
         set_float_exception_flags(0, &tstat);                                \
-        xt.fld[i] = tp##_mul(xa.fld[i], xb.fld[i], &tstat);                  \
+        xt.fld = tp##_mul(xa.fld, xb.fld, &tstat);                           \
         env->fp_status.float_exception_flags |= tstat.float_exception_flags; \
                                                                              \
         if (unlikely(tstat.float_exception_flags & float_flag_invalid)) {    \
-            if ((tp##_is_infinity(xa.fld[i]) && tp##_is_zero(xb.fld[i])) ||  \
-                (tp##_is_infinity(xb.fld[i]) && tp##_is_zero(xa.fld[i]))) {  \
+            if ((tp##_is_infinity(xa.fld) && tp##_is_zero(xb.fld)) ||        \
+                (tp##_is_infinity(xb.fld) && tp##_is_zero(xa.fld))) {        \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXIMZ, sfprf);    \
-            } else if (tp##_is_signaling_nan(xa.fld[i]) ||                   \
-                       tp##_is_signaling_nan(xb.fld[i])) {                   \
+            } else if (tp##_is_signaling_nan(xa.fld) ||                      \
+                       tp##_is_signaling_nan(xb.fld)) {                      \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);   \
             }                                                                \
         }                                                                    \
                                                                              \
         if (r2sp) {                                                          \
-            xt.fld[i] = helper_frsp(env, xt.fld[i]);                         \
+            xt.fld = helper_frsp(env, xt.fld);                               \
         }                                                                    \
                                                                              \
         if (sfprf) {                                                         \
-            helper_compute_fprf(env, xt.fld[i], sfprf);                      \
+            helper_compute_fprf(env, xt.fld, sfprf);                         \
         }                                                                    \
     }                                                                        \
                                                                              \
@@ -1917,16 +1917,16 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     helper_float_check_status(env);                                          \
 }
 
-VSX_MUL(xsmuldp, 1, float64, f64, 1, 0)
-VSX_MUL(xsmulsp, 1, float64, f64, 1, 1)
-VSX_MUL(xvmuldp, 2, float64, f64, 0, 0)
-VSX_MUL(xvmulsp, 4, float32, f32, 0, 0)
+VSX_MUL(xsmuldp, 1, float64, VsrD(0), 1, 0)
+VSX_MUL(xsmulsp, 1, float64, VsrD(0), 1, 1)
+VSX_MUL(xvmuldp, 2, float64, VsrD(i), 0, 0)
+VSX_MUL(xvmulsp, 4, float32, VsrW(i), 0, 0)
 
 /* VSX_DIV - VSX floating point divide
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   sfprf - set FPRF
  */
 #define VSX_DIV(op, nels, tp, fld, sfprf, r2sp)                               \
@@ -1943,27 +1943,27 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                           \
     for (i = 0; i < nels; i++) {                                              \
         float_status tstat = env->fp_status;                                  \
         set_float_exception_flags(0, &tstat);                                 \
-        xt.fld[i] = tp##_div(xa.fld[i], xb.fld[i], &tstat);                   \
+        xt.fld = tp##_div(xa.fld, xb.fld, &tstat);                            \
         env->fp_status.float_exception_flags |= tstat.float_exception_flags;  \
                                                                               \
         if (unlikely(tstat.float_exception_flags & float_flag_invalid)) {     \
-            if (tp##_is_infinity(xa.fld[i]) && tp##_is_infinity(xb.fld[i])) { \
+            if (tp##_is_infinity(xa.fld) && tp##_is_infinity(xb.fld)) {       \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXIDI, sfprf);     \
-            } else if (tp##_is_zero(xa.fld[i]) &&                             \
-                tp##_is_zero(xb.fld[i])) {                                    \
+            } else if (tp##_is_zero(xa.fld) &&                                \
+                tp##_is_zero(xb.fld)) {                                       \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXZDZ, sfprf);     \
-            } else if (tp##_is_signaling_nan(xa.fld[i]) ||                    \
-                tp##_is_signaling_nan(xb.fld[i])) {                           \
+            } else if (tp##_is_signaling_nan(xa.fld) ||                       \
+                tp##_is_signaling_nan(xb.fld)) {                              \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);    \
             }                                                                 \
         }                                                                     \
                                                                               \
         if (r2sp) {                                                           \
-            xt.fld[i] = helper_frsp(env, xt.fld[i]);                          \
+            xt.fld = helper_frsp(env, xt.fld);                                \
         }                                                                     \
                                                                               \
         if (sfprf) {                                                          \
-            helper_compute_fprf(env, xt.fld[i], sfprf);                       \
+            helper_compute_fprf(env, xt.fld, sfprf);                          \
         }                                                                     \
     }                                                                         \
                                                                               \
@@ -1971,16 +1971,16 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                           \
     helper_float_check_status(env);                                           \
 }
 
-VSX_DIV(xsdivdp, 1, float64, f64, 1, 0)
-VSX_DIV(xsdivsp, 1, float64, f64, 1, 1)
-VSX_DIV(xvdivdp, 2, float64, f64, 0, 0)
-VSX_DIV(xvdivsp, 4, float32, f32, 0, 0)
+VSX_DIV(xsdivdp, 1, float64, VsrD(0), 1, 0)
+VSX_DIV(xsdivsp, 1, float64, VsrD(0), 1, 1)
+VSX_DIV(xvdivdp, 2, float64, VsrD(i), 0, 0)
+VSX_DIV(xvdivsp, 4, float32, VsrW(i), 0, 0)
 
 /* VSX_RE  - VSX floating point reciprocal estimate
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   sfprf - set FPRF
  */
 #define VSX_RE(op, nels, tp, fld, sfprf, r2sp)                                \
@@ -1994,17 +1994,17 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                           \
     helper_reset_fpstatus(env);                                               \
                                                                               \
     for (i = 0; i < nels; i++) {                                              \
-        if (unlikely(tp##_is_signaling_nan(xb.fld[i]))) {                     \
+        if (unlikely(tp##_is_signaling_nan(xb.fld))) {                        \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);    \
         }                                                                     \
-        xt.fld[i] = tp##_div(tp##_one, xb.fld[i], &env->fp_status);           \
+        xt.fld = tp##_div(tp##_one, xb.fld, &env->fp_status);                 \
                                                                               \
         if (r2sp) {                                                           \
-            xt.fld[i] = helper_frsp(env, xt.fld[i]);                          \
+            xt.fld = helper_frsp(env, xt.fld);                                \
         }                                                                     \
                                                                               \
         if (sfprf) {                                                          \
-            helper_compute_fprf(env, xt.fld[0], sfprf);                       \
+            helper_compute_fprf(env, xt.fld, sfprf);                          \
         }                                                                     \
     }                                                                         \
                                                                               \
@@ -2012,16 +2012,16 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                           \
     helper_float_check_status(env);                                           \
 }
 
-VSX_RE(xsredp, 1, float64, f64, 1, 0)
-VSX_RE(xsresp, 1, float64, f64, 1, 1)
-VSX_RE(xvredp, 2, float64, f64, 0, 0)
-VSX_RE(xvresp, 4, float32, f32, 0, 0)
+VSX_RE(xsredp, 1, float64, VsrD(0), 1, 0)
+VSX_RE(xsresp, 1, float64, VsrD(0), 1, 1)
+VSX_RE(xvredp, 2, float64, VsrD(i), 0, 0)
+VSX_RE(xvresp, 4, float32, VsrW(i), 0, 0)
 
 /* VSX_SQRT - VSX floating point square root
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   sfprf - set FPRF
  */
 #define VSX_SQRT(op, nels, tp, fld, sfprf, r2sp)                             \
@@ -2037,23 +2037,23 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     for (i = 0; i < nels; i++) {                                             \
         float_status tstat = env->fp_status;                                 \
         set_float_exception_flags(0, &tstat);                                \
-        xt.fld[i] = tp##_sqrt(xb.fld[i], &tstat);                            \
+        xt.fld = tp##_sqrt(xb.fld, &tstat);                                  \
         env->fp_status.float_exception_flags |= tstat.float_exception_flags; \
                                                                              \
         if (unlikely(tstat.float_exception_flags & float_flag_invalid)) {    \
-            if (tp##_is_neg(xb.fld[i]) && !tp##_is_zero(xb.fld[i])) {        \
+            if (tp##_is_neg(xb.fld) && !tp##_is_zero(xb.fld)) {              \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, sfprf);   \
-            } else if (tp##_is_signaling_nan(xb.fld[i])) {                   \
+            } else if (tp##_is_signaling_nan(xb.fld)) {                      \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);   \
             }                                                                \
         }                                                                    \
                                                                              \
         if (r2sp) {                                                          \
-            xt.fld[i] = helper_frsp(env, xt.fld[i]);                         \
+            xt.fld = helper_frsp(env, xt.fld);                               \
         }                                                                    \
                                                                              \
         if (sfprf) {                                                         \
-            helper_compute_fprf(env, xt.fld[i], sfprf);                      \
+            helper_compute_fprf(env, xt.fld, sfprf);                         \
         }                                                                    \
     }                                                                        \
                                                                              \
@@ -2061,16 +2061,16 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     helper_float_check_status(env);                                          \
 }
 
-VSX_SQRT(xssqrtdp, 1, float64, f64, 1, 0)
-VSX_SQRT(xssqrtsp, 1, float64, f64, 1, 1)
-VSX_SQRT(xvsqrtdp, 2, float64, f64, 0, 0)
-VSX_SQRT(xvsqrtsp, 4, float32, f32, 0, 0)
+VSX_SQRT(xssqrtdp, 1, float64, VsrD(0), 1, 0)
+VSX_SQRT(xssqrtsp, 1, float64, VsrD(0), 1, 1)
+VSX_SQRT(xvsqrtdp, 2, float64, VsrD(i), 0, 0)
+VSX_SQRT(xvsqrtsp, 4, float32, VsrW(i), 0, 0)
 
 /* VSX_RSQRTE - VSX floating point reciprocal square root estimate
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   sfprf - set FPRF
  */
 #define VSX_RSQRTE(op, nels, tp, fld, sfprf, r2sp)                           \
@@ -2086,24 +2086,24 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     for (i = 0; i < nels; i++) {                                             \
         float_status tstat = env->fp_status;                                 \
         set_float_exception_flags(0, &tstat);                                \
-        xt.fld[i] = tp##_sqrt(xb.fld[i], &tstat);                            \
-        xt.fld[i] = tp##_div(tp##_one, xt.fld[i], &tstat);                   \
+        xt.fld = tp##_sqrt(xb.fld, &tstat);                                  \
+        xt.fld = tp##_div(tp##_one, xt.fld, &tstat);                         \
         env->fp_status.float_exception_flags |= tstat.float_exception_flags; \
                                                                              \
         if (unlikely(tstat.float_exception_flags & float_flag_invalid)) {    \
-            if (tp##_is_neg(xb.fld[i]) && !tp##_is_zero(xb.fld[i])) {        \
+            if (tp##_is_neg(xb.fld) && !tp##_is_zero(xb.fld)) {              \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, sfprf);   \
-            } else if (tp##_is_signaling_nan(xb.fld[i])) {                   \
+            } else if (tp##_is_signaling_nan(xb.fld)) {                      \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);   \
             }                                                                \
         }                                                                    \
                                                                              \
         if (r2sp) {                                                          \
-            xt.fld[i] = helper_frsp(env, xt.fld[i]);                         \
+            xt.fld = helper_frsp(env, xt.fld);                               \
         }                                                                    \
                                                                              \
         if (sfprf) {                                                         \
-            helper_compute_fprf(env, xt.fld[i], sfprf);                      \
+            helper_compute_fprf(env, xt.fld, sfprf);                         \
         }                                                                    \
     }                                                                        \
                                                                              \
@@ -2111,16 +2111,16 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     helper_float_check_status(env);                                          \
 }
 
-VSX_RSQRTE(xsrsqrtedp, 1, float64, f64, 1, 0)
-VSX_RSQRTE(xsrsqrtesp, 1, float64, f64, 1, 1)
-VSX_RSQRTE(xvrsqrtedp, 2, float64, f64, 0, 0)
-VSX_RSQRTE(xvrsqrtesp, 4, float32, f32, 0, 0)
+VSX_RSQRTE(xsrsqrtedp, 1, float64, VsrD(0), 1, 0)
+VSX_RSQRTE(xsrsqrtesp, 1, float64, VsrD(0), 1, 1)
+VSX_RSQRTE(xvrsqrtedp, 2, float64, VsrD(i), 0, 0)
+VSX_RSQRTE(xvrsqrtesp, 4, float32, VsrW(i), 0, 0)
 
 /* VSX_TDIV - VSX floating point test for divide
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   emin  - minimum unbiased exponent
  *   emax  - maximum unbiased exponent
  *   nbits - number of fraction bits
@@ -2137,28 +2137,28 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
     getVSR(xB(opcode), &xb, env);                                       \
                                                                         \
     for (i = 0; i < nels; i++) {                                        \
-        if (unlikely(tp##_is_infinity(xa.fld[i]) ||                     \
-                     tp##_is_infinity(xb.fld[i]) ||                     \
-                     tp##_is_zero(xb.fld[i]))) {                        \
+        if (unlikely(tp##_is_infinity(xa.fld) ||                        \
+                     tp##_is_infinity(xb.fld) ||                        \
+                     tp##_is_zero(xb.fld))) {                           \
             fe_flag = 1;                                                \
             fg_flag = 1;                                                \
         } else {                                                        \
-            int e_a = ppc_##tp##_get_unbiased_exp(xa.fld[i]);           \
-            int e_b = ppc_##tp##_get_unbiased_exp(xb.fld[i]);           \
+            int e_a = ppc_##tp##_get_unbiased_exp(xa.fld);              \
+            int e_b = ppc_##tp##_get_unbiased_exp(xb.fld);              \
                                                                         \
-            if (unlikely(tp##_is_any_nan(xa.fld[i]) ||                  \
-                         tp##_is_any_nan(xb.fld[i]))) {                 \
+            if (unlikely(tp##_is_any_nan(xa.fld) ||                     \
+                         tp##_is_any_nan(xb.fld))) {                    \
                 fe_flag = 1;                                            \
             } else if ((e_b <= emin) || (e_b >= (emax-2))) {            \
                 fe_flag = 1;                                            \
-            } else if (!tp##_is_zero(xa.fld[i]) &&                      \
+            } else if (!tp##_is_zero(xa.fld) &&                         \
                        (((e_a - e_b) >= emax) ||                        \
                         ((e_a - e_b) <= (emin+1)) ||                    \
                          (e_a <= (emin+nbits)))) {                      \
                 fe_flag = 1;                                            \
             }                                                           \
                                                                         \
-            if (unlikely(tp##_is_zero_or_denormal(xb.fld[i]))) {        \
+            if (unlikely(tp##_is_zero_or_denormal(xb.fld))) {           \
                 /* XB is not zero because of the above check and */     \
                 /* so must be denormalized.                      */     \
                 fg_flag = 1;                                            \
@@ -2169,15 +2169,15 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
     env->crf[BF(opcode)] = 0x8 | (fg_flag ? 4 : 0) | (fe_flag ? 2 : 0); \
 }
 
-VSX_TDIV(xstdivdp, 1, float64, f64, -1022, 1023, 52)
-VSX_TDIV(xvtdivdp, 2, float64, f64, -1022, 1023, 52)
-VSX_TDIV(xvtdivsp, 4, float32, f32, -126, 127, 23)
+VSX_TDIV(xstdivdp, 1, float64, VsrD(0), -1022, 1023, 52)
+VSX_TDIV(xvtdivdp, 2, float64, VsrD(i), -1022, 1023, 52)
+VSX_TDIV(xvtdivsp, 4, float32, VsrW(i), -126, 127, 23)
 
 /* VSX_TSQRT - VSX floating point test for square root
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   emin  - minimum unbiased exponent
  *   emax  - maximum unbiased exponent
  *   nbits - number of fraction bits
@@ -2194,25 +2194,25 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
     getVSR(xB(opcode), &xb, env);                                       \
                                                                         \
     for (i = 0; i < nels; i++) {                                        \
-        if (unlikely(tp##_is_infinity(xb.fld[i]) ||                     \
-                     tp##_is_zero(xb.fld[i]))) {                        \
+        if (unlikely(tp##_is_infinity(xb.fld) ||                        \
+                     tp##_is_zero(xb.fld))) {                           \
             fe_flag = 1;                                                \
             fg_flag = 1;                                                \
         } else {                                                        \
-            int e_b = ppc_##tp##_get_unbiased_exp(xb.fld[i]);           \
+            int e_b = ppc_##tp##_get_unbiased_exp(xb.fld);              \
                                                                         \
-            if (unlikely(tp##_is_any_nan(xb.fld[i]))) {                 \
+            if (unlikely(tp##_is_any_nan(xb.fld))) {                    \
                 fe_flag = 1;                                            \
-            } else if (unlikely(tp##_is_zero(xb.fld[i]))) {             \
+            } else if (unlikely(tp##_is_zero(xb.fld))) {                \
                 fe_flag = 1;                                            \
-            } else if (unlikely(tp##_is_neg(xb.fld[i]))) {              \
+            } else if (unlikely(tp##_is_neg(xb.fld))) {                 \
                 fe_flag = 1;                                            \
-            } else if (!tp##_is_zero(xb.fld[i]) &&                      \
+            } else if (!tp##_is_zero(xb.fld) &&                         \
                       (e_b <= (emin+nbits))) {                          \
                 fe_flag = 1;                                            \
             }                                                           \
                                                                         \
-            if (unlikely(tp##_is_zero_or_denormal(xb.fld[i]))) {        \
+            if (unlikely(tp##_is_zero_or_denormal(xb.fld))) {           \
                 /* XB is not zero because of the above check and */     \
                 /* therefore must be denormalized.               */     \
                 fg_flag = 1;                                            \
@@ -2223,15 +2223,15 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
     env->crf[BF(opcode)] = 0x8 | (fg_flag ? 4 : 0) | (fe_flag ? 2 : 0); \
 }
 
-VSX_TSQRT(xstsqrtdp, 1, float64, f64, -1022, 52)
-VSX_TSQRT(xvtsqrtdp, 2, float64, f64, -1022, 52)
-VSX_TSQRT(xvtsqrtsp, 4, float32, f32, -126, 23)
+VSX_TSQRT(xstsqrtdp, 1, float64, VsrD(0), -1022, 52)
+VSX_TSQRT(xvtsqrtdp, 2, float64, VsrD(i), -1022, 52)
+VSX_TSQRT(xvtsqrtsp, 4, float32, VsrW(i), -126, 23)
 
 /* VSX_MADD - VSX floating point muliply/add variations
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   maddflgs - flags for the float*muladd routine that control the
  *           various forms (madd, msub, nmadd, nmsub)
  *   afrm  - A form (1=A, 0=M)
@@ -2267,43 +2267,43 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                           \
             /* Avoid double rounding errors by rounding the intermediate */   \
             /* result to odd.                                            */   \
             set_float_rounding_mode(float_round_to_zero, &tstat);             \
-            xt_out.fld[i] = tp##_muladd(xa.fld[i], b->fld[i], c->fld[i],      \
+            xt_out.fld = tp##_muladd(xa.fld, b->fld, c->fld,                  \
                                        maddflgs, &tstat);                     \
-            xt_out.fld[i] |= (get_float_exception_flags(&tstat) &             \
+            xt_out.fld |= (get_float_exception_flags(&tstat) &                \
                               float_flag_inexact) != 0;                       \
         } else {                                                              \
-            xt_out.fld[i] = tp##_muladd(xa.fld[i], b->fld[i], c->fld[i],      \
+            xt_out.fld = tp##_muladd(xa.fld, b->fld, c->fld,                  \
                                         maddflgs, &tstat);                    \
         }                                                                     \
         env->fp_status.float_exception_flags |= tstat.float_exception_flags;  \
                                                                               \
         if (unlikely(tstat.float_exception_flags & float_flag_invalid)) {     \
-            if (tp##_is_signaling_nan(xa.fld[i]) ||                           \
-                tp##_is_signaling_nan(b->fld[i]) ||                           \
-                tp##_is_signaling_nan(c->fld[i])) {                           \
+            if (tp##_is_signaling_nan(xa.fld) ||                              \
+                tp##_is_signaling_nan(b->fld) ||                              \
+                tp##_is_signaling_nan(c->fld)) {                              \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, sfprf);    \
                 tstat.float_exception_flags &= ~float_flag_invalid;           \
             }                                                                 \
-            if ((tp##_is_infinity(xa.fld[i]) && tp##_is_zero(b->fld[i])) ||   \
-                (tp##_is_zero(xa.fld[i]) && tp##_is_infinity(b->fld[i]))) {   \
-                xt_out.fld[i] = float64_to_##tp(fload_invalid_op_excp(env,    \
+            if ((tp##_is_infinity(xa.fld) && tp##_is_zero(b->fld)) ||         \
+                (tp##_is_zero(xa.fld) && tp##_is_infinity(b->fld))) {         \
+                xt_out.fld = float64_to_##tp(fload_invalid_op_excp(env,       \
                     POWERPC_EXCP_FP_VXIMZ, sfprf), &env->fp_status);          \
                 tstat.float_exception_flags &= ~float_flag_invalid;           \
             }                                                                 \
             if ((tstat.float_exception_flags & float_flag_invalid) &&         \
-                ((tp##_is_infinity(xa.fld[i]) ||                              \
-                  tp##_is_infinity(b->fld[i])) &&                             \
-                  tp##_is_infinity(c->fld[i]))) {                             \
+                ((tp##_is_infinity(xa.fld) ||                                 \
+                  tp##_is_infinity(b->fld)) &&                                \
+                  tp##_is_infinity(c->fld))) {                                \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXISI, sfprf);     \
             }                                                                 \
         }                                                                     \
                                                                               \
         if (r2sp) {                                                           \
-            xt_out.fld[i] = helper_frsp(env, xt_out.fld[i]);                  \
+            xt_out.fld = helper_frsp(env, xt_out.fld);                        \
         }                                                                     \
                                                                               \
         if (sfprf) {                                                          \
-            helper_compute_fprf(env, xt_out.fld[i], sfprf);                   \
+            helper_compute_fprf(env, xt_out.fld, sfprf);                      \
         }                                                                     \
     }                                                                         \
     putVSR(xT(opcode), &xt_out, env);                                         \
@@ -2315,41 +2315,41 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                           \
 #define NMADD_FLGS float_muladd_negate_result
 #define NMSUB_FLGS (float_muladd_negate_c | float_muladd_negate_result)
 
-VSX_MADD(xsmaddadp, 1, float64, f64, MADD_FLGS, 1, 1, 0)
-VSX_MADD(xsmaddmdp, 1, float64, f64, MADD_FLGS, 0, 1, 0)
-VSX_MADD(xsmsubadp, 1, float64, f64, MSUB_FLGS, 1, 1, 0)
-VSX_MADD(xsmsubmdp, 1, float64, f64, MSUB_FLGS, 0, 1, 0)
-VSX_MADD(xsnmaddadp, 1, float64, f64, NMADD_FLGS, 1, 1, 0)
-VSX_MADD(xsnmaddmdp, 1, float64, f64, NMADD_FLGS, 0, 1, 0)
-VSX_MADD(xsnmsubadp, 1, float64, f64, NMSUB_FLGS, 1, 1, 0)
-VSX_MADD(xsnmsubmdp, 1, float64, f64, NMSUB_FLGS, 0, 1, 0)
-
-VSX_MADD(xsmaddasp, 1, float64, f64, MADD_FLGS, 1, 1, 1)
-VSX_MADD(xsmaddmsp, 1, float64, f64, MADD_FLGS, 0, 1, 1)
-VSX_MADD(xsmsubasp, 1, float64, f64, MSUB_FLGS, 1, 1, 1)
-VSX_MADD(xsmsubmsp, 1, float64, f64, MSUB_FLGS, 0, 1, 1)
-VSX_MADD(xsnmaddasp, 1, float64, f64, NMADD_FLGS, 1, 1, 1)
-VSX_MADD(xsnmaddmsp, 1, float64, f64, NMADD_FLGS, 0, 1, 1)
-VSX_MADD(xsnmsubasp, 1, float64, f64, NMSUB_FLGS, 1, 1, 1)
-VSX_MADD(xsnmsubmsp, 1, float64, f64, NMSUB_FLGS, 0, 1, 1)
-
-VSX_MADD(xvmaddadp, 2, float64, f64, MADD_FLGS, 1, 0, 0)
-VSX_MADD(xvmaddmdp, 2, float64, f64, MADD_FLGS, 0, 0, 0)
-VSX_MADD(xvmsubadp, 2, float64, f64, MSUB_FLGS, 1, 0, 0)
-VSX_MADD(xvmsubmdp, 2, float64, f64, MSUB_FLGS, 0, 0, 0)
-VSX_MADD(xvnmaddadp, 2, float64, f64, NMADD_FLGS, 1, 0, 0)
-VSX_MADD(xvnmaddmdp, 2, float64, f64, NMADD_FLGS, 0, 0, 0)
-VSX_MADD(xvnmsubadp, 2, float64, f64, NMSUB_FLGS, 1, 0, 0)
-VSX_MADD(xvnmsubmdp, 2, float64, f64, NMSUB_FLGS, 0, 0, 0)
-
-VSX_MADD(xvmaddasp, 4, float32, f32, MADD_FLGS, 1, 0, 0)
-VSX_MADD(xvmaddmsp, 4, float32, f32, MADD_FLGS, 0, 0, 0)
-VSX_MADD(xvmsubasp, 4, float32, f32, MSUB_FLGS, 1, 0, 0)
-VSX_MADD(xvmsubmsp, 4, float32, f32, MSUB_FLGS, 0, 0, 0)
-VSX_MADD(xvnmaddasp, 4, float32, f32, NMADD_FLGS, 1, 0, 0)
-VSX_MADD(xvnmaddmsp, 4, float32, f32, NMADD_FLGS, 0, 0, 0)
-VSX_MADD(xvnmsubasp, 4, float32, f32, NMSUB_FLGS, 1, 0, 0)
-VSX_MADD(xvnmsubmsp, 4, float32, f32, NMSUB_FLGS, 0, 0, 0)
+VSX_MADD(xsmaddadp, 1, float64, VsrD(0), MADD_FLGS, 1, 1, 0)
+VSX_MADD(xsmaddmdp, 1, float64, VsrD(0), MADD_FLGS, 0, 1, 0)
+VSX_MADD(xsmsubadp, 1, float64, VsrD(0), MSUB_FLGS, 1, 1, 0)
+VSX_MADD(xsmsubmdp, 1, float64, VsrD(0), MSUB_FLGS, 0, 1, 0)
+VSX_MADD(xsnmaddadp, 1, float64, VsrD(0), NMADD_FLGS, 1, 1, 0)
+VSX_MADD(xsnmaddmdp, 1, float64, VsrD(0), NMADD_FLGS, 0, 1, 0)
+VSX_MADD(xsnmsubadp, 1, float64, VsrD(0), NMSUB_FLGS, 1, 1, 0)
+VSX_MADD(xsnmsubmdp, 1, float64, VsrD(0), NMSUB_FLGS, 0, 1, 0)
+
+VSX_MADD(xsmaddasp, 1, float64, VsrD(0), MADD_FLGS, 1, 1, 1)
+VSX_MADD(xsmaddmsp, 1, float64, VsrD(0), MADD_FLGS, 0, 1, 1)
+VSX_MADD(xsmsubasp, 1, float64, VsrD(0), MSUB_FLGS, 1, 1, 1)
+VSX_MADD(xsmsubmsp, 1, float64, VsrD(0), MSUB_FLGS, 0, 1, 1)
+VSX_MADD(xsnmaddasp, 1, float64, VsrD(0), NMADD_FLGS, 1, 1, 1)
+VSX_MADD(xsnmaddmsp, 1, float64, VsrD(0), NMADD_FLGS, 0, 1, 1)
+VSX_MADD(xsnmsubasp, 1, float64, VsrD(0), NMSUB_FLGS, 1, 1, 1)
+VSX_MADD(xsnmsubmsp, 1, float64, VsrD(0), NMSUB_FLGS, 0, 1, 1)
+
+VSX_MADD(xvmaddadp, 2, float64, VsrD(i), MADD_FLGS, 1, 0, 0)
+VSX_MADD(xvmaddmdp, 2, float64, VsrD(i), MADD_FLGS, 0, 0, 0)
+VSX_MADD(xvmsubadp, 2, float64, VsrD(i), MSUB_FLGS, 1, 0, 0)
+VSX_MADD(xvmsubmdp, 2, float64, VsrD(i), MSUB_FLGS, 0, 0, 0)
+VSX_MADD(xvnmaddadp, 2, float64, VsrD(i), NMADD_FLGS, 1, 0, 0)
+VSX_MADD(xvnmaddmdp, 2, float64, VsrD(i), NMADD_FLGS, 0, 0, 0)
+VSX_MADD(xvnmsubadp, 2, float64, VsrD(i), NMSUB_FLGS, 1, 0, 0)
+VSX_MADD(xvnmsubmdp, 2, float64, VsrD(i), NMSUB_FLGS, 0, 0, 0)
+
+VSX_MADD(xvmaddasp, 4, float32, VsrW(i), MADD_FLGS, 1, 0, 0)
+VSX_MADD(xvmaddmsp, 4, float32, VsrW(i), MADD_FLGS, 0, 0, 0)
+VSX_MADD(xvmsubasp, 4, float32, VsrW(i), MSUB_FLGS, 1, 0, 0)
+VSX_MADD(xvmsubmsp, 4, float32, VsrW(i), MSUB_FLGS, 0, 0, 0)
+VSX_MADD(xvnmaddasp, 4, float32, VsrW(i), NMADD_FLGS, 1, 0, 0)
+VSX_MADD(xvnmaddmsp, 4, float32, VsrW(i), NMADD_FLGS, 0, 0, 0)
+VSX_MADD(xvnmsubasp, 4, float32, VsrW(i), NMSUB_FLGS, 1, 0, 0)
+VSX_MADD(xvnmsubmsp, 4, float32, VsrW(i), NMSUB_FLGS, 0, 0, 0)
 
 #define VSX_SCALAR_CMP(op, ordered)                                      \
 void helper_##op(CPUPPCState *env, uint32_t opcode)                      \
@@ -2398,7 +2398,7 @@ VSX_SCALAR_CMP(xscmpudp, 0)
  *   op    - operation (max or min)
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  */
 #define VSX_MAX_MIN(name, op, nels, tp, fld)                                  \
 void helper_##name(CPUPPCState *env, uint32_t opcode)                         \
@@ -2411,9 +2411,9 @@ void helper_##name(CPUPPCState *env, uint32_t opcode)                         \
     getVSR(xT(opcode), &xt, env);                                             \
                                                                               \
     for (i = 0; i < nels; i++) {                                              \
-        xt.fld[i] = tp##_##op(xa.fld[i], xb.fld[i], &env->fp_status);         \
-        if (unlikely(tp##_is_signaling_nan(xa.fld[i]) ||                      \
-                     tp##_is_signaling_nan(xb.fld[i]))) {                     \
+        xt.fld = tp##_##op(xa.fld, xb.fld, &env->fp_status);                  \
+        if (unlikely(tp##_is_signaling_nan(xa.fld) ||                         \
+                     tp##_is_signaling_nan(xb.fld))) {                        \
             fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 0);            \
         }                                                                     \
     }                                                                         \
@@ -2422,18 +2422,18 @@ void helper_##name(CPUPPCState *env, uint32_t opcode)                         \
     helper_float_check_status(env);                                           \
 }
 
-VSX_MAX_MIN(xsmaxdp, maxnum, 1, float64, f64)
-VSX_MAX_MIN(xvmaxdp, maxnum, 2, float64, f64)
-VSX_MAX_MIN(xvmaxsp, maxnum, 4, float32, f32)
-VSX_MAX_MIN(xsmindp, minnum, 1, float64, f64)
-VSX_MAX_MIN(xvmindp, minnum, 2, float64, f64)
-VSX_MAX_MIN(xvminsp, minnum, 4, float32, f32)
+VSX_MAX_MIN(xsmaxdp, maxnum, 1, float64, VsrD(0))
+VSX_MAX_MIN(xvmaxdp, maxnum, 2, float64, VsrD(i))
+VSX_MAX_MIN(xvmaxsp, maxnum, 4, float32, VsrW(i))
+VSX_MAX_MIN(xsmindp, minnum, 1, float64, VsrD(0))
+VSX_MAX_MIN(xvmindp, minnum, 2, float64, VsrD(i))
+VSX_MAX_MIN(xvminsp, minnum, 4, float32, VsrW(i))
 
 /* VSX_CMP - VSX floating point compare
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   cmp   - comparison operation
  *   svxvc - set VXVC bit
  */
@@ -2450,23 +2450,23 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                       \
     getVSR(xT(opcode), &xt, env);                                         \
                                                                           \
     for (i = 0; i < nels; i++) {                                          \
-        if (unlikely(tp##_is_any_nan(xa.fld[i]) ||                        \
-                     tp##_is_any_nan(xb.fld[i]))) {                       \
-            if (tp##_is_signaling_nan(xa.fld[i]) ||                       \
-                tp##_is_signaling_nan(xb.fld[i])) {                       \
+        if (unlikely(tp##_is_any_nan(xa.fld) ||                           \
+                     tp##_is_any_nan(xb.fld))) {                          \
+            if (tp##_is_signaling_nan(xa.fld) ||                          \
+                tp##_is_signaling_nan(xb.fld)) {                          \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 0);    \
             }                                                             \
             if (svxvc) {                                                  \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXVC, 0);      \
             }                                                             \
-            xt.fld[i] = 0;                                                \
+            xt.fld = 0;                                                   \
             all_true = 0;                                                 \
         } else {                                                          \
-            if (tp##_##cmp(xb.fld[i], xa.fld[i], &env->fp_status) == 1) { \
-                xt.fld[i] = -1;                                           \
+            if (tp##_##cmp(xb.fld, xa.fld, &env->fp_status) == 1) {       \
+                xt.fld = -1;                                              \
                 all_false = 0;                                            \
             } else {                                                      \
-                xt.fld[i] = 0;                                            \
+                xt.fld = 0;                                               \
                 all_true = 0;                                             \
             }                                                             \
         }                                                                 \
@@ -2479,12 +2479,12 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                       \
     helper_float_check_status(env);                                       \
  }
 
-VSX_CMP(xvcmpeqdp, 2, float64, f64, eq, 0)
-VSX_CMP(xvcmpgedp, 2, float64, f64, le, 1)
-VSX_CMP(xvcmpgtdp, 2, float64, f64, lt, 1)
-VSX_CMP(xvcmpeqsp, 4, float32, f32, eq, 0)
-VSX_CMP(xvcmpgesp, 4, float32, f32, le, 1)
-VSX_CMP(xvcmpgtsp, 4, float32, f32, lt, 1)
+VSX_CMP(xvcmpeqdp, 2, float64, VsrD(i), eq, 0)
+VSX_CMP(xvcmpgedp, 2, float64, VsrD(i), le, 1)
+VSX_CMP(xvcmpgtdp, 2, float64, VsrD(i), lt, 1)
+VSX_CMP(xvcmpeqsp, 4, float32, VsrW(i), eq, 0)
+VSX_CMP(xvcmpgesp, 4, float32, VsrW(i), le, 1)
+VSX_CMP(xvcmpgtsp, 4, float32, VsrW(i), lt, 1)
 
 #if defined(HOST_WORDS_BIGENDIAN)
 #define JOFFSET 0
@@ -2671,7 +2671,7 @@ VSX_CVT_INT_TO_FP(xvcvuxwsp, 4, uint32, float32, u32[j], f32[i], i, 0, 0)
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
  *   tp    - type (float32 or float64)
- *   fld   - vsr_t field (f32 or f64)
+ *   fld   - vsr_t field (VsrD(*) or VsrW(*))
  *   rmode - rounding mode
  *   sfprf - set FPRF
  */
@@ -2688,14 +2688,14 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                    \
     }                                                                  \
                                                                        \
     for (i = 0; i < nels; i++) {                                       \
-        if (unlikely(tp##_is_signaling_nan(xb.fld[i]))) {              \
+        if (unlikely(tp##_is_signaling_nan(xb.fld))) {                 \
             fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 0);     \
-            xt.fld[i] = tp##_snan_to_qnan(xb.fld[i]);                  \
+            xt.fld = tp##_snan_to_qnan(xb.fld);                        \
         } else {                                                       \
-            xt.fld[i] = tp##_round_to_int(xb.fld[i], &env->fp_status); \
+            xt.fld = tp##_round_to_int(xb.fld, &env->fp_status);       \
         }                                                              \
         if (sfprf) {                                                   \
-            helper_compute_fprf(env, xt.fld[i], sfprf);                \
+            helper_compute_fprf(env, xt.fld, sfprf);                   \
         }                                                              \
     }                                                                  \
                                                                        \
@@ -2711,23 +2711,23 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                    \
     helper_float_check_status(env);                                    \
 }
 
-VSX_ROUND(xsrdpi, 1, float64, f64, float_round_nearest_even, 1)
-VSX_ROUND(xsrdpic, 1, float64, f64, FLOAT_ROUND_CURRENT, 1)
-VSX_ROUND(xsrdpim, 1, float64, f64, float_round_down, 1)
-VSX_ROUND(xsrdpip, 1, float64, f64, float_round_up, 1)
-VSX_ROUND(xsrdpiz, 1, float64, f64, float_round_to_zero, 1)
+VSX_ROUND(xsrdpi, 1, float64, VsrD(0), float_round_nearest_even, 1)
+VSX_ROUND(xsrdpic, 1, float64, VsrD(0), FLOAT_ROUND_CURRENT, 1)
+VSX_ROUND(xsrdpim, 1, float64, VsrD(0), float_round_down, 1)
+VSX_ROUND(xsrdpip, 1, float64, VsrD(0), float_round_up, 1)
+VSX_ROUND(xsrdpiz, 1, float64, VsrD(0), float_round_to_zero, 1)
 
-VSX_ROUND(xvrdpi, 2, float64, f64, float_round_nearest_even, 0)
-VSX_ROUND(xvrdpic, 2, float64, f64, FLOAT_ROUND_CURRENT, 0)
-VSX_ROUND(xvrdpim, 2, float64, f64, float_round_down, 0)
-VSX_ROUND(xvrdpip, 2, float64, f64, float_round_up, 0)
-VSX_ROUND(xvrdpiz, 2, float64, f64, float_round_to_zero, 0)
+VSX_ROUND(xvrdpi, 2, float64, VsrD(i), float_round_nearest_even, 0)
+VSX_ROUND(xvrdpic, 2, float64, VsrD(i), FLOAT_ROUND_CURRENT, 0)
+VSX_ROUND(xvrdpim, 2, float64, VsrD(i), float_round_down, 0)
+VSX_ROUND(xvrdpip, 2, float64, VsrD(i), float_round_up, 0)
+VSX_ROUND(xvrdpiz, 2, float64, VsrD(i), float_round_to_zero, 0)
 
-VSX_ROUND(xvrspi, 4, float32, f32, float_round_nearest_even, 0)
-VSX_ROUND(xvrspic, 4, float32, f32, FLOAT_ROUND_CURRENT, 0)
-VSX_ROUND(xvrspim, 4, float32, f32, float_round_down, 0)
-VSX_ROUND(xvrspip, 4, float32, f32, float_round_up, 0)
-VSX_ROUND(xvrspiz, 4, float32, f32, float_round_to_zero, 0)
+VSX_ROUND(xvrspi, 4, float32, VsrW(i), float_round_nearest_even, 0)
+VSX_ROUND(xvrspic, 4, float32, VsrW(i), FLOAT_ROUND_CURRENT, 0)
+VSX_ROUND(xvrspim, 4, float32, VsrW(i), float_round_down, 0)
+VSX_ROUND(xvrspip, 4, float32, VsrW(i), float_round_up, 0)
+VSX_ROUND(xvrspiz, 4, float32, VsrW(i), float_round_to_zero, 0)
 
 uint64_t helper_xsrsp(CPUPPCState *env, uint64_t xb)
 {
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 08/15] target-ppc: Correct VSX Scalar Compares
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (6 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 07/15] target-ppc: Correct Simple VSR LE Host Inversions Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 09/15] target-ppc: Correct VSX FP to FP Conversions Alexander Graf
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This change fixes the VSX scalar compare instructions.  The existing usage of "x.f64[0]"
is changed to "x.VsrD(0)".

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 1c37b30..6233d5e 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -2360,10 +2360,10 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                      \
     getVSR(xA(opcode), &xa, env);                                        \
     getVSR(xB(opcode), &xb, env);                                        \
                                                                          \
-    if (unlikely(float64_is_any_nan(xa.f64[0]) ||                        \
-                 float64_is_any_nan(xb.f64[0]))) {                       \
-        if (float64_is_signaling_nan(xa.f64[0]) ||                       \
-            float64_is_signaling_nan(xb.f64[0])) {                       \
+    if (unlikely(float64_is_any_nan(xa.VsrD(0)) ||                       \
+                 float64_is_any_nan(xb.VsrD(0)))) {                      \
+        if (float64_is_signaling_nan(xa.VsrD(0)) ||                      \
+            float64_is_signaling_nan(xb.VsrD(0))) {                      \
             fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 0);       \
         }                                                                \
         if (ordered) {                                                   \
@@ -2371,9 +2371,10 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                      \
         }                                                                \
         cc = 1;                                                          \
     } else {                                                             \
-        if (float64_lt(xa.f64[0], xb.f64[0], &env->fp_status)) {         \
+        if (float64_lt(xa.VsrD(0), xb.VsrD(0), &env->fp_status)) {       \
             cc = 8;                                                      \
-        } else if (!float64_le(xa.f64[0], xb.f64[0], &env->fp_status)) { \
+        } else if (!float64_le(xa.VsrD(0), xb.VsrD(0),                   \
+                               &env->fp_status)) { \
             cc = 4;                                                      \
         } else {                                                         \
             cc = 2;                                                      \
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 09/15] target-ppc: Correct VSX FP to FP Conversions
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (7 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 08/15] target-ppc: Correct VSX Scalar Compares Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 10/15] target-ppc: Correct VSX FP to Integer Conversion Alexander Graf
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This change corrects the VSX double precision to single precision and
single precision to double precisions conversion routines.  The endian
correct accessors are now used.  The auxiliary "j" index is no longer
necessary and is eliminated.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 6233d5e..12bec90 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -2512,7 +2512,6 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                \
     getVSR(xT(opcode), &xt, env);                                  \
                                                                    \
     for (i = 0; i < nels; i++) {                                   \
-        int j = 2*i + JOFFSET;                                     \
         xt.tfld = stp##_to_##ttp(xb.sfld, &env->fp_status);        \
         if (unlikely(stp##_is_signaling_nan(xb.sfld))) {           \
             fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 0); \
@@ -2528,10 +2527,10 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                \
     helper_float_check_status(env);                                \
 }
 
-VSX_CVT_FP_TO_FP(xscvdpsp, 1, float64, float32, f64[i], f32[j], 1)
-VSX_CVT_FP_TO_FP(xscvspdp, 1, float32, float64, f32[j], f64[i], 1)
-VSX_CVT_FP_TO_FP(xvcvdpsp, 2, float64, float32, f64[i], f32[j], 0)
-VSX_CVT_FP_TO_FP(xvcvspdp, 2, float32, float64, f32[j], f64[i], 0)
+VSX_CVT_FP_TO_FP(xscvdpsp, 1, float64, float32, VsrD(0), VsrW(0), 1)
+VSX_CVT_FP_TO_FP(xscvspdp, 1, float32, float64, VsrW(0), VsrD(0), 1)
+VSX_CVT_FP_TO_FP(xvcvdpsp, 2, float64, float32, VsrD(i), VsrW(2*i), 0)
+VSX_CVT_FP_TO_FP(xvcvspdp, 2, float32, float64, VsrW(2*i), VsrD(i), 0)
 
 uint64_t helper_xscvdpspn(CPUPPCState *env, uint64_t xb)
 {
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 10/15] target-ppc: Correct VSX FP to Integer Conversion
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (8 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 09/15] target-ppc: Correct VSX FP to FP Conversions Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 11/15] target-ppc: Correct VSX Integer to FP Conversion Alexander Graf
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This patch corrects the VSX floating point to integer conversion
instructions by using the endian correct accessors.  The auxiliary
"j" index used by the existing macros is now obsolete and is removed.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 36 +++++++++++++++---------------------
 1 file changed, 15 insertions(+), 21 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index 12bec90..abba703 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -2555,10 +2555,9 @@ uint64_t helper_xscvspdpn(CPUPPCState *env, uint64_t xb)
  *   ttp   - target type (int32, uint32, int64 or uint64)
  *   sfld  - source vsr_t field
  *   tfld  - target vsr_t field
- *   jdef  - definition of the j index (i or 2*i)
  *   rnan  - resulting NaN
  */
-#define VSX_CVT_FP_TO_INT(op, nels, stp, ttp, sfld, tfld, jdef, rnan)        \
+#define VSX_CVT_FP_TO_INT(op, nels, stp, ttp, sfld, tfld, rnan)              \
 void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
 {                                                                            \
     ppc_vsr_t xt, xb;                                                        \
@@ -2568,7 +2567,6 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     getVSR(xT(opcode), &xt, env);                                            \
                                                                              \
     for (i = 0; i < nels; i++) {                                             \
-        int j = jdef;                                                        \
         if (unlikely(stp##_is_any_nan(xb.sfld))) {                           \
             if (stp##_is_signaling_nan(xb.sfld)) {                           \
                 fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 0);       \
@@ -2588,27 +2586,23 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                          \
     helper_float_check_status(env);                                          \
 }
 
-VSX_CVT_FP_TO_INT(xscvdpsxds, 1, float64, int64, f64[j], u64[i], i, \
+VSX_CVT_FP_TO_INT(xscvdpsxds, 1, float64, int64, VsrD(0), VsrD(0), \
                   0x8000000000000000ULL)
-VSX_CVT_FP_TO_INT(xscvdpsxws, 1, float64, int32, f64[i], u32[j], \
-                  2*i + JOFFSET, 0x80000000U)
-VSX_CVT_FP_TO_INT(xscvdpuxds, 1, float64, uint64, f64[j], u64[i], i, 0ULL)
-VSX_CVT_FP_TO_INT(xscvdpuxws, 1, float64, uint32, f64[i], u32[j], \
-                  2*i + JOFFSET, 0U)
-VSX_CVT_FP_TO_INT(xvcvdpsxds, 2, float64, int64, f64[j], u64[i], i, \
+VSX_CVT_FP_TO_INT(xscvdpsxws, 1, float64, int32, VsrD(0), VsrW(1), \
+                  0x80000000U)
+VSX_CVT_FP_TO_INT(xscvdpuxds, 1, float64, uint64, VsrD(0), VsrD(0), 0ULL)
+VSX_CVT_FP_TO_INT(xscvdpuxws, 1, float64, uint32, VsrD(0), VsrW(1), 0U)
+VSX_CVT_FP_TO_INT(xvcvdpsxds, 2, float64, int64, VsrD(i), VsrD(i), \
                   0x8000000000000000ULL)
-VSX_CVT_FP_TO_INT(xvcvdpsxws, 2, float64, int32, f64[i], u32[j], \
-                  2*i + JOFFSET, 0x80000000U)
-VSX_CVT_FP_TO_INT(xvcvdpuxds, 2, float64, uint64, f64[j], u64[i], i, 0ULL)
-VSX_CVT_FP_TO_INT(xvcvdpuxws, 2, float64, uint32, f64[i], u32[j], \
-                  2*i + JOFFSET, 0U)
-VSX_CVT_FP_TO_INT(xvcvspsxds, 2, float32, int64, f32[j], u64[i], \
-                  2*i + JOFFSET, 0x8000000000000000ULL)
-VSX_CVT_FP_TO_INT(xvcvspsxws, 4, float32, int32, f32[j], u32[j], i, \
+VSX_CVT_FP_TO_INT(xvcvdpsxws, 2, float64, int32, VsrD(i), VsrW(2*i), \
                   0x80000000U)
-VSX_CVT_FP_TO_INT(xvcvspuxds, 2, float32, uint64, f32[j], u64[i], \
-                  2*i + JOFFSET, 0ULL)
-VSX_CVT_FP_TO_INT(xvcvspuxws, 4, float32, uint32, f32[j], u32[i], i, 0U)
+VSX_CVT_FP_TO_INT(xvcvdpuxds, 2, float64, uint64, VsrD(i), VsrD(i), 0ULL)
+VSX_CVT_FP_TO_INT(xvcvdpuxws, 2, float64, uint32, VsrD(i), VsrW(2*i), 0U)
+VSX_CVT_FP_TO_INT(xvcvspsxds, 2, float32, int64, VsrW(2*i), VsrD(i), \
+                  0x8000000000000000ULL)
+VSX_CVT_FP_TO_INT(xvcvspsxws, 4, float32, int32, VsrW(i), VsrW(i), 0x80000000U)
+VSX_CVT_FP_TO_INT(xvcvspuxds, 2, float32, uint64, VsrW(2*i), VsrD(i), 0ULL)
+VSX_CVT_FP_TO_INT(xvcvspuxws, 4, float32, uint32, VsrW(i), VsrW(i), 0U)
 
 /* VSX_CVT_INT_TO_FP - VSX integer to floating point conversion
  *   op    - instruction mnemonic
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 11/15] target-ppc: Correct VSX Integer to FP Conversion
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (9 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 10/15] target-ppc: Correct VSX FP to Integer Conversion Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 12/15] PPC: Clean up DECR implementation Alexander Graf
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc, Tom Musta

From: Tom Musta <tommusta@gmail.com>

This patch corrects the VSX integer to floating point conversion instructions
by using the endian correct accessors.  The auxiliary "j" index used by the
existing macros is now obsolete and is removed.  The JOFFSET preprocessor
macro is also obsolete and removed.

Signed-off-by: Tom Musta <tommusta@gmail.com>
Tested-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/fpu_helper.c | 37 +++++++++++++------------------------
 1 file changed, 13 insertions(+), 24 deletions(-)

diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c
index abba703..c6f484f 100644
--- a/target-ppc/fpu_helper.c
+++ b/target-ppc/fpu_helper.c
@@ -2487,12 +2487,6 @@ VSX_CMP(xvcmpeqsp, 4, float32, VsrW(i), eq, 0)
 VSX_CMP(xvcmpgesp, 4, float32, VsrW(i), le, 1)
 VSX_CMP(xvcmpgtsp, 4, float32, VsrW(i), lt, 1)
 
-#if defined(HOST_WORDS_BIGENDIAN)
-#define JOFFSET 0
-#else
-#define JOFFSET 1
-#endif
-
 /* VSX_CVT_FP_TO_FP - VSX floating point/floating point conversion
  *   op    - instruction mnemonic
  *   nels  - number of elements (1, 2 or 4)
@@ -2614,7 +2608,7 @@ VSX_CVT_FP_TO_INT(xvcvspuxws, 4, float32, uint32, VsrW(i), VsrW(i), 0U)
  *   jdef  - definition of the j index (i or 2*i)
  *   sfprf - set FPRF
  */
-#define VSX_CVT_INT_TO_FP(op, nels, stp, ttp, sfld, tfld, jdef, sfprf, r2sp) \
+#define VSX_CVT_INT_TO_FP(op, nels, stp, ttp, sfld, tfld, sfprf, r2sp)  \
 void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
 {                                                                       \
     ppc_vsr_t xt, xb;                                                   \
@@ -2624,7 +2618,6 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
     getVSR(xT(opcode), &xt, env);                                       \
                                                                         \
     for (i = 0; i < nels; i++) {                                        \
-        int j = jdef;                                                   \
         xt.tfld = stp##_to_##ttp(xb.sfld, &env->fp_status);             \
         if (r2sp) {                                                     \
             xt.tfld = helper_frsp(env, xt.tfld);                        \
@@ -2638,22 +2631,18 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)                     \
     helper_float_check_status(env);                                     \
 }
 
-VSX_CVT_INT_TO_FP(xscvsxddp, 1, int64, float64, u64[j], f64[i], i, 1, 0)
-VSX_CVT_INT_TO_FP(xscvuxddp, 1, uint64, float64, u64[j], f64[i], i, 1, 0)
-VSX_CVT_INT_TO_FP(xscvsxdsp, 1, int64, float64, u64[j], f64[i], i, 1, 1)
-VSX_CVT_INT_TO_FP(xscvuxdsp, 1, uint64, float64, u64[j], f64[i], i, 1, 1)
-VSX_CVT_INT_TO_FP(xvcvsxddp, 2, int64, float64, u64[j], f64[i], i, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvuxddp, 2, uint64, float64, u64[j], f64[i], i, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvsxwdp, 2, int32, float64, u32[j], f64[i], \
-                  2*i + JOFFSET, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvuxwdp, 2, uint64, float64, u32[j], f64[i], \
-                  2*i + JOFFSET, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvsxdsp, 2, int64, float32, u64[i], f32[j], \
-                  2*i + JOFFSET, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvuxdsp, 2, uint64, float32, u64[i], f32[j], \
-                  2*i + JOFFSET, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvsxwsp, 4, int32, float32, u32[j], f32[i], i, 0, 0)
-VSX_CVT_INT_TO_FP(xvcvuxwsp, 4, uint32, float32, u32[j], f32[i], i, 0, 0)
+VSX_CVT_INT_TO_FP(xscvsxddp, 1, int64, float64, VsrD(0), VsrD(0), 1, 0)
+VSX_CVT_INT_TO_FP(xscvuxddp, 1, uint64, float64, VsrD(0), VsrD(0), 1, 0)
+VSX_CVT_INT_TO_FP(xscvsxdsp, 1, int64, float64, VsrD(0), VsrD(0), 1, 1)
+VSX_CVT_INT_TO_FP(xscvuxdsp, 1, uint64, float64, VsrD(0), VsrD(0), 1, 1)
+VSX_CVT_INT_TO_FP(xvcvsxddp, 2, int64, float64, VsrD(i), VsrD(i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvuxddp, 2, uint64, float64, VsrD(i), VsrD(i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvsxwdp, 2, int32, float64, VsrW(2*i), VsrD(i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvuxwdp, 2, uint64, float64, VsrW(2*i), VsrD(i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvsxdsp, 2, int64, float32, VsrD(i), VsrW(2*i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvuxdsp, 2, uint64, float32, VsrD(i), VsrW(2*i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvsxwsp, 4, int32, float32, VsrW(i), VsrW(i), 0, 0)
+VSX_CVT_INT_TO_FP(xvcvuxwsp, 4, uint32, float32, VsrW(i), VsrW(i), 0, 0)
 
 /* For "use current rounding mode", define a value that will not be one of
  * the existing rounding model enums.
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 12/15] PPC: Clean up DECR implementation
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (10 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 11/15] target-ppc: Correct VSX Integer to FP Conversion Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 13/15] PPC: Only enter MSR_POW when no interrupts pending Alexander Graf
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc

There are 3 different variants of the decrementor for BookE and BookS.

The BookE variant sets TSR[DIS] to 1 when the DEC value becomes 1 or 0. TSR[DIS]
is then the indicator whether the decrementor interrupt line is asserted or not.

The old BookS variant treats DEC as an edge interrupt that gets triggered when
the DEC value's top bit turns 1 from 0.

The new BookS variant maintains the assertion bit inside DEC itself. Whenever
the DEC value becomes negative (top bit set) the DEC interrupt line is asserted.

So far we implemented mostly the old BookS variant. Let's do them all properly.

This fixes booting pseries ppc64 guest images in TCG mode for me.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/ppc/ppc.c             | 92 +++++++++++++++++++++++++++++++++---------------
 include/hw/ppc/ppc.h     |  3 ++
 target-ppc/cpu.h         |  1 +
 target-ppc/excp_helper.c |  5 +--
 4 files changed, 71 insertions(+), 30 deletions(-)

diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index 9c2a132..71df471 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -620,6 +620,13 @@ static void cpu_ppc_tb_start (CPUPPCState *env)
     }
 }
 
+bool ppc_decr_clear_on_delivery(CPUPPCState *env)
+{
+    ppc_tb_t *tb_env = env->tb_env;
+    int flags = PPC_DECR_UNDERFLOW_TRIGGERED | PPC_DECR_UNDERFLOW_LEVEL;
+    return ((tb_env->flags & flags) == PPC_DECR_UNDERFLOW_TRIGGERED);
+}
+
 static inline uint32_t _cpu_ppc_load_decr(CPUPPCState *env, uint64_t next)
 {
     ppc_tb_t *tb_env = env->tb_env;
@@ -677,6 +684,11 @@ static inline void cpu_ppc_decr_excp(PowerPCCPU *cpu)
     ppc_set_irq(cpu, PPC_INTERRUPT_DECR, 1);
 }
 
+static inline void cpu_ppc_decr_lower(PowerPCCPU *cpu)
+{
+    ppc_set_irq(cpu, PPC_INTERRUPT_DECR, 0);
+}
+
 static inline void cpu_ppc_hdecr_excp(PowerPCCPU *cpu)
 {
     /* Raise it */
@@ -684,11 +696,16 @@ static inline void cpu_ppc_hdecr_excp(PowerPCCPU *cpu)
     ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 1);
 }
 
+static inline void cpu_ppc_hdecr_lower(PowerPCCPU *cpu)
+{
+    ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 0);
+}
+
 static void __cpu_ppc_store_decr(PowerPCCPU *cpu, uint64_t *nextp,
                                  QEMUTimer *timer,
-                                 void (*raise_excp)(PowerPCCPU *),
-                                 uint32_t decr, uint32_t value,
-                                 int is_excp)
+                                 void (*raise_excp)(void *),
+                                 void (*lower_excp)(PowerPCCPU *),
+                                 uint32_t decr, uint32_t value)
 {
     CPUPPCState *env = &cpu->env;
     ppc_tb_t *tb_env = env->tb_env;
@@ -702,59 +719,74 @@ static void __cpu_ppc_store_decr(PowerPCCPU *cpu, uint64_t *nextp,
         return;
     }
 
-    now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
-    next = now + muldiv64(value, get_ticks_per_sec(), tb_env->decr_freq);
-    if (is_excp) {
-        next += *nextp - now;
+    /*
+     * Going from 2 -> 1, 1 -> 0 or 0 -> -1 is the event to generate a DEC
+     * interrupt.
+     *
+     * If we get a really small DEC value, we can assume that by the time we
+     * handled it we should inject an interrupt already.
+     *
+     * On MSB level based DEC implementations the MSB always means the interrupt
+     * is pending, so raise it on those.
+     *
+     * On MSB edge based DEC implementations the MSB going from 0 -> 1 triggers
+     * an edge interrupt, so raise it here too.
+     */
+    if ((value < 3) ||
+        ((tb_env->flags & PPC_DECR_UNDERFLOW_LEVEL) && (value & 0x80000000)) ||
+        ((tb_env->flags & PPC_DECR_UNDERFLOW_TRIGGERED) && (value & 0x80000000)
+          && !(decr & 0x80000000))) {
+        (*raise_excp)(cpu);
+        return;
     }
-    if (next == now) {
-        next++;
+
+    /* On MSB level based systems a 0 for the MSB stops interrupt delivery */
+    if (!(value & 0x80000000) && (tb_env->flags & PPC_DECR_UNDERFLOW_LEVEL)) {
+        (*lower_excp)(cpu);
     }
+
+    /* Calculate the next timer event */
+    now = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+    next = now + muldiv64(value, get_ticks_per_sec(), tb_env->decr_freq);
     *nextp = next;
+
     /* Adjust timer */
     timer_mod(timer, next);
-
-    /* If we set a negative value and the decrementer was positive, raise an
-     * exception.
-     */
-    if ((tb_env->flags & PPC_DECR_UNDERFLOW_TRIGGERED)
-        && (value & 0x80000000)
-        && !(decr & 0x80000000)) {
-        (*raise_excp)(cpu);
-    }
 }
 
 static inline void _cpu_ppc_store_decr(PowerPCCPU *cpu, uint32_t decr,
-                                       uint32_t value, int is_excp)
+                                       uint32_t value)
 {
     ppc_tb_t *tb_env = cpu->env.tb_env;
 
     __cpu_ppc_store_decr(cpu, &tb_env->decr_next, tb_env->decr_timer,
-                         &cpu_ppc_decr_excp, decr, value, is_excp);
+                         tb_env->decr_timer->cb, &cpu_ppc_decr_lower, decr,
+                         value);
 }
 
 void cpu_ppc_store_decr (CPUPPCState *env, uint32_t value)
 {
     PowerPCCPU *cpu = ppc_env_get_cpu(env);
 
-    _cpu_ppc_store_decr(cpu, cpu_ppc_load_decr(env), value, 0);
+    _cpu_ppc_store_decr(cpu, cpu_ppc_load_decr(env), value);
 }
 
 static void cpu_ppc_decr_cb(void *opaque)
 {
     PowerPCCPU *cpu = opaque;
 
-    _cpu_ppc_store_decr(cpu, 0x00000000, 0xFFFFFFFF, 1);
+    cpu_ppc_decr_excp(cpu);
 }
 
 static inline void _cpu_ppc_store_hdecr(PowerPCCPU *cpu, uint32_t hdecr,
-                                        uint32_t value, int is_excp)
+                                        uint32_t value)
 {
     ppc_tb_t *tb_env = cpu->env.tb_env;
 
     if (tb_env->hdecr_timer != NULL) {
         __cpu_ppc_store_decr(cpu, &tb_env->hdecr_next, tb_env->hdecr_timer,
-                             &cpu_ppc_hdecr_excp, hdecr, value, is_excp);
+                             tb_env->hdecr_timer->cb, &cpu_ppc_hdecr_lower,
+                             hdecr, value);
     }
 }
 
@@ -762,14 +794,14 @@ void cpu_ppc_store_hdecr (CPUPPCState *env, uint32_t value)
 {
     PowerPCCPU *cpu = ppc_env_get_cpu(env);
 
-    _cpu_ppc_store_hdecr(cpu, cpu_ppc_load_hdecr(env), value, 0);
+    _cpu_ppc_store_hdecr(cpu, cpu_ppc_load_hdecr(env), value);
 }
 
 static void cpu_ppc_hdecr_cb(void *opaque)
 {
     PowerPCCPU *cpu = opaque;
 
-    _cpu_ppc_store_hdecr(cpu, 0x00000000, 0xFFFFFFFF, 1);
+    cpu_ppc_hdecr_excp(cpu);
 }
 
 static void cpu_ppc_store_purr(PowerPCCPU *cpu, uint64_t value)
@@ -792,8 +824,8 @@ static void cpu_ppc_set_tb_clk (void *opaque, uint32_t freq)
      * if a decrementer exception is pending when it enables msr_ee at startup,
      * it's not ready to handle it...
      */
-    _cpu_ppc_store_decr(cpu, 0xFFFFFFFF, 0xFFFFFFFF, 0);
-    _cpu_ppc_store_hdecr(cpu, 0xFFFFFFFF, 0xFFFFFFFF, 0);
+    _cpu_ppc_store_decr(cpu, 0xFFFFFFFF, 0xFFFFFFFF);
+    _cpu_ppc_store_hdecr(cpu, 0xFFFFFFFF, 0xFFFFFFFF);
     cpu_ppc_store_purr(cpu, 0x0000000000000000ULL);
 }
 
@@ -806,6 +838,10 @@ clk_setup_cb cpu_ppc_tb_init (CPUPPCState *env, uint32_t freq)
     tb_env = g_malloc0(sizeof(ppc_tb_t));
     env->tb_env = tb_env;
     tb_env->flags = PPC_DECR_UNDERFLOW_TRIGGERED;
+    if (env->insns_flags & PPC_SEGMENT_64B) {
+        /* All Book3S 64bit CPUs implement level based DEC logic */
+        tb_env->flags |= PPC_DECR_UNDERFLOW_LEVEL;
+    }
     /* Create new timer */
     tb_env->decr_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, &cpu_ppc_decr_cb, cpu);
     if (0) {
diff --git a/include/hw/ppc/ppc.h b/include/hw/ppc/ppc.h
index 835418a..d71bd07 100644
--- a/include/hw/ppc/ppc.h
+++ b/include/hw/ppc/ppc.h
@@ -44,6 +44,9 @@ struct ppc_tb_t {
 #define PPC_DECR_ZERO_TRIGGERED      (1 << 3) /* Decr interrupt triggered when
                                                * the decrementer reaches zero.
                                                */
+#define PPC_DECR_UNDERFLOW_LEVEL     (1 << 4) /* Decr interrupt active when
+                                               * the most significant bit is 1.
+                                               */
 
 uint64_t cpu_ppc_get_tb(ppc_tb_t *tb_env, uint64_t vmclk, int64_t tb_offset);
 clk_setup_cb cpu_ppc_tb_init (CPUPPCState *env, uint32_t freq);
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 2719c08..d498340 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -1133,6 +1133,7 @@ uint64_t cpu_ppc_load_atbl (CPUPPCState *env);
 uint32_t cpu_ppc_load_atbu (CPUPPCState *env);
 void cpu_ppc_store_atbl (CPUPPCState *env, uint32_t value);
 void cpu_ppc_store_atbu (CPUPPCState *env, uint32_t value);
+bool ppc_decr_clear_on_delivery(CPUPPCState *env);
 uint32_t cpu_ppc_load_decr (CPUPPCState *env);
 void cpu_ppc_store_decr (CPUPPCState *env, uint32_t value);
 uint32_t cpu_ppc_load_hdecr (CPUPPCState *env);
diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
index 19bc6b6..4fa297d 100644
--- a/target-ppc/excp_helper.c
+++ b/target-ppc/excp_helper.c
@@ -723,7 +723,6 @@ void ppc_hw_interrupt(CPUPPCState *env)
     if ((msr_ee != 0 || msr_hv == 0 || msr_pr != 0) && hdice != 0) {
         /* Hypervisor decrementer exception */
         if (env->pending_interrupts & (1 << PPC_INTERRUPT_HDECR)) {
-            env->pending_interrupts &= ~(1 << PPC_INTERRUPT_HDECR);
             powerpc_excp(cpu, env->excp_model, POWERPC_EXCP_HDECR);
             return;
         }
@@ -767,7 +766,9 @@ void ppc_hw_interrupt(CPUPPCState *env)
         }
         /* Decrementer exception */
         if (env->pending_interrupts & (1 << PPC_INTERRUPT_DECR)) {
-            env->pending_interrupts &= ~(1 << PPC_INTERRUPT_DECR);
+            if (ppc_decr_clear_on_delivery(env)) {
+                env->pending_interrupts &= ~(1 << PPC_INTERRUPT_DECR);
+            }
             powerpc_excp(cpu, env->excp_model, POWERPC_EXCP_DECR);
             return;
         }
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 13/15] PPC: Only enter MSR_POW when no interrupts pending
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (11 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 12/15] PPC: Clean up DECR implementation Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 14/15] ppce500_spin: Initialize struct properly Alexander Graf
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc

We were entering the power saving state even when interrupts (like an
external interrupt or a decrementer interrupt) were still in flight.

In case we find a pending interrupt, don't enter power saving state.

Signed-off-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Tom Musta <tmusta@gmail.com>
---
 target-ppc/helper_regs.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target-ppc/helper_regs.h b/target-ppc/helper_regs.h
index f7ec9c2..271fddf 100644
--- a/target-ppc/helper_regs.h
+++ b/target-ppc/helper_regs.h
@@ -101,7 +101,7 @@ static inline int hreg_store_msr(CPUPPCState *env, target_ulong value,
     hreg_compute_hflags(env);
 #if !defined(CONFIG_USER_ONLY)
     if (unlikely(msr_pow == 1)) {
-        if ((*env->check_pow)(env)) {
+        if (!env->pending_interrupts && (*env->check_pow)(env)) {
             cs->halted = 1;
             excp = EXCP_HALTED;
         }
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 14/15] ppce500_spin: Initialize struct properly
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (12 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 13/15] PPC: Only enter MSR_POW when no interrupts pending Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 15/15] PPC: Add l1 cache sizes for 970 and above systems Alexander Graf
  2014-04-08 10:50 ` [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Peter Maydell
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc

The spinning struct is in guest endianness, so we need to initialize
its variables in guest endianness too.

This fixes booting e500 guests with SMP on x86 for me.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/ppc/ppce500_spin.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/hw/ppc/ppce500_spin.c b/hw/ppc/ppce500_spin.c
index f9fdc8c..d49f2b8 100644
--- a/hw/ppc/ppce500_spin.c
+++ b/hw/ppc/ppce500_spin.c
@@ -65,9 +65,9 @@ static void spin_reset(void *opaque)
     for (i = 0; i < MAX_CPUS; i++) {
         SpinInfo *info = &s->spin[i];
 
-        info->pir = i;
-        info->r3 = i;
-        info->addr = 1;
+        stl_p(&info->pir, i);
+        stq_p(&info->r3, i);
+        stq_p(&info->addr, 1);
     }
 }
 
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Qemu-devel] [PULL 2.0 15/15] PPC: Add l1 cache sizes for 970 and above systems
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (13 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 14/15] ppce500_spin: Initialize struct properly Alexander Graf
@ 2014-04-08  9:31 ` Alexander Graf
  2014-04-08 10:50 ` [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Peter Maydell
  15 siblings, 0 replies; 17+ messages in thread
From: Alexander Graf @ 2014-04-08  9:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, qemu-ppc

Book3s_64 guests expect the L1 cache size in device tree, so let's give
them proper values for all CPU types we support.

This fixes a "not compliant" warning with sles11 guests on -M pseries for me.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 target-ppc/translate_init.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index d07e186..4d94015 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -6699,6 +6699,8 @@ POWERPC_FAMILY(970)(ObjectClass *oc, void *data)
     pcc->flags = POWERPC_FLAG_VRE | POWERPC_FLAG_SE |
                  POWERPC_FLAG_BE | POWERPC_FLAG_PMM |
                  POWERPC_FLAG_BUS_CLK;
+    pcc->l1_dcache_size = 0x8000;
+    pcc->l1_icache_size = 0x10000;
 }
 
 static int check_pow_970FX (CPUPPCState *env)
@@ -6791,6 +6793,8 @@ POWERPC_FAMILY(970FX)(ObjectClass *oc, void *data)
     pcc->flags = POWERPC_FLAG_VRE | POWERPC_FLAG_SE |
                  POWERPC_FLAG_BE | POWERPC_FLAG_PMM |
                  POWERPC_FLAG_BUS_CLK;
+    pcc->l1_dcache_size = 0x8000;
+    pcc->l1_icache_size = 0x10000;
 }
 
 static int check_pow_970MP (CPUPPCState *env)
@@ -6877,6 +6881,8 @@ POWERPC_FAMILY(970MP)(ObjectClass *oc, void *data)
     pcc->flags = POWERPC_FLAG_VRE | POWERPC_FLAG_SE |
                  POWERPC_FLAG_BE | POWERPC_FLAG_PMM |
                  POWERPC_FLAG_BUS_CLK;
+    pcc->l1_dcache_size = 0x8000;
+    pcc->l1_icache_size = 0x10000;
 }
 
 static void init_proc_power5plus(CPUPPCState *env)
@@ -6967,6 +6973,8 @@ POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data)
     pcc->flags = POWERPC_FLAG_VRE | POWERPC_FLAG_SE |
                  POWERPC_FLAG_BE | POWERPC_FLAG_PMM |
                  POWERPC_FLAG_BUS_CLK;
+    pcc->l1_dcache_size = 0x8000;
+    pcc->l1_icache_size = 0x10000;
 }
 
 static void init_proc_POWER7 (CPUPPCState *env)
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0
  2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
                   ` (14 preceding siblings ...)
  2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 15/15] PPC: Add l1 cache sizes for 970 and above systems Alexander Graf
@ 2014-04-08 10:50 ` Peter Maydell
  15 siblings, 0 replies; 17+ messages in thread
From: Peter Maydell @ 2014-04-08 10:50 UTC (permalink / raw)
  To: Alexander Graf; +Cc: qemu-ppc@nongnu.org, QEMU Developers

On 8 April 2014 10:31, Alexander Graf <agraf@suse.de> wrote:
> Hi Peter,
>
> This is my last 2.0 queue for ppc.  Please pull.

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2014-04-08 10:51 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-08  9:31 [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 01/15] PPC: E500: Set PIR default reset value rather than SPR value Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 02/15] pseries: Update SLOF firmware image to qemu-slof-20140404 Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 03/15] softfloat: Introduce float32_to_uint64_round_to_zero Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 04/15] target-ppc: Bug: VSX Convert to Integer Should Truncate Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 05/15] target-ppc: Define Endian-Correct Accessors for VSR Field Access Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 06/15] target-ppc: Correct LE Host Inversion of Lower VSRs Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 07/15] target-ppc: Correct Simple VSR LE Host Inversions Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 08/15] target-ppc: Correct VSX Scalar Compares Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 09/15] target-ppc: Correct VSX FP to FP Conversions Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 10/15] target-ppc: Correct VSX FP to Integer Conversion Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 11/15] target-ppc: Correct VSX Integer to FP Conversion Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 12/15] PPC: Clean up DECR implementation Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 13/15] PPC: Only enter MSR_POW when no interrupts pending Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 14/15] ppce500_spin: Initialize struct properly Alexander Graf
2014-04-08  9:31 ` [Qemu-devel] [PULL 2.0 15/15] PPC: Add l1 cache sizes for 970 and above systems Alexander Graf
2014-04-08 10:50 ` [Qemu-devel] [PULL 2.0 00/15] ppc patch queue 2014-04-08 for 2.0 Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).