-#if defined(__x86_64__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && \
- (((__GNUC__ * 100) + __GNUC_MINOR__) >= 408)
+#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))