[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-6.2 v2 1/2] include/qemu/int128.h: introduce bswap128s
From: |
matheus . ferst |
Subject: |
[PATCH for-6.2 v2 1/2] include/qemu/int128.h: introduce bswap128s |
Date: |
Wed, 18 Aug 2021 08:06:55 -0300 |
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(+)
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 */
--
2.25.1