Message ID | 20210826141446.2488609-1-matheus.ferst@eldorado.org.br (mailing list archive) |
---|---|
Headers | show |
Series | target/ppc: Fix vextu[bhw][lr]x on big endian hosts | expand |
On Thu, Aug 26, 2021 at 11:14:44AM -0300, matheus.ferst@eldorado.org.br wrote: > From: Matheus Ferst <matheus.ferst@eldorado.org.br> > > The definition of struct Int128 is currently independent of the host > endianness, causing different results when using the member s128 of > union ppc_vsr_t in big-endian builds with CONFIG_INT128 or > !CONFIG_INT128. > > The only PPC instructions that seem to be affected by this issue are the > "Vector Extract Unsigned Byte/Halfword/Word to GPR using GPR-specified > Left/Right-Index." Even on builds with Int128 support, however, their > helpers give the wrong result on big-endian hosts. > > The first patch in this series changes the definition of struct Int128 > to allow its use in the ppc_vsr_t union. The second patch fixes the > helper definition. Applied to ppc-for-6.2, thanks. > > Matheus Ferst (2): > include/qemu/int128.h: define struct Int128 according to the host > endianness > target/ppc: fix vextu[bhw][lr]x helpers > > include/qemu/int128.h | 27 ++++++++++++++++++++------- > target/ppc/int_helper.c | 38 ++++++++++---------------------------- > 2 files changed, 30 insertions(+), 35 deletions(-) >
From: Matheus Ferst <matheus.ferst@eldorado.org.br> The definition of struct Int128 is currently independent of the host endianness, causing different results when using the member s128 of union ppc_vsr_t in big-endian builds with CONFIG_INT128 or !CONFIG_INT128. The only PPC instructions that seem to be affected by this issue are the "Vector Extract Unsigned Byte/Halfword/Word to GPR using GPR-specified Left/Right-Index." Even on builds with Int128 support, however, their helpers give the wrong result on big-endian hosts. The first patch in this series changes the definition of struct Int128 to allow its use in the ppc_vsr_t union. The second patch fixes the helper definition. Matheus Ferst (2): include/qemu/int128.h: define struct Int128 according to the host endianness target/ppc: fix vextu[bhw][lr]x helpers include/qemu/int128.h | 27 ++++++++++++++++++++------- target/ppc/int_helper.c | 38 ++++++++++---------------------------- 2 files changed, 30 insertions(+), 35 deletions(-)