{"f16f32mm", AARCH64_FEATURE (F16F32MM), AARCH64_FEATURES (2, SIMD, F16)},
{"f16mm", AARCH64_FEATURE (F16MM), AARCH64_FEATURES (2, SIMD, F16)},
{"sve-b16mm", AARCH64_FEATURE (SVE_B16MM), AARCH64_FEATURE (SVE)},
+ {"mpamv2", AARCH64_FEATURE (MPAMv2), AARCH64_NO_FEATURES},
{NULL, AARCH64_NO_FEATURES, AARCH64_NO_FEATURES},
};
@tab Enable Armv8.5-A Memory Tagging Extensions.
@item @code{mops} @tab
@tab Enable Armv8.8-A memcpy and memset acceleration instructions
+@item @code{mpamv2} @tab
+ @tab Enable MPAMv2 system registers.
@item @code{occmo} @tab
@tab Enable Outer Cacheable Cache Maintenance Operations.
@item @code{pan} @tab
--- /dev/null
+#as: -march=armv9.4-a -menable-sysreg-checking -I$srcdir/$subdir
+#source: mpamv2.s
+#error_output: mpamv2-bad.l
--- /dev/null
+.*: Assembler messages:
+.*: Error: selected processor does not support system register name 'mpamctl_el1'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el1'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el12'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el12'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el2'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el2'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el3'
+.*: Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'mpamctl_el3'
+.*: Info: macro invoked from here
--- /dev/null
+#as: -menable-sysreg-checking -march=armv8-a+mpamv2 -I$srcdir/$subdir
+#objdump: -dr
+
+.*: file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+.*: d518a540 msr mpamctl_el1, x0
+.*: d538a540 mrs x0, mpamctl_el1
+.*: d51da540 msr mpamctl_el12, x0
+.*: d53da540 mrs x0, mpamctl_el12
+.*: d51ca540 msr mpamctl_el2, x0
+.*: d53ca540 mrs x0, mpamctl_el2
+.*: d51ea540 msr mpamctl_el3, x0
+.*: d53ea540 mrs x0, mpamctl_el3
--- /dev/null
+.include "sysreg-test-utils.inc"
+
+ rw_sys_reg mpamctl_el1
+ rw_sys_reg mpamctl_el12
+ rw_sys_reg mpamctl_el2
+ rw_sys_reg mpamctl_el3
AARCH64_FEATURE_POE2,
/* TEV instructions. */
AARCH64_FEATURE_TEV,
+ /* MPAMv2. */
+ AARCH64_FEATURE_MPAMv2,
/* Virtual features. These are used to gate instructions that are enabled
by either of two (or more) sets of command line flags. */
SYSREG ("mpambwcap_el2", CPENC (3,4,10,5,6), 0, AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
SYSREG ("mpambwidr_el1", CPENC (3,0,10,4,5), F_REG_READ, AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
SYSREG ("mpambwsm_el1", CPENC (3,0,10,5,7), 0, AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
+ SYSREG ("mpamctl_el1", CPENC (3,0,10,5,2), 0, AARCH64_FEATURE (MPAMv2))
+ SYSREG ("mpamctl_el12", CPENC (3,5,10,5,2), 0, AARCH64_FEATURE (MPAMv2))
+ SYSREG ("mpamctl_el2", CPENC (3,4,10,5,2), 0, AARCH64_FEATURE (MPAMv2))
+ SYSREG ("mpamctl_el3", CPENC (3,6,10,5,2), 0, AARCH64_FEATURE (MPAMv2))
SYSREG ("mpamhcr_el2", CPENC (3,4,10,4,0), 0, AARCH64_FEATURE (V8_2A)) /* MPAM */
SYSREG ("mpamidr_el1", CPENC (3,0,10,4,4), F_REG_READ, AARCH64_FEATURE (V8_2A)) /* MPAM */
SYSREG ("mpamsm_el1", CPENC (3,0,10,5,3), 0, AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */