FWIW I think this looks reasonable. The ARM equivalent uses bitfields such as
unsigned CRC : 1; unsigned Crypto : 1; unsigned DSP : 1; unsigned Unaligned : 1; unsigned DotProd : 1;
Which would make more sense than using unsigned for each individual field. Several other targets that I looked at used bool and the Has<feature> convention so I think this brings AArch64 more in line with non ARM Targets at the cost of losing a little coherence with ARM where the name Crypto remains. I don't think that this is particularly important as the two have already started to diverge with HasDotProd.