< 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 >