Tags: xrootd/crc32c
Tags
Fix SSE4.2 arch flag for MSVC in CMake config. (google#8) The old flag was a copy-paste error. We only use /arch:NOTYET for the ARM64-specific hardware accelerated implementation, because Visual Studio does not yet have an equivalent to -march=armv8-a+crc+crypto.
Gate ARM64-accelerated impl on hwcap() having the HWCAP_PMULL flag. (g… …oogle#6) The hardware-accelerated CRC32C implementation that takes advantage of ARM64 instructions is currently runtime-gated on hwcap() returning a value that has the HWCAP_CRC32 flag set. This covers the __crc32c{b,h,w,d} intrinsics, but does not cover the vmull_p64 call. The later should be gated on the presence of the HWCAP_PMULL flag. This is a speculative fix for Chrome crashes observed at the first vmull_64 callsite on MSM8916-based boards.
More conservative check for <string_view> availability. (google#4) has_include(<string_view>) does not imply that the header can be included and will work. The assumption fails on MSVC and libc++ [1, 2]. Conversely, checking that __cplusplus > 201402L is not sufficient on its own either, as the toolchain on Mac OS 10.12 passes that check but does not contain a <string_view> header. [1] https://crbug.com/759349 [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79433