--- a/src/hotspot/cpu/sparc/vm_version_sparc.cpp Fri Sep 29 10:40:49 2017 +0200
+++ b/src/hotspot/cpu/sparc/vm_version_sparc.cpp Fri Sep 29 10:40:54 2017 +0200
@@ -168,6 +168,16 @@
FLAG_SET_DEFAULT(UseCBCond, false);
}
+ // Use 'mpmul' instruction if available.
+ if (has_mpmul()) {
+ if (FLAG_IS_DEFAULT(UseMPMUL)) {
+ FLAG_SET_DEFAULT(UseMPMUL, true);
+ }
+ } else if (UseMPMUL) {
+ warning("MPMUL instruction is not available on this CPU");
+ FLAG_SET_DEFAULT(UseMPMUL, false);
+ }
+
assert(BlockZeroingLowLimit > 0, "invalid value");
if (has_blk_zeroing() && cache_line_size > 0) {
@@ -409,6 +419,15 @@
FLAG_SET_DEFAULT(UseCRC32Intrinsics, false);
}
+ if (UseVIS > 2) {
+ if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) {
+ FLAG_SET_DEFAULT(UseMultiplyToLenIntrinsic, true);
+ }
+ } else if (UseMultiplyToLenIntrinsic) {
+ warning("SPARC multiplyToLen intrinsics require VIS3 instructions support. Intrinsics will be disabled");
+ FLAG_SET_DEFAULT(UseMultiplyToLenIntrinsic, false);
+ }
+
if (UseVectorizedMismatchIntrinsic) {
warning("UseVectorizedMismatchIntrinsic specified, but not available on this CPU.");
FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);