aboutsummaryrefslogtreecommitdiff
path: root/sys/libkern
diff options
context:
space:
mode:
authorRyan Libby <rlibby@FreeBSD.org>2017-08-11 17:05:31 +0000
committerRyan Libby <rlibby@FreeBSD.org>2017-08-11 17:05:31 +0000
commit9de5f67de2b94002bc01f0fa1a618ad777d07b89 (patch)
treef87e437d59338a033decf91502bccf0f95af1c00 /sys/libkern
parentaf0460beda5942272b53504e18db544cccb814f7 (diff)
Notes
Diffstat (limited to 'sys/libkern')
-rw-r--r--sys/libkern/x86/crc32_sse42.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/libkern/x86/crc32_sse42.c b/sys/libkern/x86/crc32_sse42.c
index f56a10e4542c..50e457410ad9 100644
--- a/sys/libkern/x86/crc32_sse42.c
+++ b/sys/libkern/x86/crc32_sse42.c
@@ -52,19 +52,21 @@ _mm_crc32_u8(uint32_t x, uint8_t y)
return (x);
}
-static __inline uint32_t
-_mm_crc32_u32(uint32_t x, uint32_t y)
-{
- __asm("crc32l %1,%0" : "+r" (x) : "r" (y));
- return (x);
-}
-
+#ifdef __amd64__
static __inline uint64_t
_mm_crc32_u64(uint64_t x, uint64_t y)
{
__asm("crc32q %1,%0" : "+r" (x) : "r" (y));
return (x);
}
+#else
+static __inline uint32_t
+_mm_crc32_u32(uint32_t x, uint32_t y)
+{
+ __asm("crc32l %1,%0" : "+r" (x) : "r" (y));
+ return (x);
+}
+#endif
/* CRC-32C (iSCSI) polynomial in reversed bit order. */
#define POLY 0x82f63b78