Extend CPUFeatures to support Armv8.4.
Change-Id: I9ad2541b4e570414dbf59c20134c8342076caec9
diff --git a/src/cpu-features.h b/src/cpu-features.h
index f94b955..9dac583 100644
--- a/src/cpu-features.h
+++ b/src/cpu-features.h
@@ -56,6 +56,8 @@
V(kLORegions, "LORegions", NULL) \
/* Rounding doubling multiply add/subtract: SQRDMLAH and SQRDMLSH. */ \
V(kRDM, "RDM", "asimdrdm") \
+ /* Scalable Vector Extension. */ \
+ V(kSVE, "SVE", "sve") \
/* SDOT and UDOT support (in NEON). */ \
V(kDotProduct, "DotProduct", "asimddp") \
/* Half-precision (FP16) support for FP and NEON, respectively. */ \
@@ -78,12 +80,21 @@
V(kPAuthGeneric, "PAuthGeneric", NULL) \
/* Generic authentication uses QARMA. */ \
V(kPAuthGenericQARMA, "PAuthGenericQARMA", NULL) \
- /* JavaScript-style FP <-> integer conversion instruction: FJCVTZS. */ \
+ /* JavaScript-style FP -> integer conversion instruction: FJCVTZS. */ \
V(kJSCVT, "JSCVT", "jscvt") \
+ /* Complex number support for NEON: FCMLA and FCADD. */ \
+ V(kFcma, "Fcma", "fcma") \
/* RCpc-based model (for weaker release consistency): LDAPR and variants. */ \
V(kRCpc, "RCpc", "lrcpc") \
- /* Complex number support for NEON: FCMLA and FCADD. */ \
- V(kFcma, "Fcma", "fcma")
+ V(kRCpcImm, "RCpc (imm)", "ilrcpc") \
+ /* Flag manipulation instructions: SETF{8,16}, CFINV, RMIF. */ \
+ V(kFlagM, "FlagM", "flagm") \
+ /* Unaligned single-copy atomicity. */ \
+ V(kUSCAT, "USCAT", "uscat") \
+ /* FP16 fused multiply-add or -subtract long: FMLAL{2}, FMLSL{2}. */ \
+ V(kFHM, "FHM", "asimdfhm") \
+ /* Data-independent timing (for selected instructions). */ \
+ V(kDIT, "DIT", "dit")
// clang-format on
diff --git a/test/test-api.cc b/test/test-api.cc
index 56861ef..9b3454e 100644
--- a/test/test-api.cc
+++ b/test/test-api.cc
@@ -386,9 +386,11 @@
// Armv8.1
"Atomics, LORegions, RDM, "
// Armv8.2
- "DotProduct, FPHalf, NEONHalf, RAS, DCPoP, SHA3, SHA512, SM3, SM4, "
+ "SVE, DotProduct, FPHalf, NEONHalf, RAS, DCPoP, SHA3, SHA512, SM3, SM4, "
// Armv8.3
- "PAuth, PAuthQARMA, PAuthGeneric, PAuthGenericQARMA, JSCVT, RCpc, Fcma",
+ "PAuth, PAuthQARMA, PAuthGeneric, PAuthGenericQARMA, JSCVT, Fcma, RCpc, "
+ // Armv8.4
+ "RCpc (imm), FlagM, USCAT, FHM, DIT",
CPUFeatures::All());
}