aarch64: Allow testing for the presence of SVE FEAT_EBF16 (#57)
Allows testing the new hwcap for determining SVE support for extended
BFloat16 behavior on Linux systems.
diff --git a/src/aarch64/cpu-aarch64.cc b/src/aarch64/cpu-aarch64.cc
index 3f01797..fba0dfd 100644
--- a/src/aarch64/cpu-aarch64.cc
+++ b/src/aarch64/cpu-aarch64.cc
@@ -227,6 +227,7 @@
if (Get(kSM4) >= 1) f.Combine(CPUFeatures::kSVESM4);
if (Get(kSHA3) >= 1) f.Combine(CPUFeatures::kSVESHA3);
if (Get(kBF16) >= 1) f.Combine(CPUFeatures::kSVEBF16);
+ if (Get(kBF16) >= 2) f.Combine(CPUFeatures::kSVE_EBF16);
if (Get(kBitPerm) >= 1) f.Combine(CPUFeatures::kSVEBitPerm);
if (Get(kAES) >= 1) f.Combine(CPUFeatures::kSVEAES);
if (Get(kAES) >= 2) f.Combine(CPUFeatures::kSVEPmull128);
@@ -355,7 +356,8 @@
CPUFeatures::kSMEfa64,
CPUFeatures::kWFXT,
// Bits 32-39
- CPUFeatures::kEBF16};
+ CPUFeatures::kEBF16,
+ CPUFeatures::kSVE_EBF16};
VIXL_STATIC_ASSERT(ArrayLength(kFeatureBitsHigh) < 64);
auto combine_features = [&features](uint64_t hwcap,
diff --git a/src/cpu-features.h b/src/cpu-features.h
index de9e157..962ad52 100644
--- a/src/cpu-features.h
+++ b/src/cpu-features.h
@@ -199,7 +199,8 @@
/* WFET and WFIT instruction support */ \
V(kWFXT, "WFXT", "wfxt") \
/* Extended BFloat16 instructions */ \
- V(kEBF16, "EBF16", "ebf16")
+ V(kEBF16, "EBF16", "ebf16") \
+ V(kSVE_EBF16, "EBF16 (SVE)", "sveebf16")
// clang-format on