diff options
| author | Ryan Libby <rlibby@FreeBSD.org> | 2017-08-11 17:05:31 +0000 |
|---|---|---|
| committer | Ryan Libby <rlibby@FreeBSD.org> | 2017-08-11 17:05:31 +0000 |
| commit | 9de5f67de2b94002bc01f0fa1a618ad777d07b89 (patch) | |
| tree | f87e437d59338a033decf91502bccf0f95af1c00 /sys/libkern | |
| parent | af0460beda5942272b53504e18db544cccb814f7 (diff) | |
Notes
Diffstat (limited to 'sys/libkern')
| -rw-r--r-- | sys/libkern/x86/crc32_sse42.c | 16 |
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 |
