From: Darren Mo Date: Sun, 17 Aug 2014 00:32:54 +0000 (-0700) Subject: Clang Love X-Git-Tag: v0.22.0~397 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7ec1fc0e0e27ed56c1d18d33af9711a17e9ec750;p=folly.git Clang Love Summary: Added support for clang in Checksum.cpp preprocessor statements. Test Plan: The right code path is chosen using both gcc and clang now. Reviewed By: brianp@fb.com Subscribers: mathieubaudet, sroy, satadru FB internal diff: D1502289 --- diff --git a/folly/Checksum.cpp b/folly/Checksum.cpp index 3882a6e8..881fc7d2 100644 --- a/folly/Checksum.cpp +++ b/folly/Checksum.cpp @@ -24,8 +24,14 @@ namespace folly { namespace detail { -#if FOLLY_X64 && defined(__GNUC__) && defined(__GNUC_MINOR__) && \ - (((__GNUC__ * 100) + __GNUC_MINOR__) >= 407) +#ifndef __has_builtin + #define __has_builtin(x) 0 +#endif + +#if (__has_builtin(__builtin_ia32_crc32qi) && \ + __has_builtin(__builtin_ia32_crc32di)) || \ + (FOLLY_X64 && defined(__GNUC__) && defined(__GNUC_MINOR__) && \ + (((__GNUC__ * 100) + __GNUC_MINOR__) >= 407)) // Fast SIMD implementation of CRC-32C for x86 with SSE 4.2 uint32_t crc32c_hw(const uint8_t *data, size_t nbytes,