< prev index next >
src/cpu/aarch64/vm/vm_version_aarch64.cpp
Print this page
*** 59,68 ****
--- 59,72 ----
#ifndef HWCAP_CRC32
#define HWCAP_CRC32 (1<<7)
#endif
+ #ifndef HWCAP_ATOMICS
+ #define HWCAP_ATOMICS (1<<8)
+ #endif
+
int VM_Version::_cpu;
int VM_Version::_model;
int VM_Version::_model2;
int VM_Version::_variant;
int VM_Version::_revision;
*** 170,179 ****
--- 174,184 ----
if (auxv & HWCAP_ASIMD) strcat(buf, ", simd");
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_ATOMICS) strcat(buf, ", lse");
_features_string = os::strdup(buf);
if (FLAG_IS_DEFAULT(UseCRC32)) {
UseCRC32 = (auxv & HWCAP_CRC32) != 0;
*** 189,198 ****
--- 194,212 ----
if (UseVectorizedMismatchIntrinsic) {
warning("UseVectorizedMismatchIntrinsic specified, but not available on this CPU.");
FLAG_SET_DEFAULT(UseVectorizedMismatchIntrinsic, false);
}
+ if (auxv & HWCAP_ATOMICS) {
+ if (FLAG_IS_DEFAULT(UseLSE))
+ FLAG_SET_DEFAULT(UseLSE, true);
+ } else {
+ if (UseLSE) {
+ warning("UseLSE specified, but not supported on this CPU");
+ }
+ }
+
if (auxv & HWCAP_AES) {
UseAES = UseAES || FLAG_IS_DEFAULT(UseAES);
UseAESIntrinsics =
UseAESIntrinsics || (UseAES && FLAG_IS_DEFAULT(UseAESIntrinsics));
if (UseAESIntrinsics && !UseAES) {
< prev index next >