< prev index next >
src/cpu/aarch64/vm/vm_version_aarch64.cpp
Print this page
rev 8720 : 8131062: aarch64: add support for GHASH acceleration
Summary: Add support for GHASH using pmull
Reviewed-by: duke
Contributed-by: alexander.alexeev@caviumnetworks.com
@@ -43,10 +43,14 @@
#ifndef HWCAP_AES
#define HWCAP_AES (1<<3)
#endif
+#ifndef HWCAP_PMULL
+#define HWCAP_PMULL (1<<4)
+#endif
+
#ifndef HWCAP_SHA1
#define HWCAP_SHA1 (1<<5)
#endif
#ifndef HWCAP_SHA2
@@ -188,15 +192,10 @@
if (UseAESIntrinsics) {
warning("UseAESIntrinsics specified, but not supported on this CPU");
}
}
- if (UseGHASHIntrinsics) {
- warning("GHASH intrinsics are not available on this CPU");
- FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
- }
-
if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
UseCRC32Intrinsics = true;
}
if (auxv & HWCAP_CRC32) {
@@ -242,10 +241,19 @@
if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) {
FLAG_SET_DEFAULT(UseSHA, false);
}
+ if (auxv & HWCAP_PMULL) {
+ if (FLAG_IS_DEFAULT(UseGHASHIntrinsics)) {
+ FLAG_SET_DEFAULT(UseGHASHIntrinsics, true);
+ }
+ } else if (UseGHASHIntrinsics) {
+ warning("GHASH intrinsics are not available on this CPU");
+ FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
+ }
+
// This machine allows unaligned memory accesses
if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
}
< prev index next >