Message ID | 20210818110656.1993090-2-matheus.ferst@eldorado.org.br (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/ppc: Fix vector registers access in gdbstub for little-endian | expand |
On 8/18/21 1:06 PM, matheus.ferst@eldorado.org.br wrote: > From: Matheus Ferst <matheus.ferst@eldorado.org.br> > > Changes the current bswap128 implementation to use __builtin_bswap128 > when available, adds a bswap128 implementation for !CONFIG_INT128 > builds, and introduces bswap128s based on bswap128. > > Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> > --- > include/qemu/int128.h | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
On Wed, 18 Aug 2021 at 12:11, <matheus.ferst@eldorado.org.br> wrote: > > From: Matheus Ferst <matheus.ferst@eldorado.org.br> > > Changes the current bswap128 implementation to use __builtin_bswap128 > when available, adds a bswap128 implementation for !CONFIG_INT128 > builds, and introduces bswap128s based on bswap128. > > Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
diff --git a/include/qemu/int128.h b/include/qemu/int128.h index 64500385e3..8d6ee5203f 100644 --- a/include/qemu/int128.h +++ b/include/qemu/int128.h @@ -155,7 +155,11 @@ static inline void int128_subfrom(Int128 *a, Int128 b) static inline Int128 bswap128(Int128 a) { +#if __has_builtin(__builtin_bswap128) + return __builtin_bswap128(a); +#else return int128_make128(bswap64(int128_gethi(a)), bswap64(int128_getlo(a))); +#endif } #else /* !CONFIG_INT128 */ @@ -337,5 +341,16 @@ static inline void int128_subfrom(Int128 *a, Int128 b) *a = int128_sub(*a, b); } +static inline Int128 bswap128(Int128 a) +{ + return int128_make128(bswap64(a.hi), bswap64(a.lo)); +} + #endif /* CONFIG_INT128 */ + +static inline void bswap128s(Int128 *s) +{ + *s = bswap128(*s); +} + #endif /* INT128_H */