8380464: Inconsistency in emitting warning messages in vm_version_x86.cpp

Reviewed-by: kvn, dholmes
This commit is contained in:
Ashutosh Mehra 2026-03-31 14:11:06 +00:00
parent 78e9df5088
commit 8c38e725a5

View File

@ -1264,8 +1264,9 @@ void VM_Version::get_processor_features() {
UseGHASHIntrinsics = true; UseGHASHIntrinsics = true;
} }
} else if (UseGHASHIntrinsics) { } else if (UseGHASHIntrinsics) {
if (!FLAG_IS_DEFAULT(UseGHASHIntrinsics)) if (!FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
warning("GHASH intrinsic requires CLMUL and SSE2 instructions on this CPU"); warning("GHASH intrinsic requires CLMUL and SSE2 instructions on this CPU");
}
FLAG_SET_DEFAULT(UseGHASHIntrinsics, false); FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
} }
@ -1275,26 +1276,27 @@ void VM_Version::get_processor_features() {
// based on the VM capabilities whether to use an AVX2 or AVX512-enabled // based on the VM capabilities whether to use an AVX2 or AVX512-enabled
// version. // version.
if (UseAVX >= 1) { if (UseAVX >= 1) {
if (FLAG_IS_DEFAULT(UseChaCha20Intrinsics)) { if (FLAG_IS_DEFAULT(UseChaCha20Intrinsics)) {
UseChaCha20Intrinsics = true; UseChaCha20Intrinsics = true;
} }
} else if (UseChaCha20Intrinsics) { } else if (UseChaCha20Intrinsics) {
if (!FLAG_IS_DEFAULT(UseChaCha20Intrinsics)) { if (!FLAG_IS_DEFAULT(UseChaCha20Intrinsics)) {
warning("ChaCha20 intrinsic requires AVX instructions"); warning("ChaCha20 intrinsic requires AVX instructions");
} }
FLAG_SET_DEFAULT(UseChaCha20Intrinsics, false); FLAG_SET_DEFAULT(UseChaCha20Intrinsics, false);
} }
// Kyber Intrinsics // Kyber Intrinsics
// Currently we only have them for AVX512 // Currently we only have them for AVX512
if (supports_evex() && supports_avx512bw()) { if (supports_evex() && supports_avx512bw()) {
if (FLAG_IS_DEFAULT(UseKyberIntrinsics)) { if (FLAG_IS_DEFAULT(UseKyberIntrinsics)) {
UseKyberIntrinsics = true; UseKyberIntrinsics = true;
} }
} else } else if (UseKyberIntrinsics) {
if (UseKyberIntrinsics) { if (!FLAG_IS_DEFAULT(UseKyberIntrinsics)) {
warning("Intrinsics for ML-KEM are not available on this CPU."); warning("Intrinsics for ML-KEM are not available on this CPU.");
FLAG_SET_DEFAULT(UseKyberIntrinsics, false); }
FLAG_SET_DEFAULT(UseKyberIntrinsics, false);
} }
// Dilithium Intrinsics // Dilithium Intrinsics
@ -1303,8 +1305,10 @@ void VM_Version::get_processor_features() {
UseDilithiumIntrinsics = true; UseDilithiumIntrinsics = true;
} }
} else if (UseDilithiumIntrinsics) { } else if (UseDilithiumIntrinsics) {
if (!FLAG_IS_DEFAULT(UseDilithiumIntrinsics)) {
warning("Intrinsics for ML-DSA are not available on this CPU."); warning("Intrinsics for ML-DSA are not available on this CPU.");
FLAG_SET_DEFAULT(UseDilithiumIntrinsics, false); }
FLAG_SET_DEFAULT(UseDilithiumIntrinsics, false);
} }
// Base64 Intrinsics (Check the condition for which the intrinsic will be active) // Base64 Intrinsics (Check the condition for which the intrinsic will be active)
@ -1313,8 +1317,9 @@ void VM_Version::get_processor_features() {
UseBASE64Intrinsics = true; UseBASE64Intrinsics = true;
} }
} else if (UseBASE64Intrinsics) { } else if (UseBASE64Intrinsics) {
if (!FLAG_IS_DEFAULT(UseBASE64Intrinsics)) if (!FLAG_IS_DEFAULT(UseBASE64Intrinsics)) {
warning("Base64 intrinsic requires EVEX instructions on this CPU"); warning("Base64 intrinsic requires EVEX instructions on this CPU");
}
FLAG_SET_DEFAULT(UseBASE64Intrinsics, false); FLAG_SET_DEFAULT(UseBASE64Intrinsics, false);
} }
@ -1323,7 +1328,9 @@ void VM_Version::get_processor_features() {
UseFMA = true; UseFMA = true;
} }
} else if (UseFMA) { } else if (UseFMA) {
warning("FMA instructions are not available on this CPU"); if (!FLAG_IS_DEFAULT(UseFMA)) {
warning("FMA instructions are not available on this CPU");
}
FLAG_SET_DEFAULT(UseFMA, false); FLAG_SET_DEFAULT(UseFMA, false);
} }
@ -1336,7 +1343,9 @@ void VM_Version::get_processor_features() {
UseSHA = true; UseSHA = true;
} }
} else if (UseSHA) { } else if (UseSHA) {
warning("SHA instructions are not available on this CPU"); if (!FLAG_IS_DEFAULT(UseSHA)) {
warning("SHA instructions are not available on this CPU");
}
FLAG_SET_DEFAULT(UseSHA, false); FLAG_SET_DEFAULT(UseSHA, false);
} }
@ -1345,7 +1354,9 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseSHA1Intrinsics, true); FLAG_SET_DEFAULT(UseSHA1Intrinsics, true);
} }
} else if (UseSHA1Intrinsics) { } else if (UseSHA1Intrinsics) {
warning("Intrinsics for SHA-1 crypto hash functions not available on this CPU."); if (!FLAG_IS_DEFAULT(UseSHA1Intrinsics)) {
warning("Intrinsics for SHA-1 crypto hash functions not available on this CPU.");
}
FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); FLAG_SET_DEFAULT(UseSHA1Intrinsics, false);
} }
@ -1354,7 +1365,9 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseSHA256Intrinsics, true); FLAG_SET_DEFAULT(UseSHA256Intrinsics, true);
} }
} else if (UseSHA256Intrinsics) { } else if (UseSHA256Intrinsics) {
warning("Intrinsics for SHA-224 and SHA-256 crypto hash functions not available on this CPU."); if (!FLAG_IS_DEFAULT(UseSHA256Intrinsics)) {
warning("Intrinsics for SHA-224 and SHA-256 crypto hash functions not available on this CPU.");
}
FLAG_SET_DEFAULT(UseSHA256Intrinsics, false); FLAG_SET_DEFAULT(UseSHA256Intrinsics, false);
} }
@ -1363,7 +1376,9 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseSHA512Intrinsics, true); FLAG_SET_DEFAULT(UseSHA512Intrinsics, true);
} }
} else if (UseSHA512Intrinsics) { } else if (UseSHA512Intrinsics) {
warning("Intrinsics for SHA-384 and SHA-512 crypto hash functions not available on this CPU."); if (!FLAG_IS_DEFAULT(UseSHA512Intrinsics)) {
warning("Intrinsics for SHA-384 and SHA-512 crypto hash functions not available on this CPU.");
}
FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
} }
@ -1372,7 +1387,9 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseSHA3Intrinsics, true); FLAG_SET_DEFAULT(UseSHA3Intrinsics, true);
} }
} else if (UseSHA3Intrinsics) { } else if (UseSHA3Intrinsics) {
warning("Intrinsics for SHA3-224, SHA3-256, SHA3-384 and SHA3-512 crypto hash functions not available on this CPU."); if (!FLAG_IS_DEFAULT(UseSHA3Intrinsics)) {
warning("Intrinsics for SHA3-224, SHA3-256, SHA3-384 and SHA3-512 crypto hash functions not available on this CPU.");
}
FLAG_SET_DEFAULT(UseSHA3Intrinsics, false); FLAG_SET_DEFAULT(UseSHA3Intrinsics, false);
} }
@ -1435,7 +1452,9 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UsePoly1305Intrinsics, true); FLAG_SET_DEFAULT(UsePoly1305Intrinsics, true);
} }
} else if (UsePoly1305Intrinsics) { } else if (UsePoly1305Intrinsics) {
warning("Intrinsics for Poly1305 crypto hash functions not available on this CPU."); if (!FLAG_IS_DEFAULT(UsePoly1305Intrinsics)) {
warning("Intrinsics for Poly1305 crypto hash functions not available on this CPU.");
}
FLAG_SET_DEFAULT(UsePoly1305Intrinsics, false); FLAG_SET_DEFAULT(UsePoly1305Intrinsics, false);
} }
@ -1444,7 +1463,9 @@ void VM_Version::get_processor_features() {
FLAG_SET_DEFAULT(UseIntPolyIntrinsics, true); FLAG_SET_DEFAULT(UseIntPolyIntrinsics, true);
} }
} else if (UseIntPolyIntrinsics) { } else if (UseIntPolyIntrinsics) {
warning("Intrinsics for Polynomial crypto functions not available on this CPU."); if (!FLAG_IS_DEFAULT(UseIntPolyIntrinsics)) {
warning("Intrinsics for Polynomial crypto functions not available on this CPU.");
}
FLAG_SET_DEFAULT(UseIntPolyIntrinsics, false); FLAG_SET_DEFAULT(UseIntPolyIntrinsics, false);
} }
@ -1694,8 +1715,8 @@ void VM_Version::get_processor_features() {
if (FLAG_IS_DEFAULT(UseSSE42Intrinsics)) { if (FLAG_IS_DEFAULT(UseSSE42Intrinsics)) {
FLAG_SET_DEFAULT(UseSSE42Intrinsics, true); FLAG_SET_DEFAULT(UseSSE42Intrinsics, true);
} }
} else { } else if (UseSSE42Intrinsics) {
if (UseSSE42Intrinsics && !FLAG_IS_DEFAULT(UseSSE42Intrinsics)) { if (!FLAG_IS_DEFAULT(UseSSE42Intrinsics)) {
warning("SSE4.2 intrinsics require SSE4.2 instructions or higher. Intrinsics will be disabled."); warning("SSE4.2 intrinsics require SSE4.2 instructions or higher. Intrinsics will be disabled.");
} }
FLAG_SET_DEFAULT(UseSSE42Intrinsics, false); FLAG_SET_DEFAULT(UseSSE42Intrinsics, false);
@ -1705,15 +1726,17 @@ void VM_Version::get_processor_features() {
UseVectorizedMismatchIntrinsic = true; UseVectorizedMismatchIntrinsic = true;
} }
} else if (UseVectorizedMismatchIntrinsic) { } else if (UseVectorizedMismatchIntrinsic) {
if (!FLAG_IS_DEFAULT(UseVectorizedMismatchIntrinsic)) if (!FLAG_IS_DEFAULT(UseVectorizedMismatchIntrinsic)) {
warning("vectorizedMismatch intrinsics are not available on this CPU"); warning("vectorizedMismatch intrinsics are not available on this CPU");
}
FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false); FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
} }
if (UseAVX >= 2) { if (UseAVX >= 2) {
FLAG_SET_DEFAULT(UseVectorizedHashCodeIntrinsic, true); FLAG_SET_DEFAULT(UseVectorizedHashCodeIntrinsic, true);
} else if (UseVectorizedHashCodeIntrinsic) { } else if (UseVectorizedHashCodeIntrinsic) {
if (!FLAG_IS_DEFAULT(UseVectorizedHashCodeIntrinsic)) if (!FLAG_IS_DEFAULT(UseVectorizedHashCodeIntrinsic)) {
warning("vectorizedHashCode intrinsics are not available on this CPU"); warning("vectorizedHashCode intrinsics are not available on this CPU");
}
FLAG_SET_DEFAULT(UseVectorizedHashCodeIntrinsic, false); FLAG_SET_DEFAULT(UseVectorizedHashCodeIntrinsic, false);
} }
@ -1723,7 +1746,9 @@ void VM_Version::get_processor_features() {
UseCountLeadingZerosInstruction = true; UseCountLeadingZerosInstruction = true;
} }
} else if (UseCountLeadingZerosInstruction) { } else if (UseCountLeadingZerosInstruction) {
warning("lzcnt instruction is not available on this CPU"); if (!FLAG_IS_DEFAULT(UseCountLeadingZerosInstruction)) {
warning("lzcnt instruction is not available on this CPU");
}
FLAG_SET_DEFAULT(UseCountLeadingZerosInstruction, false); FLAG_SET_DEFAULT(UseCountLeadingZerosInstruction, false);
} }
@ -1739,7 +1764,9 @@ void VM_Version::get_processor_features() {
} }
} }
} else if (UseCountTrailingZerosInstruction) { } else if (UseCountTrailingZerosInstruction) {
warning("tzcnt instruction is not available on this CPU"); if (!FLAG_IS_DEFAULT(UseCountTrailingZerosInstruction)) {
warning("tzcnt instruction is not available on this CPU");
}
FLAG_SET_DEFAULT(UseCountTrailingZerosInstruction, false); FLAG_SET_DEFAULT(UseCountTrailingZerosInstruction, false);
} }
@ -1750,7 +1777,9 @@ void VM_Version::get_processor_features() {
UseBMI1Instructions = true; UseBMI1Instructions = true;
} }
} else if (UseBMI1Instructions) { } else if (UseBMI1Instructions) {
warning("BMI1 instructions are not available on this CPU (AVX is also required)"); if (!FLAG_IS_DEFAULT(UseBMI1Instructions)) {
warning("BMI1 instructions are not available on this CPU (AVX is also required)");
}
FLAG_SET_DEFAULT(UseBMI1Instructions, false); FLAG_SET_DEFAULT(UseBMI1Instructions, false);
} }
@ -1759,7 +1788,9 @@ void VM_Version::get_processor_features() {
UseBMI2Instructions = true; UseBMI2Instructions = true;
} }
} else if (UseBMI2Instructions) { } else if (UseBMI2Instructions) {
warning("BMI2 instructions are not available on this CPU (AVX is also required)"); if (!FLAG_IS_DEFAULT(UseBMI2Instructions)) {
warning("BMI2 instructions are not available on this CPU (AVX is also required)");
}
FLAG_SET_DEFAULT(UseBMI2Instructions, false); FLAG_SET_DEFAULT(UseBMI2Instructions, false);
} }
@ -1769,7 +1800,9 @@ void VM_Version::get_processor_features() {
UsePopCountInstruction = true; UsePopCountInstruction = true;
} }
} else if (UsePopCountInstruction) { } else if (UsePopCountInstruction) {
warning("POPCNT instruction is not available on this CPU"); if (!FLAG_IS_DEFAULT(UsePopCountInstruction)) {
warning("POPCNT instruction is not available on this CPU");
}
FLAG_SET_DEFAULT(UsePopCountInstruction, false); FLAG_SET_DEFAULT(UsePopCountInstruction, false);
} }
@ -1779,7 +1812,9 @@ void VM_Version::get_processor_features() {
UseFastStosb = true; UseFastStosb = true;
} }
} else if (UseFastStosb) { } else if (UseFastStosb) {
warning("fast-string operations are not available on this CPU"); if (!FLAG_IS_DEFAULT(UseFastStosb)) {
warning("fast-string operations are not available on this CPU");
}
FLAG_SET_DEFAULT(UseFastStosb, false); FLAG_SET_DEFAULT(UseFastStosb, false);
} }
@ -1805,7 +1840,9 @@ void VM_Version::get_processor_features() {
UseXMMForObjInit = true; UseXMMForObjInit = true;
} }
} else if (UseXMMForObjInit) { } else if (UseXMMForObjInit) {
warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off."); if (!FLAG_IS_DEFAULT(UseXMMForObjInit)) {
warning("UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.");
}
FLAG_SET_DEFAULT(UseXMMForObjInit, false); FLAG_SET_DEFAULT(UseXMMForObjInit, false);
} }
@ -1885,7 +1922,7 @@ void VM_Version::get_processor_features() {
if (FLAG_IS_DEFAULT(ContendedPaddingWidth) && if (FLAG_IS_DEFAULT(ContendedPaddingWidth) &&
(cache_line_size > ContendedPaddingWidth)) (cache_line_size > ContendedPaddingWidth))
ContendedPaddingWidth = cache_line_size; ContendedPaddingWidth = cache_line_size;
// This machine allows unaligned memory accesses // This machine allows unaligned memory accesses
if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) { if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {