aarch64: Allow testing for the presence of FEAT_AFP

Allows querying for the existence of FEAT_AFP (alternate floating-point
behavior).

While we're in the same area, we can also fill in the remaining defined
bits.
diff --git a/src/aarch64/cpu-aarch64.cc b/src/aarch64/cpu-aarch64.cc
index 0438d08..02ee2b9 100644
--- a/src/aarch64/cpu-aarch64.cc
+++ b/src/aarch64/cpu-aarch64.cc
@@ -79,6 +79,7 @@
 const IDRegister::Field AA64ISAR1::kI8MM(52);
 
 const IDRegister::Field AA64MMFR1::kLO(16);
+const IDRegister::Field AA64MMFR1::kAFP(44);
 
 const IDRegister::Field AA64MMFR2::kAT(32);
 
@@ -176,6 +177,7 @@
 CPUFeatures AA64MMFR1::GetCPUFeatures() const {
   CPUFeatures f;
   if (Get(kLO) >= 1) f.Combine(CPUFeatures::kLORegions);
+  if (Get(kAFP) >= 1) f.Combine(CPUFeatures::kAFP);
   return f;
 }
 
@@ -291,7 +293,11 @@
        CPUFeatures::kDGH,
        // Bits 48+
        CPUFeatures::kRNG,
-       CPUFeatures::kBTI};
+       CPUFeatures::kBTI,
+       CPUFeatures::kNone,   // "MTE"
+       CPUFeatures::kNone,  // "ECV"
+       CPUFeatures::kAFP,
+       CPUFeatures::kNone};  // "RPRES"
 
   uint64_t hwcap_low32 = getauxval(AT_HWCAP);
   uint64_t hwcap_high32 = getauxval(AT_HWCAP2);
diff --git a/src/aarch64/cpu-aarch64.h b/src/aarch64/cpu-aarch64.h
index 675ff2f..7ff136b 100644
--- a/src/aarch64/cpu-aarch64.h
+++ b/src/aarch64/cpu-aarch64.h
@@ -168,6 +168,7 @@
 
  private:
   static const Field kLO;
+  static const Field kAFP;
 };
 
 class AA64MMFR2 : public IDRegister {
diff --git a/src/cpu-features.h b/src/cpu-features.h
index b947466..2241693 100644
--- a/src/cpu-features.h
+++ b/src/cpu-features.h
@@ -177,7 +177,9 @@
   V(kSVESHA3,             "SVE SHA3",               "svesha3")                 \
   V(kSVEBitPerm,          "SVE BitPerm",            "svebitperm")              \
   V(kSVEAES,              "SVE AES",                "sveaes")                  \
-  V(kSVEPmull128,         "SVE Pmull128",           "svepmull")
+  V(kSVEPmull128,         "SVE Pmull128",           "svepmull")                \
+  /* Alternate floating-point behavior                                      */ \
+  V(kAFP,                 "AFP",                    "afp")
 // clang-format on