mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-19 04:13:07 +00:00
8359256: AArch64: Use SHA3 GPR intrinsic where it's faster
Reviewed-by: eastigeevich, phh
This commit is contained in:
parent
3930b1d4dd
commit
c173d416f7
@ -95,7 +95,7 @@ define_pd_global(intx, InlineSmallCode, 1000);
|
||||
"Use simplest and shortest implementation for array equals") \
|
||||
product(bool, UseSIMDForBigIntegerShiftIntrinsics, true, \
|
||||
"Use SIMD instructions for left/right shift of BigInteger") \
|
||||
product(bool, UseSIMDForSHA3Intrinsic, true, \
|
||||
product(bool, UseSIMDForSHA3Intrinsic, false, \
|
||||
"Use SIMD SHA3 instructions for SHA3 intrinsic") \
|
||||
product(bool, AvoidUnalignedAccesses, false, \
|
||||
"Avoid generating unaligned memory accesses") \
|
||||
|
||||
@ -375,18 +375,24 @@ void VM_Version::initialize() {
|
||||
FLAG_SET_DEFAULT(UseSHA256Intrinsics, false);
|
||||
}
|
||||
|
||||
if (UseSHA && VM_Version::supports_sha3()) {
|
||||
// Auto-enable UseSHA3Intrinsics on hardware with performance benefit.
|
||||
// Note that the evaluation of UseSHA3Intrinsics shows better performance
|
||||
// on Apple silicon but worse performance on Neoverse V1 and N2.
|
||||
if (_cpu == CPU_APPLE) { // Apple silicon
|
||||
if (FLAG_IS_DEFAULT(UseSHA3Intrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseSHA3Intrinsics, true);
|
||||
}
|
||||
}
|
||||
} else if (UseSHA3Intrinsics && UseSIMDForSHA3Intrinsic) {
|
||||
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);
|
||||
if (UseSHA && VM_Version::supports_sha3() && _cpu == CPU_APPLE && FLAG_IS_DEFAULT(UseSIMDForSHA3Intrinsic)) {
|
||||
// Note: SIMD faster on Apple, worse on Neoverse V1, V2 and N2.
|
||||
FLAG_SET_DEFAULT(UseSIMDForSHA3Intrinsic, true);
|
||||
}
|
||||
|
||||
// Enable SHA-3 intrinsics (SIMD or GPR). The GPR path does not require SHA instructions.
|
||||
if (FLAG_IS_DEFAULT(UseSHA3Intrinsics)) {
|
||||
FLAG_SET_DEFAULT(UseSHA3Intrinsics, true);
|
||||
}
|
||||
|
||||
if (!UseSHA3Intrinsics && UseSIMDForSHA3Intrinsic) {
|
||||
// Keep flags consistent: if SHA3 intrinsics are off, disable the SHA3 SIMD variant.
|
||||
FLAG_SET_DEFAULT(UseSIMDForSHA3Intrinsic, false);
|
||||
}
|
||||
|
||||
if (!VM_Version::supports_sha3() && UseSIMDForSHA3Intrinsic) {
|
||||
warning("SHA3 instructions are not available on this CPU");
|
||||
FLAG_SET_DEFAULT(UseSIMDForSHA3Intrinsic, false);
|
||||
}
|
||||
|
||||
if (UseSHA && VM_Version::supports_sha512()) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user