I noticed, on close reading of the Arm ARM, that llvm is missing
assembly support for a recently-added PSTATE: ALLINT from FEAT_NMI.
- Adds the missing PSTATE
- Aligns the decoder more closely with the Arm ARM Decoder pseudocode,
including allowing 4-bit immediates for all PSTATES except those
explicitly noted (ALLINT, and the SVCRs that we handle separately).
- Tries to centralise the information about the immediates accepted by a
given named PSTATE, rather than spreading it around the LLVM codebase.
- Updates tests for existing pstates to reflect these changes.
- Adds another missing system register, from GIC v3.3. It is enabled
with FEAT_NMI because it's from FEAT_GICv3_NMI which implies FEAT_NMI.
Parts of this patch are by David Candler and Tomas Matheson.