Mesa (master): util: Add util_bswap64() v3
Tom Stellard
tstellar at kemper.freedesktop.org
Mon Feb 24 21:00:18 UTC 2014
Module: Mesa
Branch: master
Commit: a9f88e2ae8632189b08f01e8a4166020df8d0d38
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9f88e2ae8632189b08f01e8a4166020df8d0d38
Author: Tom Stellard <thomas.stellard at amd.com>
Date: Wed Feb 19 14:17:33 2014 -0800
util: Add util_bswap64() v3
v2:
- Use __builtin_bswap64()
- Remove unnecessary mask
- Add util_le64_to_cpu() helper
v3:
- Remove unnecessary AC_SUBST
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
---
configure.ac | 1 +
src/gallium/auxiliary/util/u_math.h | 16 ++++++++++++++++
2 files changed, 17 insertions(+)
diff --git a/configure.ac b/configure.ac
index 4cfdedb..b8e3161 100644
--- a/configure.ac
+++ b/configure.ac
@@ -122,6 +122,7 @@ fi
dnl Check for compiler builtins
AX_GCC_BUILTIN([__builtin_bswap32])
+AX_GCC_BUILTIN([__builtin_bswap64])
AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h
index b0f0e3d..0f498bc 100644
--- a/src/gallium/auxiliary/util/u_math.h
+++ b/src/gallium/auxiliary/util/u_math.h
@@ -717,9 +717,11 @@ util_bitcount(unsigned n)
*/
#ifdef PIPE_ARCH_BIG_ENDIAN
+#define util_le64_to_cpu(x) util_bswap64(x)
#define util_le32_to_cpu(x) util_bswap32(x)
#define util_le16_to_cpu(x) util_bswap16(x)
#else
+#define util_le64_to_cpu(x) (x)
#define util_le32_to_cpu(x) (x)
#define util_le16_to_cpu(x) (x)
#endif
@@ -742,6 +744,20 @@ util_bswap32(uint32_t n)
#endif
}
+/**
+ * Reverse byte order of a 64bit word.
+ */
+static INLINE uint64_t
+util_bswap64(uint64_t n)
+{
+#if defined(HAVE___BUILTIN_BSWAP64)
+ return __builtin_bswap64(n);
+#else
+ return ((uint64_t)util_bswap32(n) << 32) |
+ util_bswap32((n >> 32));
+#endif
+}
+
/**
* Reverse byte order of a 16 bit word.
More information about the mesa-commit
mailing list