< prev index next >
src/hotspot/cpu/aarch64/vm_version_aarch64.cpp
Print this page
rev 60737 : 8252204: AArch64: Implement SHA3 accelerator/intrinsic
Reviewed-by: duke
Contributed-by: dongbo4@huawei.com
*** 65,74 ****
--- 65,78 ----
#ifndef HWCAP_SHA512
#define HWCAP_SHA512 (1 << 21)
#endif
+ #ifndef HWCAP_SHA3
+ #define HWCAP_SHA3 (1 << 17)
+ #endif
+
int VM_Version::_cpu;
int VM_Version::_model;
int VM_Version::_model2;
int VM_Version::_variant;
int VM_Version::_revision;
*** 289,298 ****
--- 293,303 ----
if (auxv & HWCAP_CRC32) strcat(buf, ", crc");
if (auxv & HWCAP_AES) strcat(buf, ", aes");
if (auxv & HWCAP_SHA1) strcat(buf, ", sha1");
if (auxv & HWCAP_SHA2) strcat(buf, ", sha256");
if (auxv & HWCAP_SHA512) strcat(buf, ", sha512");
+ if (auxv & HWCAP_SHA3) strcat(buf, ", sha3");
if (auxv & HWCAP_ATOMICS) strcat(buf, ", lse");
_features_string = os::strdup(buf);
if (FLAG_IS_DEFAULT(UseCRC32)) {
*** 367,377 ****
if (UseMD5Intrinsics) {
warning("MD5 intrinsics are not available on this CPU");
FLAG_SET_DEFAULT(UseMD5Intrinsics, false);
}
! if (auxv & (HWCAP_SHA1 | HWCAP_SHA2)) {
if (FLAG_IS_DEFAULT(UseSHA)) {
FLAG_SET_DEFAULT(UseSHA, true);
}
} else if (UseSHA) {
warning("SHA instructions are not available on this CPU");
--- 372,382 ----
if (UseMD5Intrinsics) {
warning("MD5 intrinsics are not available on this CPU");
FLAG_SET_DEFAULT(UseMD5Intrinsics, false);
}
! if (auxv & (HWCAP_SHA1 | HWCAP_SHA2 | HWCAP_SHA512 | HWCAP_SHA3)) {
if (FLAG_IS_DEFAULT(UseSHA)) {
FLAG_SET_DEFAULT(UseSHA, true);
}
} else if (UseSHA) {
warning("SHA instructions are not available on this CPU");
*** 404,414 ****
} 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 (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) {
FLAG_SET_DEFAULT(UseSHA, false);
}
if (auxv & HWCAP_PMULL) {
if (FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
--- 409,429 ----
} 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 (UseSHA && (auxv & HWCAP_SHA3)) {
! // Do not auto-enable UseSHA3Intrinsics until it has been fully tested on hardware
! // if (FLAG_IS_DEFAULT(UseSHA3Intrinsics)) {
! // FLAG_SET_DEFAULT(UseSHA3Intrinsics, true);
! // }
! } else if (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);
! }
!
! if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics || UseSHA3Intrinsics)) {
FLAG_SET_DEFAULT(UseSHA, false);
}
if (auxv & HWCAP_PMULL) {
if (FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
< prev index next >