From: Matheus Ferst <matheus.fe...@eldorado.org.br> These helpers shouldn't depend on the host endianness, as they only use shifts, ands, and int128_* methods.
Fixes: 60caf2216bf0 ("target-ppc: add vextu[bhw][lr]x instructions") Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> Signed-off-by: Matheus Ferst <matheus.fe...@eldorado.org.br> Message-Id: <20210826141446.2488609-3-matheus.fe...@eldorado.org.br> Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> --- target/ppc/int_helper.c | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index efa833ef64..c2d3248d1e 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -1492,34 +1492,16 @@ void helper_vlogefp(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *b) } } -#if defined(HOST_WORDS_BIGENDIAN) -#define VEXTU_X_DO(name, size, left) \ - target_ulong glue(helper_, name)(target_ulong a, ppc_avr_t *b) \ - { \ - int index; \ - if (left) { \ - index = (a & 0xf) * 8; \ - } else { \ - index = ((15 - (a & 0xf) + 1) * 8) - size; \ - } \ - return int128_getlo(int128_rshift(b->s128, index)) & \ - MAKE_64BIT_MASK(0, size); \ - } -#else -#define VEXTU_X_DO(name, size, left) \ - target_ulong glue(helper_, name)(target_ulong a, ppc_avr_t *b) \ - { \ - int index; \ - if (left) { \ - index = ((15 - (a & 0xf) + 1) * 8) - size; \ - } else { \ - index = (a & 0xf) * 8; \ - } \ - return int128_getlo(int128_rshift(b->s128, index)) & \ - MAKE_64BIT_MASK(0, size); \ - } -#endif - +#define VEXTU_X_DO(name, size, left) \ +target_ulong glue(helper_, name)(target_ulong a, ppc_avr_t *b) \ +{ \ + int index = (a & 0xf) * 8; \ + if (left) { \ + index = 128 - index - size; \ + } \ + return int128_getlo(int128_rshift(b->s128, index)) & \ + MAKE_64BIT_MASK(0, size); \ +} VEXTU_X_DO(vextublx, 8, 1) VEXTU_X_DO(vextuhlx, 16, 1) VEXTU_X_DO(vextuwlx, 32, 1) -- 2.31.1