< prev index next >
src/cpu/s390/vm/vm_version_s390.cpp
Print this page
@@ -109,17 +109,27 @@
// to keep contended members that far apart? Performance tests are required.
if (FLAG_IS_DEFAULT(ContendedPaddingWidth) && (cache_line_size > ContendedPaddingWidth)) {
ContendedPaddingWidth = cache_line_size;
}
- // On z/Architecture, the CRC32 intrinsics had to be implemented "by hand".
- // They cannot be based on the CHECKSUM instruction which has been there
- // since the very beginning (of z/Architecture). It computes "some kind of" a checksum
- // which has nothing to do with the CRC32 algorithm.
+ // On z/Architecture, the CRC32/CRC32C intrinsics are implemented "by hand".
+ // TODO: Provide implementation based on the vector instructions available from z13.
+ // Note: The CHECKSUM instruction, which has been there since the very beginning
+ // (of z/Architecture), computes "some kind of" a checksum.
+ // It has nothing to do with the CRC32 algorithm.
if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
FLAG_SET_DEFAULT(UseCRC32Intrinsics, true);
}
+ if (FLAG_IS_DEFAULT(UseCRC32CIntrinsics)) {
+ FLAG_SET_DEFAULT(UseCRC32CIntrinsics, true);
+ }
+
+ // TODO: Provide implementation.
+ if (UseAdler32Intrinsics) {
+ warning("Adler32Intrinsics not available on this CPU.");
+ FLAG_SET_DEFAULT(UseAdler32Intrinsics, false);
+ }
// On z/Architecture, we take UseAES as the general switch to enable/disable the AES intrinsics.
// The specific, and yet to be defined, switches UseAESxxxIntrinsics will then be set
// depending on the actual machine capabilities.
// Explicitly setting them via CmdLine option takes precedence, of course.
@@ -193,15 +203,10 @@
} else if (UseSHA512Intrinsics) {
warning("Intrinsics for SHA-384 and SHA-512 crypto hash functions not available on this CPU.");
FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
}
- if (UseAdler32Intrinsics) {
- warning("Adler32Intrinsics not available on this CPU.");
- FLAG_SET_DEFAULT(UseAdler32Intrinsics, false);
- }
-
if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
FLAG_SET_DEFAULT(UseMultiplyToLenIntrinsic, true);
}
if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) {
FLAG_SET_DEFAULT(UseMontgomeryMultiplyIntrinsic, true);
< prev index next >