* Test case for bug reports to file against the compiler(s). If the bugs aren't known, it's harder to fix them.
I file bug reports if the bug is in the latest version of the compiler. Often it's in an old version that's still in wide use.
* The intrinsic version may be a better starting point for someone trying to micro-optimize an asm version for a different architecture with similar SIMD capabilities.
That's a good point. In the future if I replace any intrinsics code with assembly, I'll just comment out the intrinsics versions.
I'll point out that in some environments it's common or at least possible to compile different versions of a library based on specific architecture variants, to be selected at program load time, so the library doesn't have to do run-time determination itself, or just compile the program/library to be run on the local machine only (or only on machines meeting certain minimum platform specs that include SSE2, and maybe even SSSE3), and thus portability to another machine of similar architecture but not matching capabilities isn't important.
Yes, but I want to have Crypto++ be fast in the common case, where the user typically downloads the library from somewhere in binary form, and not specifically compiled for her platform.
BTW, in the latest version, AES-NI and CLMUL support was added using intrinsics. As I mentioned previously, I worked around the GCC limitation by providing my own definitions of the intrinsic functions when AESNI and CLMUL are not enabled via GCC options. Unfortunately, in 32-bit mode, AESNI and CLMUL support will still be unavailable if -msse2 or -march=native is not specified. I think most Linux distributions compile packages with only -march=i686, which does not enable SSE2, and therefore Crypto++ downloaded in the form of such a package will not support AESNI. I basically rationalize this by thinking that hopefully people will not be buying Westmere-based CPUs to run in 32-bit mode. :)
-- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com.
