diff mbox

target-ppc: Fix Altivec Shifts

Message ID 1414594959-4298-1-git-send-email-tommusta@gmail.com
State New
Headers show

Commit Message

Tom Musta Oct. 29, 2014, 3:02 p.m. UTC
Fix the implementation of the Altivec shift left and shift right
instructions (vsl, vsr) which erroneously inverts shift direction
on big endian hosts.

Signed-off-by: Tom Musta <tommusta@gmail.com>
---
 target-ppc/int_helper.c |   13 ++-----------
 1 files changed, 2 insertions(+), 11 deletions(-)

Comments

Alexander Graf Nov. 3, 2014, 5:54 p.m. UTC | #1
On 29.10.14 16:02, Tom Musta wrote:
> Fix the implementation of the Altivec shift left and shift right
> instructions (vsl, vsr) which erroneously inverts shift direction
> on big endian hosts.
> 
> Signed-off-by: Tom Musta <tommusta@gmail.com>

Thanks, applied to ppc-next.


Alex
diff mbox

Patch

diff --git a/target-ppc/int_helper.c b/target-ppc/int_helper.c
index 713d777..eb5c6d2 100644
--- a/target-ppc/int_helper.c
+++ b/target-ppc/int_helper.c
@@ -1552,13 +1552,6 @@  void helper_vlogefp(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *b)
     }
 }
 
-#if defined(HOST_WORDS_BIGENDIAN)
-#define LEFT 0
-#define RIGHT 1
-#else
-#define LEFT 1
-#define RIGHT 0
-#endif
 /* The specification says that the results are undefined if all of the
  * shift counts are not identical.  We check to make sure that they are
  * to conform to what real hardware appears to do.  */
@@ -1588,11 +1581,9 @@  void helper_vlogefp(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *b)
             }                                                           \
         }                                                               \
     }
-VSHIFT(l, LEFT)
-VSHIFT(r, RIGHT)
+VSHIFT(l, 1)
+VSHIFT(r, 0)
 #undef VSHIFT
-#undef LEFT
-#undef RIGHT
 
 #define VSL(suffix, element, mask)                                      \
     void helper_vsl##suffix(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)   \