You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue tracks adding CRC intrinsics when __CRC__ is not defined. This happens when a machine lacks CRC or -march=native is not used. While it may seem counter-intuitive to add it when its not needed, the primary use case is distro's, which builds for generic x86_64 and its users who have a more capable machine. A secondary use case is Clang, which does not enable all cpu features under -march=native on occasion.
PR 461 takes the "single source" and breaks it into a "base implementation" which is standard C++, and a "SIMD implementation" which includes different ISAs.
The base implementation can be built with minimal or no flags. For example, -march=i686 or -march=x86-64. The SIMD implementation will be built with architecture specific flags, like -msha or -march=armv8-a+crypto when compiling sha-simd.cpp.
The GNUmakefile will add the flags automatically. Other build systems, like Cmake may need to be modified. Its OK to specify -march=native, and in fact the makefile still uses this strategy unless the user disables it. However, the makefile always adds the architecture specific flag to a source file when needed to ensure a source file compiles correctly.
This issue tracks adding CRC intrinsics when __CRC__ is not defined. This happens when a machine lacks CRC or
-march=native
is not used. While it may seem counter-intuitive to add it when its not needed, the primary use case is distro's, which builds for generic x86_64 and its users who have a more capable machine. A secondary use case is Clang, which does not enable all cpu features under-march=native
on occasion.Also see Fixing "ERROR: failed to generate sha1rnds4 instruction" (and friends) on the mailing list.
The text was updated successfully, but these errors were encountered: