public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros
@ 2024-02-27 10:59 Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 1/4] aarch64: testsuite: replace instruction addresses by regex Matthieu Longo
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Matthieu Longo @ 2024-02-27 10:59 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, Nick Clifton, Matthieu Longo

Hi,

[patch 0/4] aarch64: testsuite: refactoring of some sysreg tests to share test macros
  [patch v1 1/4] aarch64: testsuite: replace instruction addresses by regex
  [patch v1 2/4] aarch64: testsuite: use same regs for read and write tests
  [patch v1 3/4] aarch64: testsuite: reorder write and read to match macro order
  [patch v1 4/4] aarch64: testsuite: share test utils macros and use them

This patch series proposes a refactoring of sysreg tests focusing on:
- replacing hard-coded instruction addresses by regexes in the objdump test output files (.d)
- simplifying the usage of macro by using the same register for reading and writing
- providing 2 macros to read/write from/to sysregs
- adapting the tests to use those 2 macros
More details are available in the individual commit messages.

Regression tested on the aarch64-none-elf, and no regression was found.

Ok for binutils-master? I don't have commit access so I need someone to commit on my behalf.

Regards,
Matthieu.

 .../aarch64/sysreg/armv8_9-a-sysregs-bad.d    |   2 +-
 .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    | 142 ++++-
 .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |  91 +--
 .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    | 143 ++---
 .../gas/aarch64/sysreg/illegal-sysreg-3.d     |   2 +-
 .../gas/aarch64/sysreg/illegal-sysreg-4.d     |   2 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-1.d   |   2 +
 gas/testsuite/gas/aarch64/sysreg/sysreg-1.s   | 223 ++++----
 gas/testsuite/gas/aarch64/sysreg/sysreg-2.d   | 105 ++--
 gas/testsuite/gas/aarch64/sysreg/sysreg-2.s   |  47 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-3.d   |  43 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-3.s   |  25 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-6.d   |   2 +
 gas/testsuite/gas/aarch64/sysreg/sysreg-6.s   |   7 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |  18 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  34 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   | 530 +++++++++---------
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   | 339 ++++++-----
 .../gas/aarch64/sysreg/sysreg-test-utils.inc  |  32 ++
 gas/testsuite/gas/aarch64/sysreg/sysreg.d     |  58 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  63 +--
 gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  42 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |  27 +-
 23 files changed, 1015 insertions(+), 964 deletions(-)
 create mode 100644 gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc

-- 
2.34.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v1 1/4] aarch64: testsuite: replace instruction addresses by regex
  2024-02-27 10:59 [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
@ 2024-02-27 10:59 ` Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 2/4] aarch64: testsuite: use same regs for read and write tests Matthieu Longo
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Matthieu Longo @ 2024-02-27 10:59 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, Nick Clifton, Matthieu Longo

[-- Attachment #1: Type: text/plain, Size: 383 bytes --]


This patch removes the instruction addresses from the objdump's expected
output (.d files). The intended benefit from this clean-up is to allow to
swap lines around more easilly, and removes the noise of patches that add,
remove or reorder instructions.
---
 gas/testsuite/gas/aarch64/sysreg/sysreg.d | 56 +++++++++++------------
 1 file changed, 28 insertions(+), 28 deletions(-)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v1-0001-aarch64-testsuite-replace-instruction-addresses-b.patch --]
[-- Type: text/x-patch; name="v1-0001-aarch64-testsuite-replace-instruction-addresses-b.patch", Size: 2387 bytes --]

diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sysreg.d
index d10175837f2..90b5be3cabf 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg.d
@@ -5,31 +5,31 @@
 Disassembly of section \.text:
 
 0+ <.*>:
-   0:	d51b9c67 	msr	pmovsclr_el0, x7
-   4:	d53b9c60 	mrs	x0, pmovsclr_el0
-   8:	d51b9e67 	msr	pmovsset_el0, x7
-   c:	d53b9e60 	mrs	x0, pmovsset_el0
-  10:	d5380140 	mrs	x0, id_dfr0_el1
-  14:	d5380100 	mrs	x0, id_pfr0_el1
-  18:	d5380120 	mrs	x0, id_pfr1_el1
-  1c:	d5380160 	mrs	x0, id_afr0_el1
-  20:	d5380180 	mrs	x0, id_mmfr0_el1
-  24:	d53801a0 	mrs	x0, id_mmfr1_el1
-  28:	d53801c0 	mrs	x0, id_mmfr2_el1
-  2c:	d53801e0 	mrs	x0, id_mmfr3_el1
-  30:	d53802c0 	mrs	x0, id_mmfr4_el1
-  34:	d5380200 	mrs	x0, id_isar0_el1
-  38:	d5380220 	mrs	x0, id_isar1_el1
-  3c:	d5380240 	mrs	x0, id_isar2_el1
-  40:	d5380260 	mrs	x0, id_isar3_el1
-  44:	d5380280 	mrs	x0, id_isar4_el1
-  48:	d53802a0 	mrs	x0, id_isar5_el1
-  4c:	d538cf00 	mrs	x0, s3_0_c12_c15_0
-  50:	d5384b00 	mrs	x0, s3_0_c4_c11_0
-  54:	d5184b00 	msr	s3_0_c4_c11_0, x0
-  58:	d5310300 	mrs	x0, trcstatr
-  5c:	d5110300 	msr	trcstatr, x0
-  60:	d5380640 	mrs	x0, id_aa64isar2_el1
-  64:	d538065e 	mrs	x30, id_aa64isar2_el1
-  68:	d5380660 	mrs	x0, id_aa64isar3_el1
-  6c:	d538067e 	mrs	x30, id_aa64isar3_el1
+.*:	d51b9c67 	msr	pmovsclr_el0, x7
+.*:	d53b9c60 	mrs	x0, pmovsclr_el0
+.*:	d51b9e67 	msr	pmovsset_el0, x7
+.*:	d53b9e60 	mrs	x0, pmovsset_el0
+.*:	d5380140 	mrs	x0, id_dfr0_el1
+.*:	d5380100 	mrs	x0, id_pfr0_el1
+.*:	d5380120 	mrs	x0, id_pfr1_el1
+.*:	d5380160 	mrs	x0, id_afr0_el1
+.*:	d5380180 	mrs	x0, id_mmfr0_el1
+.*:	d53801a0 	mrs	x0, id_mmfr1_el1
+.*:	d53801c0 	mrs	x0, id_mmfr2_el1
+.*:	d53801e0 	mrs	x0, id_mmfr3_el1
+.*:	d53802c0 	mrs	x0, id_mmfr4_el1
+.*:	d5380200 	mrs	x0, id_isar0_el1
+.*:	d5380220 	mrs	x0, id_isar1_el1
+.*:	d5380240 	mrs	x0, id_isar2_el1
+.*:	d5380260 	mrs	x0, id_isar3_el1
+.*:	d5380280 	mrs	x0, id_isar4_el1
+.*:	d53802a0 	mrs	x0, id_isar5_el1
+.*:	d538cf00 	mrs	x0, s3_0_c12_c15_0
+.*:	d5384b00 	mrs	x0, s3_0_c4_c11_0
+.*:	d5184b00 	msr	s3_0_c4_c11_0, x0
+.*:	d5310300 	mrs	x0, trcstatr
+.*:	d5110300 	msr	trcstatr, x0
+.*:	d5380640 	mrs	x0, id_aa64isar2_el1
+.*:	d538065e 	mrs	x30, id_aa64isar2_el1
+.*:	d5380660 	mrs	x0, id_aa64isar3_el1
+.*:	d538067e 	mrs	x30, id_aa64isar3_el1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v1 2/4] aarch64: testsuite: use same regs for read and write tests
  2024-02-27 10:59 [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 1/4] aarch64: testsuite: replace instruction addresses by regex Matthieu Longo
@ 2024-02-27 10:59 ` Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 3/4] aarch64: testsuite: reorder write and read to match macro order Matthieu Longo
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Matthieu Longo @ 2024-02-27 10:59 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, Nick Clifton, Matthieu Longo

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]


This patch aims at making easier to replacement of read and write
instructions to system registers by a macro that will use the same
registers for read and write.
---
 gas/testsuite/gas/aarch64/sysreg/sysreg-2.d  | 102 ++--
 gas/testsuite/gas/aarch64/sysreg/sysreg-2.s  |  38 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-3.d  |  40 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-3.s  |  18 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.d  | 528 +++++++++----------
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.s  |   6 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg128.d |  20 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg128.s |   2 +-
 8 files changed, 377 insertions(+), 377 deletions(-)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v1-0002-aarch64-testsuite-use-same-regs-for-read-and-writ.patch --]
[-- Type: text/x-patch; name="v1-0002-aarch64-testsuite-use-same-regs-for-read-and-writ.patch", Size: 34792 bytes --]

diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
index ac0a8621bfa..0a3a0c7d6b4 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
@@ -7,54 +7,54 @@
 Disassembly of section .text:
 
 0+ <.*>:
-.*:	d5380725 	mrs	x5, id_aa64mmfr1_el1
-.*:	d5380747 	mrs	x7, id_aa64mmfr2_el1
-.*:	d5380769 	mrs	x9, id_aa64mmfr3_el1
-.*:	d538078b 	mrs	x11, id_aa64mmfr4_el1
-  [0-9a-f]+:	d5385305 	mrs	x5, erridr_el1
-  [0-9a-f]+:	d5185327 	msr	errselr_el1, x7
-  [0-9a-f]+:	d5385327 	mrs	x7, errselr_el1
-  [0-9a-f]+:	d5385405 	mrs	x5, erxfr_el1
-  [0-9a-f]+:	d5185425 	msr	erxctlr_el1, x5
-  [0-9a-f]+:	d5385425 	mrs	x5, erxctlr_el1
-  [0-9a-f]+:	d5185445 	msr	erxstatus_el1, x5
-  [0-9a-f]+:	d5385445 	mrs	x5, erxstatus_el1
-  [0-9a-f]+:	d5185465 	msr	erxaddr_el1, x5
-  [0-9a-f]+:	d5385465 	mrs	x5, erxaddr_el1
-  [0-9a-f]+:	d5185505 	msr	erxmisc0_el1, x5
-  [0-9a-f]+:	d5385505 	mrs	x5, erxmisc0_el1
-  [0-9a-f]+:	d5185525 	msr	erxmisc1_el1, x5
-  [0-9a-f]+:	d5385525 	mrs	x5, erxmisc1_el1
-  [0-9a-f]+:	d53c5265 	mrs	x5, vsesr_el2
-  [0-9a-f]+:	d518c125 	msr	disr_el1, x5
-  [0-9a-f]+:	d538c125 	mrs	x5, disr_el1
-  [0-9a-f]+:	d53cc125 	mrs	x5, vdisr_el2
-  [0-9a-f]+:	d50b7a20 	dc	cvac, x0
-  [0-9a-f]+:	d50b7b21 	dc	cvau, x1
-  [0-9a-f]+:	d50b7c22 	dc	cvap, x2
-  [0-9a-f]+:	d5087900 	at	s1e1rp, x0
-  [0-9a-f]+:	d5087921 	at	s1e1wp, x1
-  [0-9a-f]+:	d5189a07 	msr	pmblimitr_el1, x7
-  [0-9a-f]+:	d5389a07 	mrs	x7, pmblimitr_el1
-  [0-9a-f]+:	d5189a27 	msr	pmbptr_el1, x7
-  [0-9a-f]+:	d5389a27 	mrs	x7, pmbptr_el1
-  [0-9a-f]+:	d5189a67 	msr	pmbsr_el1, x7
-  [0-9a-f]+:	d5389a67 	mrs	x7, pmbsr_el1
-  [0-9a-f]+:	d5189907 	msr	pmscr_el1, x7
-  [0-9a-f]+:	d5389907 	mrs	x7, pmscr_el1
-  [0-9a-f]+:	d5189947 	msr	pmsicr_el1, x7
-  [0-9a-f]+:	d5389947 	mrs	x7, pmsicr_el1
-  [0-9a-f]+:	d5189967 	msr	pmsirr_el1, x7
-  [0-9a-f]+:	d5389967 	mrs	x7, pmsirr_el1
-  [0-9a-f]+:	d5189987 	msr	pmsfcr_el1, x7
-  [0-9a-f]+:	d5389987 	mrs	x7, pmsfcr_el1
-  [0-9a-f]+:	d51899a7 	msr	pmsevfr_el1, x7
-  [0-9a-f]+:	d53899a7 	mrs	x7, pmsevfr_el1
-  [0-9a-f]+:	d51899c7 	msr	pmslatfr_el1, x7
-  [0-9a-f]+:	d53899c7 	mrs	x7, pmslatfr_el1
-  [0-9a-f]+:	d51c9907 	msr	pmscr_el2, x7
-  [0-9a-f]+:	d53c9907 	mrs	x7, pmscr_el2
-  [0-9a-f]+:	d51d9907 	msr	pmscr_el12, x7
-  [0-9a-f]+:	d53d9907 	mrs	x7, pmscr_el12
-  [0-9a-f]+:	d5389ae7 	mrs	x7, pmbidr_el1
-  [0-9a-f]+:	d53899e7 	mrs	x7, pmsidr_el1
+.*:	d5380720 	mrs	x0, id_aa64mmfr1_el1
+.*:	d5380740 	mrs	x0, id_aa64mmfr2_el1
+.*:	d5380760 	mrs	x0, id_aa64mmfr3_el1
+.*:	d5380780 	mrs	x0, id_aa64mmfr4_el1
+.*:	d5385300 	mrs	x0, erridr_el1
+.*:	d5185320 	msr	errselr_el1, x0
+.*:	d5385320 	mrs	x0, errselr_el1
+.*:	d5385400 	mrs	x0, erxfr_el1
+.*:	d5185420 	msr	erxctlr_el1, x0
+.*:	d5385420 	mrs	x0, erxctlr_el1
+.*:	d5185440 	msr	erxstatus_el1, x0
+.*:	d5385440 	mrs	x0, erxstatus_el1
+.*:	d5185460 	msr	erxaddr_el1, x0
+.*:	d5385460 	mrs	x0, erxaddr_el1
+.*:	d5185500 	msr	erxmisc0_el1, x0
+.*:	d5385500 	mrs	x0, erxmisc0_el1
+.*:	d5185520 	msr	erxmisc1_el1, x0
+.*:	d5385520 	mrs	x0, erxmisc1_el1
+.*:	d53c5260 	mrs	x0, vsesr_el2
+.*:	d518c120 	msr	disr_el1, x0
+.*:	d538c120 	mrs	x0, disr_el1
+.*:	d53cc120 	mrs	x0, vdisr_el2
+.*:	d50b7a20 	dc	cvac, x0
+.*:	d50b7b21 	dc	cvau, x1
+.*:	d50b7c22 	dc	cvap, x2
+.*:	d5087900 	at	s1e1rp, x0
+.*:	d5087921 	at	s1e1wp, x1
+.*:	d5189a00 	msr	pmblimitr_el1, x0
+.*:	d5389a00 	mrs	x0, pmblimitr_el1
+.*:	d5189a20 	msr	pmbptr_el1, x0
+.*:	d5389a20 	mrs	x0, pmbptr_el1
+.*:	d5189a60 	msr	pmbsr_el1, x0
+.*:	d5389a60 	mrs	x0, pmbsr_el1
+.*:	d5189900 	msr	pmscr_el1, x0
+.*:	d5389900 	mrs	x0, pmscr_el1
+.*:	d5189940 	msr	pmsicr_el1, x0
+.*:	d5389940 	mrs	x0, pmsicr_el1
+.*:	d5189960 	msr	pmsirr_el1, x0
+.*:	d5389960 	mrs	x0, pmsirr_el1
+.*:	d5189980 	msr	pmsfcr_el1, x0
+.*:	d5389980 	mrs	x0, pmsfcr_el1
+.*:	d51899a0 	msr	pmsevfr_el1, x0
+.*:	d53899a0 	mrs	x0, pmsevfr_el1
+.*:	d51899c0 	msr	pmslatfr_el1, x0
+.*:	d53899c0 	mrs	x0, pmslatfr_el1
+.*:	d51c9900 	msr	pmscr_el2, x0
+.*:	d53c9900 	mrs	x0, pmscr_el2
+.*:	d51d9900 	msr	pmscr_el12, x0
+.*:	d53d9900 	mrs	x0, pmscr_el12
+.*:	d5389ae0 	mrs	x0, pmbidr_el1
+.*:	d53899e0 	mrs	x0, pmsidr_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s
index ae2bb145e72..315e6411849 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s
@@ -11,27 +11,27 @@
 
 	.text
 
-	rw_sys_reg sys_reg=id_aa64mmfr1_el1 xreg=x5 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64mmfr2_el1 xreg=x7 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64mmfr3_el1 xreg=x9 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64mmfr4_el1 xreg=x11 r=1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr1_el1 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr2_el1 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr3_el1 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr4_el1 xreg=x0 r=1 w=0
 
 	/* RAS extension.  */
 
-	rw_sys_reg sys_reg=erridr_el1 xreg=x5 r=1 w=0
-	rw_sys_reg sys_reg=errselr_el1 xreg=x7 r=1 w=1
+	rw_sys_reg sys_reg=erridr_el1 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=errselr_el1 xreg=x0 r=1 w=1
 
-	rw_sys_reg sys_reg=erxfr_el1 xreg=x5 r=1 w=0
-	rw_sys_reg sys_reg=erxctlr_el1 xreg=x5 r=1 w=1
-	rw_sys_reg sys_reg=erxstatus_el1 xreg=x5 r=1 w=1
-	rw_sys_reg sys_reg=erxaddr_el1 xreg=x5 r=1 w=1
+	rw_sys_reg sys_reg=erxfr_el1 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=erxctlr_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=erxstatus_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=erxaddr_el1 xreg=x0 r=1 w=1
 
-	rw_sys_reg sys_reg=erxmisc0_el1 xreg=x5 r=1 w=1
-	rw_sys_reg sys_reg=erxmisc1_el1 xreg=x5 r=1 w=1
+	rw_sys_reg sys_reg=erxmisc0_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=erxmisc1_el1 xreg=x0 r=1 w=1
 
-	rw_sys_reg sys_reg=vsesr_el2 xreg=x5 r=1 w=0
-	rw_sys_reg sys_reg=disr_el1 xreg=x5 r=1 w=1
-	rw_sys_reg sys_reg=vdisr_el2 xreg=x5 r=1 w=0
+	rw_sys_reg sys_reg=vsesr_el2 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=disr_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=vdisr_el2 xreg=x0 r=1 w=0
 
 	/* DC CVAP.  */
 
@@ -47,17 +47,17 @@
 	/* Statistical profiling.  */
 
 	.irp reg, pmblimitr_el1, pmbptr_el1, pmbsr_el1
-	rw_sys_reg sys_reg=\reg xreg=x7 r=1 w=1
+	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=1
 	.endr
 
 	.irp reg, pmscr_el1, pmsicr_el1, pmsirr_el1, pmsfcr_el1
-	rw_sys_reg sys_reg=\reg xreg=x7 r=1 w=1
+	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=1
 	.endr
 
 	.irp reg, pmsevfr_el1, pmslatfr_el1, pmscr_el2, pmscr_el12
-	rw_sys_reg sys_reg=\reg xreg=x7 r=1 w=1
+	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=1
 	.endr
 
 	.irp reg, pmbidr_el1, pmsidr_el1
-	rw_sys_reg sys_reg=\reg xreg=x7 r=1 w=0
+	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=0
 	.endr
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
index e1c1ead73e7..5ed05d6916c 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
@@ -6,23 +6,23 @@
 Disassembly of section \.text:
 
 0+ <.*>:
-   0:	d5182100 	msr	apiakeylo_el1, x0
-   4:	d5382100 	mrs	x0, apiakeylo_el1
-   8:	d5182121 	msr	apiakeyhi_el1, x1
-   c:	d5382121 	mrs	x1, apiakeyhi_el1
-  10:	d5182142 	msr	apibkeylo_el1, x2
-  14:	d5382142 	mrs	x2, apibkeylo_el1
-  18:	d5182163 	msr	apibkeyhi_el1, x3
-  1c:	d5382163 	mrs	x3, apibkeyhi_el1
-  20:	d5182204 	msr	apdakeylo_el1, x4
-  24:	d5382204 	mrs	x4, apdakeylo_el1
-  28:	d5182225 	msr	apdakeyhi_el1, x5
-  2c:	d5382225 	mrs	x5, apdakeyhi_el1
-  30:	d5182246 	msr	apdbkeylo_el1, x6
-  34:	d5382246 	mrs	x6, apdbkeylo_el1
-  38:	d5182267 	msr	apdbkeyhi_el1, x7
-  3c:	d5382267 	mrs	x7, apdbkeyhi_el1
-  40:	d5182308 	msr	apgakeylo_el1, x8
-  44:	d5382308 	mrs	x8, apgakeylo_el1
-  48:	d5182329 	msr	apgakeyhi_el1, x9
-  4c:	d5382329 	mrs	x9, apgakeyhi_el1
+.*:	d5182100 	msr	apiakeylo_el1, x0
+.*:	d5382100 	mrs	x0, apiakeylo_el1
+.*:	d5182120 	msr	apiakeyhi_el1, x0
+.*:	d5382120 	mrs	x0, apiakeyhi_el1
+.*:	d5182140 	msr	apibkeylo_el1, x0
+.*:	d5382140 	mrs	x0, apibkeylo_el1
+.*:	d5182160 	msr	apibkeyhi_el1, x0
+.*:	d5382160 	mrs	x0, apibkeyhi_el1
+.*:	d5182200 	msr	apdakeylo_el1, x0
+.*:	d5382200 	mrs	x0, apdakeylo_el1
+.*:	d5182220 	msr	apdakeyhi_el1, x0
+.*:	d5382220 	mrs	x0, apdakeyhi_el1
+.*:	d5182240 	msr	apdbkeylo_el1, x0
+.*:	d5382240 	mrs	x0, apdbkeylo_el1
+.*:	d5182260 	msr	apdbkeyhi_el1, x0
+.*:	d5382260 	mrs	x0, apdbkeyhi_el1
+.*:	d5182300 	msr	apgakeylo_el1, x0
+.*:	d5382300 	mrs	x0, apgakeylo_el1
+.*:	d5182320 	msr	apgakeyhi_el1, x0
+.*:	d5382320 	mrs	x0, apgakeyhi_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s
index e2ffc81c2b2..b45f89fcf27 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s
@@ -8,14 +8,14 @@
 	.text
 
 	test sys_reg=apiakeylo_el1 xreg=x0
-	test sys_reg=apiakeyhi_el1 xreg=x1
-	test sys_reg=apibkeylo_el1 xreg=x2
-	test sys_reg=apibkeyhi_el1 xreg=x3
+	test sys_reg=apiakeyhi_el1 xreg=x0
+	test sys_reg=apibkeylo_el1 xreg=x0
+	test sys_reg=apibkeyhi_el1 xreg=x0
 
-	test sys_reg=apdakeylo_el1 xreg=x4
-	test sys_reg=apdakeyhi_el1 xreg=x5
-	test sys_reg=apdbkeylo_el1 xreg=x6
-	test sys_reg=apdbkeyhi_el1 xreg=x7
+	test sys_reg=apdakeylo_el1 xreg=x0
+	test sys_reg=apdakeyhi_el1 xreg=x0
+	test sys_reg=apdbkeylo_el1 xreg=x0
+	test sys_reg=apdbkeyhi_el1 xreg=x0
 
-	test sys_reg=apgakeylo_el1 xreg=x8
-	test sys_reg=apgakeyhi_el1 xreg=x9
+	test sys_reg=apgakeylo_el1 xreg=x0
+	test sys_reg=apgakeyhi_el1 xreg=x0
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
index 09b67245781..3f048849836 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
@@ -9,287 +9,287 @@ Disassembly of section \.text:
 [^:]*:	d53803a0 	mrs	x0, id_dfr1_el1
 [^:]*:	d53803c0 	mrs	x0, id_mmfr5_el1
 [^:]*:	d53802e0 	mrs	x0, id_isar6_el1
-[^:]*:	d5384602 	mrs	x2, icc_pmr_el1
-[^:]*:	d5184603 	msr	icc_pmr_el1, x3
+[^:]*:	d5384600 	mrs	x0, icc_pmr_el1
+[^:]*:	d5184600 	msr	icc_pmr_el1, x0
 [^:]*:	d538c800 	mrs	x0, icc_iar0_el1
-[^:]*:	d518c821 	msr	icc_eoir0_el1, x1
+[^:]*:	d518c820 	msr	icc_eoir0_el1, x0
 [^:]*:	d538c840 	mrs	x0, icc_hppir0_el1
-[^:]*:	d538c862 	mrs	x2, icc_bpr0_el1
-[^:]*:	d518c863 	msr	icc_bpr0_el1, x3
-[^:]*:	d538c882 	mrs	x2, icc_ap0r0_el1
-[^:]*:	d518c883 	msr	icc_ap0r0_el1, x3
-[^:]*:	d538c8a2 	mrs	x2, icc_ap0r1_el1
-[^:]*:	d518c8a3 	msr	icc_ap0r1_el1, x3
-[^:]*:	d538c8c2 	mrs	x2, icc_ap0r2_el1
-[^:]*:	d518c8c3 	msr	icc_ap0r2_el1, x3
-[^:]*:	d538c8e2 	mrs	x2, icc_ap0r3_el1
-[^:]*:	d518c8e3 	msr	icc_ap0r3_el1, x3
-[^:]*:	d538c902 	mrs	x2, icc_ap1r0_el1
-[^:]*:	d518c903 	msr	icc_ap1r0_el1, x3
-[^:]*:	d538c922 	mrs	x2, icc_ap1r1_el1
-[^:]*:	d518c923 	msr	icc_ap1r1_el1, x3
-[^:]*:	d538c942 	mrs	x2, icc_ap1r2_el1
-[^:]*:	d518c943 	msr	icc_ap1r2_el1, x3
-[^:]*:	d538c962 	mrs	x2, icc_ap1r3_el1
-[^:]*:	d518c963 	msr	icc_ap1r3_el1, x3
-[^:]*:	d518cb21 	msr	icc_dir_el1, x1
+[^:]*:	d538c860 	mrs	x0, icc_bpr0_el1
+[^:]*:	d518c860 	msr	icc_bpr0_el1, x0
+[^:]*:	d538c880 	mrs	x0, icc_ap0r0_el1
+[^:]*:	d518c880 	msr	icc_ap0r0_el1, x0
+[^:]*:	d538c8a0 	mrs	x0, icc_ap0r1_el1
+[^:]*:	d518c8a0 	msr	icc_ap0r1_el1, x0
+[^:]*:	d538c8c0 	mrs	x0, icc_ap0r2_el1
+[^:]*:	d518c8c0 	msr	icc_ap0r2_el1, x0
+[^:]*:	d538c8e0 	mrs	x0, icc_ap0r3_el1
+[^:]*:	d518c8e0 	msr	icc_ap0r3_el1, x0
+[^:]*:	d538c900 	mrs	x0, icc_ap1r0_el1
+[^:]*:	d518c900 	msr	icc_ap1r0_el1, x0
+[^:]*:	d538c920 	mrs	x0, icc_ap1r1_el1
+[^:]*:	d518c920 	msr	icc_ap1r1_el1, x0
+[^:]*:	d538c940 	mrs	x0, icc_ap1r2_el1
+[^:]*:	d518c940 	msr	icc_ap1r2_el1, x0
+[^:]*:	d538c960 	mrs	x0, icc_ap1r3_el1
+[^:]*:	d518c960 	msr	icc_ap1r3_el1, x0
+[^:]*:	d518cb20 	msr	icc_dir_el1, x0
 [^:]*:	d538cb60 	mrs	x0, icc_rpr_el1
-[^:]*:	d518cba1 	msr	icc_sgi1r_el1, x1
-[^:]*:	d518cbc1 	msr	icc_asgi1r_el1, x1
-[^:]*:	d518cbe1 	msr	icc_sgi0r_el1, x1
+[^:]*:	d518cba0 	msr	icc_sgi1r_el1, x0
+[^:]*:	d518cbc0 	msr	icc_asgi1r_el1, x0
+[^:]*:	d518cbe0 	msr	icc_sgi0r_el1, x0
 [^:]*:	d538cc00 	mrs	x0, icc_iar1_el1
-[^:]*:	d518cc21 	msr	icc_eoir1_el1, x1
+[^:]*:	d518cc20 	msr	icc_eoir1_el1, x0
 [^:]*:	d538cc40 	mrs	x0, icc_hppir1_el1
-[^:]*:	d538cc62 	mrs	x2, icc_bpr1_el1
-[^:]*:	d518cc63 	msr	icc_bpr1_el1, x3
-[^:]*:	d538cc82 	mrs	x2, icc_ctlr_el1
-[^:]*:	d518cc83 	msr	icc_ctlr_el1, x3
-[^:]*:	d538ccc2 	mrs	x2, icc_igrpen0_el1
-[^:]*:	d518ccc3 	msr	icc_igrpen0_el1, x3
-[^:]*:	d538cce2 	mrs	x2, icc_igrpen1_el1
-[^:]*:	d518cce3 	msr	icc_igrpen1_el1, x3
-[^:]*:	d53cc802 	mrs	x2, ich_ap0r0_el2
-[^:]*:	d51cc803 	msr	ich_ap0r0_el2, x3
-[^:]*:	d53cc822 	mrs	x2, ich_ap0r1_el2
-[^:]*:	d51cc823 	msr	ich_ap0r1_el2, x3
-[^:]*:	d53cc842 	mrs	x2, ich_ap0r2_el2
-[^:]*:	d51cc843 	msr	ich_ap0r2_el2, x3
-[^:]*:	d53cc862 	mrs	x2, ich_ap0r3_el2
-[^:]*:	d51cc863 	msr	ich_ap0r3_el2, x3
-[^:]*:	d53cc902 	mrs	x2, ich_ap1r0_el2
-[^:]*:	d51cc903 	msr	ich_ap1r0_el2, x3
-[^:]*:	d53cc922 	mrs	x2, ich_ap1r1_el2
-[^:]*:	d51cc923 	msr	ich_ap1r1_el2, x3
-[^:]*:	d53cc942 	mrs	x2, ich_ap1r2_el2
-[^:]*:	d51cc943 	msr	ich_ap1r2_el2, x3
-[^:]*:	d53cc962 	mrs	x2, ich_ap1r3_el2
-[^:]*:	d51cc963 	msr	ich_ap1r3_el2, x3
-[^:]*:	d53ccb02 	mrs	x2, ich_hcr_el2
-[^:]*:	d51ccb03 	msr	ich_hcr_el2, x3
+[^:]*:	d538cc60 	mrs	x0, icc_bpr1_el1
+[^:]*:	d518cc60 	msr	icc_bpr1_el1, x0
+[^:]*:	d538cc80 	mrs	x0, icc_ctlr_el1
+[^:]*:	d518cc80 	msr	icc_ctlr_el1, x0
+[^:]*:	d538ccc0 	mrs	x0, icc_igrpen0_el1
+[^:]*:	d518ccc0 	msr	icc_igrpen0_el1, x0
+[^:]*:	d538cce0 	mrs	x0, icc_igrpen1_el1
+[^:]*:	d518cce0 	msr	icc_igrpen1_el1, x0
+[^:]*:	d53cc800 	mrs	x0, ich_ap0r0_el2
+[^:]*:	d51cc800 	msr	ich_ap0r0_el2, x0
+[^:]*:	d53cc820 	mrs	x0, ich_ap0r1_el2
+[^:]*:	d51cc820 	msr	ich_ap0r1_el2, x0
+[^:]*:	d53cc840 	mrs	x0, ich_ap0r2_el2
+[^:]*:	d51cc840 	msr	ich_ap0r2_el2, x0
+[^:]*:	d53cc860 	mrs	x0, ich_ap0r3_el2
+[^:]*:	d51cc860 	msr	ich_ap0r3_el2, x0
+[^:]*:	d53cc900 	mrs	x0, ich_ap1r0_el2
+[^:]*:	d51cc900 	msr	ich_ap1r0_el2, x0
+[^:]*:	d53cc920 	mrs	x0, ich_ap1r1_el2
+[^:]*:	d51cc920 	msr	ich_ap1r1_el2, x0
+[^:]*:	d53cc940 	mrs	x0, ich_ap1r2_el2
+[^:]*:	d51cc940 	msr	ich_ap1r2_el2, x0
+[^:]*:	d53cc960 	mrs	x0, ich_ap1r3_el2
+[^:]*:	d51cc960 	msr	ich_ap1r3_el2, x0
+[^:]*:	d53ccb00 	mrs	x0, ich_hcr_el2
+[^:]*:	d51ccb00 	msr	ich_hcr_el2, x0
 [^:]*:	d53ccb40 	mrs	x0, ich_misr_el2
 [^:]*:	d53ccb60 	mrs	x0, ich_eisr_el2
 [^:]*:	d53ccba0 	mrs	x0, ich_elrsr_el2
-[^:]*:	d53ccbe2 	mrs	x2, ich_vmcr_el2
-[^:]*:	d51ccbe3 	msr	ich_vmcr_el2, x3
-[^:]*:	d53ccc02 	mrs	x2, ich_lr0_el2
-[^:]*:	d51ccc03 	msr	ich_lr0_el2, x3
-[^:]*:	d53ccc22 	mrs	x2, ich_lr1_el2
-[^:]*:	d51ccc23 	msr	ich_lr1_el2, x3
-[^:]*:	d53ccc42 	mrs	x2, ich_lr2_el2
-[^:]*:	d51ccc43 	msr	ich_lr2_el2, x3
-[^:]*:	d53ccc62 	mrs	x2, ich_lr3_el2
-[^:]*:	d51ccc63 	msr	ich_lr3_el2, x3
-[^:]*:	d53ccc82 	mrs	x2, ich_lr4_el2
-[^:]*:	d51ccc83 	msr	ich_lr4_el2, x3
-[^:]*:	d53ccca2 	mrs	x2, ich_lr5_el2
-[^:]*:	d51ccca3 	msr	ich_lr5_el2, x3
-[^:]*:	d53cccc2 	mrs	x2, ich_lr6_el2
-[^:]*:	d51cccc3 	msr	ich_lr6_el2, x3
-[^:]*:	d53ccce2 	mrs	x2, ich_lr7_el2
-[^:]*:	d51ccce3 	msr	ich_lr7_el2, x3
-[^:]*:	d53ccd02 	mrs	x2, ich_lr8_el2
-[^:]*:	d51ccd03 	msr	ich_lr8_el2, x3
-[^:]*:	d53ccd22 	mrs	x2, ich_lr9_el2
-[^:]*:	d51ccd23 	msr	ich_lr9_el2, x3
-[^:]*:	d53ccd42 	mrs	x2, ich_lr10_el2
-[^:]*:	d51ccd43 	msr	ich_lr10_el2, x3
-[^:]*:	d53ccd62 	mrs	x2, ich_lr11_el2
-[^:]*:	d51ccd63 	msr	ich_lr11_el2, x3
-[^:]*:	d53ccd82 	mrs	x2, ich_lr12_el2
-[^:]*:	d51ccd83 	msr	ich_lr12_el2, x3
-[^:]*:	d53ccda2 	mrs	x2, ich_lr13_el2
-[^:]*:	d51ccda3 	msr	ich_lr13_el2, x3
-[^:]*:	d53ccdc2 	mrs	x2, ich_lr14_el2
-[^:]*:	d51ccdc3 	msr	ich_lr14_el2, x3
-[^:]*:	d53ccde2 	mrs	x2, ich_lr15_el2
-[^:]*:	d51ccde3 	msr	ich_lr15_el2, x3
-[^:]*:	d53ecce2 	mrs	x2, icc_igrpen1_el3
-[^:]*:	d51ecce3 	msr	icc_igrpen1_el3, x3
+[^:]*:	d53ccbe0 	mrs	x0, ich_vmcr_el2
+[^:]*:	d51ccbe0 	msr	ich_vmcr_el2, x0
+[^:]*:	d53ccc00 	mrs	x0, ich_lr0_el2
+[^:]*:	d51ccc00 	msr	ich_lr0_el2, x0
+[^:]*:	d53ccc20 	mrs	x0, ich_lr1_el2
+[^:]*:	d51ccc20 	msr	ich_lr1_el2, x0
+[^:]*:	d53ccc40 	mrs	x0, ich_lr2_el2
+[^:]*:	d51ccc40 	msr	ich_lr2_el2, x0
+[^:]*:	d53ccc60 	mrs	x0, ich_lr3_el2
+[^:]*:	d51ccc60 	msr	ich_lr3_el2, x0
+[^:]*:	d53ccc80 	mrs	x0, ich_lr4_el2
+[^:]*:	d51ccc80 	msr	ich_lr4_el2, x0
+[^:]*:	d53ccca0 	mrs	x0, ich_lr5_el2
+[^:]*:	d51ccca0 	msr	ich_lr5_el2, x0
+[^:]*:	d53cccc0 	mrs	x0, ich_lr6_el2
+[^:]*:	d51cccc0 	msr	ich_lr6_el2, x0
+[^:]*:	d53ccce0 	mrs	x0, ich_lr7_el2
+[^:]*:	d51ccce0 	msr	ich_lr7_el2, x0
+[^:]*:	d53ccd00 	mrs	x0, ich_lr8_el2
+[^:]*:	d51ccd00 	msr	ich_lr8_el2, x0
+[^:]*:	d53ccd20 	mrs	x0, ich_lr9_el2
+[^:]*:	d51ccd20 	msr	ich_lr9_el2, x0
+[^:]*:	d53ccd40 	mrs	x0, ich_lr10_el2
+[^:]*:	d51ccd40 	msr	ich_lr10_el2, x0
+[^:]*:	d53ccd60 	mrs	x0, ich_lr11_el2
+[^:]*:	d51ccd60 	msr	ich_lr11_el2, x0
+[^:]*:	d53ccd80 	mrs	x0, ich_lr12_el2
+[^:]*:	d51ccd80 	msr	ich_lr12_el2, x0
+[^:]*:	d53ccda0 	mrs	x0, ich_lr13_el2
+[^:]*:	d51ccda0 	msr	ich_lr13_el2, x0
+[^:]*:	d53ccdc0 	mrs	x0, ich_lr14_el2
+[^:]*:	d51ccdc0 	msr	ich_lr14_el2, x0
+[^:]*:	d53ccde0 	mrs	x0, ich_lr15_el2
+[^:]*:	d51ccde0 	msr	ich_lr15_el2, x0
+[^:]*:	d53ecce0 	mrs	x0, icc_igrpen1_el3
+[^:]*:	d51ecce0 	msr	icc_igrpen1_el3, x0
 [^:]*:	d538a4e0 	mrs	x0, lorid_el1
 [^:]*:	d5390040 	mrs	x0, ccsidr2_el1
-[^:]*:	d5381222 	mrs	x2, trfcr_el1
-[^:]*:	d5181223 	msr	trfcr_el1, x3
+[^:]*:	d5381220 	mrs	x0, trfcr_el1
+[^:]*:	d5181220 	msr	trfcr_el1, x0
 [^:]*:	d5389ec0 	mrs	x0, pmmir_el1
-[^:]*:	d53c1222 	mrs	x2, trfcr_el2
-[^:]*:	d51c1223 	msr	trfcr_el2, x3
-[^:]*:	d53d1222 	mrs	x2, trfcr_el12
-[^:]*:	d51d1223 	msr	trfcr_el12, x3
-[^:]*:	d53bd202 	mrs	x2, amcr_el0
-[^:]*:	d51bd203 	msr	amcr_el0, x3
+[^:]*:	d53c1220 	mrs	x0, trfcr_el2
+[^:]*:	d51c1220 	msr	trfcr_el2, x0
+[^:]*:	d53d1220 	mrs	x0, trfcr_el12
+[^:]*:	d51d1220 	msr	trfcr_el12, x0
+[^:]*:	d53bd200 	mrs	x0, amcr_el0
+[^:]*:	d51bd200 	msr	amcr_el0, x0
 [^:]*:	d53bd220 	mrs	x0, amcfgr_el0
 [^:]*:	d53bd240 	mrs	x0, amcgcr_el0
-[^:]*:	d53bd262 	mrs	x2, amuserenr_el0
-[^:]*:	d51bd263 	msr	amuserenr_el0, x3
-[^:]*:	d53bd282 	mrs	x2, amcntenclr0_el0
-[^:]*:	d51bd283 	msr	amcntenclr0_el0, x3
-[^:]*:	d53bd2a2 	mrs	x2, amcntenset0_el0
-[^:]*:	d51bd2a3 	msr	amcntenset0_el0, x3
-[^:]*:	d53bd302 	mrs	x2, amcntenclr1_el0
-[^:]*:	d51bd303 	msr	amcntenclr1_el0, x3
-[^:]*:	d53bd322 	mrs	x2, amcntenset1_el0
-[^:]*:	d51bd323 	msr	amcntenset1_el0, x3
-[^:]*:	d53bd402 	mrs	x2, amevcntr00_el0
-[^:]*:	d51bd403 	msr	amevcntr00_el0, x3
-[^:]*:	d53bd422 	mrs	x2, amevcntr01_el0
-[^:]*:	d51bd423 	msr	amevcntr01_el0, x3
-[^:]*:	d53bd442 	mrs	x2, amevcntr02_el0
-[^:]*:	d51bd443 	msr	amevcntr02_el0, x3
-[^:]*:	d53bd462 	mrs	x2, amevcntr03_el0
-[^:]*:	d51bd463 	msr	amevcntr03_el0, x3
+[^:]*:	d53bd260 	mrs	x0, amuserenr_el0
+[^:]*:	d51bd260 	msr	amuserenr_el0, x0
+[^:]*:	d53bd280 	mrs	x0, amcntenclr0_el0
+[^:]*:	d51bd280 	msr	amcntenclr0_el0, x0
+[^:]*:	d53bd2a0 	mrs	x0, amcntenset0_el0
+[^:]*:	d51bd2a0 	msr	amcntenset0_el0, x0
+[^:]*:	d53bd300 	mrs	x0, amcntenclr1_el0
+[^:]*:	d51bd300 	msr	amcntenclr1_el0, x0
+[^:]*:	d53bd320 	mrs	x0, amcntenset1_el0
+[^:]*:	d51bd320 	msr	amcntenset1_el0, x0
+[^:]*:	d53bd400 	mrs	x0, amevcntr00_el0
+[^:]*:	d51bd400 	msr	amevcntr00_el0, x0
+[^:]*:	d53bd420 	mrs	x0, amevcntr01_el0
+[^:]*:	d51bd420 	msr	amevcntr01_el0, x0
+[^:]*:	d53bd440 	mrs	x0, amevcntr02_el0
+[^:]*:	d51bd440 	msr	amevcntr02_el0, x0
+[^:]*:	d53bd460 	mrs	x0, amevcntr03_el0
+[^:]*:	d51bd460 	msr	amevcntr03_el0, x0
 [^:]*:	d53bd600 	mrs	x0, amevtyper00_el0
 [^:]*:	d53bd620 	mrs	x0, amevtyper01_el0
 [^:]*:	d53bd640 	mrs	x0, amevtyper02_el0
 [^:]*:	d53bd660 	mrs	x0, amevtyper03_el0
-[^:]*:	d53bdc02 	mrs	x2, amevcntr10_el0
-[^:]*:	d51bdc03 	msr	amevcntr10_el0, x3
-[^:]*:	d53bdc22 	mrs	x2, amevcntr11_el0
-[^:]*:	d51bdc23 	msr	amevcntr11_el0, x3
-[^:]*:	d53bdc42 	mrs	x2, amevcntr12_el0
-[^:]*:	d51bdc43 	msr	amevcntr12_el0, x3
-[^:]*:	d53bdc62 	mrs	x2, amevcntr13_el0
-[^:]*:	d51bdc63 	msr	amevcntr13_el0, x3
-[^:]*:	d53bdc82 	mrs	x2, amevcntr14_el0
-[^:]*:	d51bdc83 	msr	amevcntr14_el0, x3
-[^:]*:	d53bdca2 	mrs	x2, amevcntr15_el0
-[^:]*:	d51bdca3 	msr	amevcntr15_el0, x3
-[^:]*:	d53bdcc2 	mrs	x2, amevcntr16_el0
-[^:]*:	d51bdcc3 	msr	amevcntr16_el0, x3
-[^:]*:	d53bdce2 	mrs	x2, amevcntr17_el0
-[^:]*:	d51bdce3 	msr	amevcntr17_el0, x3
-[^:]*:	d53bdd02 	mrs	x2, amevcntr18_el0
-[^:]*:	d51bdd03 	msr	amevcntr18_el0, x3
-[^:]*:	d53bdd22 	mrs	x2, amevcntr19_el0
-[^:]*:	d51bdd23 	msr	amevcntr19_el0, x3
-[^:]*:	d53bdd42 	mrs	x2, amevcntr110_el0
-[^:]*:	d51bdd43 	msr	amevcntr110_el0, x3
-[^:]*:	d53bdd62 	mrs	x2, amevcntr111_el0
-[^:]*:	d51bdd63 	msr	amevcntr111_el0, x3
-[^:]*:	d53bdd82 	mrs	x2, amevcntr112_el0
-[^:]*:	d51bdd83 	msr	amevcntr112_el0, x3
-[^:]*:	d53bdda2 	mrs	x2, amevcntr113_el0
-[^:]*:	d51bdda3 	msr	amevcntr113_el0, x3
-[^:]*:	d53bddc2 	mrs	x2, amevcntr114_el0
-[^:]*:	d51bddc3 	msr	amevcntr114_el0, x3
-[^:]*:	d53bdde2 	mrs	x2, amevcntr115_el0
-[^:]*:	d51bdde3 	msr	amevcntr115_el0, x3
-[^:]*:	d53bde02 	mrs	x2, amevtyper10_el0
-[^:]*:	d51bde03 	msr	amevtyper10_el0, x3
-[^:]*:	d53bde22 	mrs	x2, amevtyper11_el0
-[^:]*:	d51bde23 	msr	amevtyper11_el0, x3
-[^:]*:	d53bde42 	mrs	x2, amevtyper12_el0
-[^:]*:	d51bde43 	msr	amevtyper12_el0, x3
-[^:]*:	d53bde62 	mrs	x2, amevtyper13_el0
-[^:]*:	d51bde63 	msr	amevtyper13_el0, x3
-[^:]*:	d53bde82 	mrs	x2, amevtyper14_el0
-[^:]*:	d51bde83 	msr	amevtyper14_el0, x3
-[^:]*:	d53bdea2 	mrs	x2, amevtyper15_el0
-[^:]*:	d51bdea3 	msr	amevtyper15_el0, x3
-[^:]*:	d53bdec2 	mrs	x2, amevtyper16_el0
-[^:]*:	d51bdec3 	msr	amevtyper16_el0, x3
-[^:]*:	d53bdee2 	mrs	x2, amevtyper17_el0
-[^:]*:	d51bdee3 	msr	amevtyper17_el0, x3
-[^:]*:	d53bdf02 	mrs	x2, amevtyper18_el0
-[^:]*:	d51bdf03 	msr	amevtyper18_el0, x3
-[^:]*:	d53bdf22 	mrs	x2, amevtyper19_el0
-[^:]*:	d51bdf23 	msr	amevtyper19_el0, x3
-[^:]*:	d53bdf42 	mrs	x2, amevtyper110_el0
-[^:]*:	d51bdf43 	msr	amevtyper110_el0, x3
-[^:]*:	d53bdf62 	mrs	x2, amevtyper111_el0
-[^:]*:	d51bdf63 	msr	amevtyper111_el0, x3
-[^:]*:	d53bdf82 	mrs	x2, amevtyper112_el0
-[^:]*:	d51bdf83 	msr	amevtyper112_el0, x3
-[^:]*:	d53bdfa2 	mrs	x2, amevtyper113_el0
-[^:]*:	d51bdfa3 	msr	amevtyper113_el0, x3
-[^:]*:	d53bdfc2 	mrs	x2, amevtyper114_el0
-[^:]*:	d51bdfc3 	msr	amevtyper114_el0, x3
-[^:]*:	d53bdfe2 	mrs	x2, amevtyper115_el0
-[^:]*:	d51bdfe3 	msr	amevtyper115_el0, x3
+[^:]*:	d53bdc00 	mrs	x0, amevcntr10_el0
+[^:]*:	d51bdc00 	msr	amevcntr10_el0, x0
+[^:]*:	d53bdc20 	mrs	x0, amevcntr11_el0
+[^:]*:	d51bdc20 	msr	amevcntr11_el0, x0
+[^:]*:	d53bdc40 	mrs	x0, amevcntr12_el0
+[^:]*:	d51bdc40 	msr	amevcntr12_el0, x0
+[^:]*:	d53bdc60 	mrs	x0, amevcntr13_el0
+[^:]*:	d51bdc60 	msr	amevcntr13_el0, x0
+[^:]*:	d53bdc80 	mrs	x0, amevcntr14_el0
+[^:]*:	d51bdc80 	msr	amevcntr14_el0, x0
+[^:]*:	d53bdca0 	mrs	x0, amevcntr15_el0
+[^:]*:	d51bdca0 	msr	amevcntr15_el0, x0
+[^:]*:	d53bdcc0 	mrs	x0, amevcntr16_el0
+[^:]*:	d51bdcc0 	msr	amevcntr16_el0, x0
+[^:]*:	d53bdce0 	mrs	x0, amevcntr17_el0
+[^:]*:	d51bdce0 	msr	amevcntr17_el0, x0
+[^:]*:	d53bdd00 	mrs	x0, amevcntr18_el0
+[^:]*:	d51bdd00 	msr	amevcntr18_el0, x0
+[^:]*:	d53bdd20 	mrs	x0, amevcntr19_el0
+[^:]*:	d51bdd20 	msr	amevcntr19_el0, x0
+[^:]*:	d53bdd40 	mrs	x0, amevcntr110_el0
+[^:]*:	d51bdd40 	msr	amevcntr110_el0, x0
+[^:]*:	d53bdd60 	mrs	x0, amevcntr111_el0
+[^:]*:	d51bdd60 	msr	amevcntr111_el0, x0
+[^:]*:	d53bdd80 	mrs	x0, amevcntr112_el0
+[^:]*:	d51bdd80 	msr	amevcntr112_el0, x0
+[^:]*:	d53bdda0 	mrs	x0, amevcntr113_el0
+[^:]*:	d51bdda0 	msr	amevcntr113_el0, x0
+[^:]*:	d53bddc0 	mrs	x0, amevcntr114_el0
+[^:]*:	d51bddc0 	msr	amevcntr114_el0, x0
+[^:]*:	d53bdde0 	mrs	x0, amevcntr115_el0
+[^:]*:	d51bdde0 	msr	amevcntr115_el0, x0
+[^:]*:	d53bde00 	mrs	x0, amevtyper10_el0
+[^:]*:	d51bde00 	msr	amevtyper10_el0, x0
+[^:]*:	d53bde20 	mrs	x0, amevtyper11_el0
+[^:]*:	d51bde20 	msr	amevtyper11_el0, x0
+[^:]*:	d53bde40 	mrs	x0, amevtyper12_el0
+[^:]*:	d51bde40 	msr	amevtyper12_el0, x0
+[^:]*:	d53bde60 	mrs	x0, amevtyper13_el0
+[^:]*:	d51bde60 	msr	amevtyper13_el0, x0
+[^:]*:	d53bde80 	mrs	x0, amevtyper14_el0
+[^:]*:	d51bde80 	msr	amevtyper14_el0, x0
+[^:]*:	d53bdea0 	mrs	x0, amevtyper15_el0
+[^:]*:	d51bdea0 	msr	amevtyper15_el0, x0
+[^:]*:	d53bdec0 	mrs	x0, amevtyper16_el0
+[^:]*:	d51bdec0 	msr	amevtyper16_el0, x0
+[^:]*:	d53bdee0 	mrs	x0, amevtyper17_el0
+[^:]*:	d51bdee0 	msr	amevtyper17_el0, x0
+[^:]*:	d53bdf00 	mrs	x0, amevtyper18_el0
+[^:]*:	d51bdf00 	msr	amevtyper18_el0, x0
+[^:]*:	d53bdf20 	mrs	x0, amevtyper19_el0
+[^:]*:	d51bdf20 	msr	amevtyper19_el0, x0
+[^:]*:	d53bdf40 	mrs	x0, amevtyper110_el0
+[^:]*:	d51bdf40 	msr	amevtyper110_el0, x0
+[^:]*:	d53bdf60 	mrs	x0, amevtyper111_el0
+[^:]*:	d51bdf60 	msr	amevtyper111_el0, x0
+[^:]*:	d53bdf80 	mrs	x0, amevtyper112_el0
+[^:]*:	d51bdf80 	msr	amevtyper112_el0, x0
+[^:]*:	d53bdfa0 	mrs	x0, amevtyper113_el0
+[^:]*:	d51bdfa0 	msr	amevtyper113_el0, x0
+[^:]*:	d53bdfc0 	mrs	x0, amevtyper114_el0
+[^:]*:	d51bdfc0 	msr	amevtyper114_el0, x0
+[^:]*:	d53bdfe0 	mrs	x0, amevtyper115_el0
+[^:]*:	d51bdfe0 	msr	amevtyper115_el0, x0
 [^:]*:	d53bd2c0 	mrs	x0, amcg1idr_el0
 [^:]*:	d53be0a0 	mrs	x0, cntpctss_el0
 [^:]*:	d53be0c0 	mrs	x0, cntvctss_el0
-[^:]*:	d53c1182 	mrs	x2, hfgrtr_el2
-[^:]*:	d51c1183 	msr	hfgrtr_el2, x3
-[^:]*:	d53c11a2 	mrs	x2, hfgwtr_el2
-[^:]*:	d51c11a3 	msr	hfgwtr_el2, x3
-[^:]*:	d53c11c2 	mrs	x2, hfgitr_el2
-[^:]*:	d51c11c3 	msr	hfgitr_el2, x3
-[^:]*:	d53c3182 	mrs	x2, hdfgrtr_el2
-[^:]*:	d51c3183 	msr	hdfgrtr_el2, x3
-[^:]*:	d53c31a2 	mrs	x2, hdfgwtr_el2
-[^:]*:	d51c31a3 	msr	hdfgwtr_el2, x3
-[^:]*:	d53c31c2 	mrs	x2, hafgrtr_el2
-[^:]*:	d51c31c3 	msr	hafgrtr_el2, x3
-[^:]*:	d53cd802 	mrs	x2, amevcntvoff00_el2
-[^:]*:	d51cd803 	msr	amevcntvoff00_el2, x3
-[^:]*:	d53cd822 	mrs	x2, amevcntvoff01_el2
-[^:]*:	d51cd823 	msr	amevcntvoff01_el2, x3
-[^:]*:	d53cd842 	mrs	x2, amevcntvoff02_el2
-[^:]*:	d51cd843 	msr	amevcntvoff02_el2, x3
-[^:]*:	d53cd862 	mrs	x2, amevcntvoff03_el2
-[^:]*:	d51cd863 	msr	amevcntvoff03_el2, x3
-[^:]*:	d53cd882 	mrs	x2, amevcntvoff04_el2
-[^:]*:	d51cd883 	msr	amevcntvoff04_el2, x3
-[^:]*:	d53cd8a2 	mrs	x2, amevcntvoff05_el2
-[^:]*:	d51cd8a3 	msr	amevcntvoff05_el2, x3
-[^:]*:	d53cd8c2 	mrs	x2, amevcntvoff06_el2
-[^:]*:	d51cd8c3 	msr	amevcntvoff06_el2, x3
-[^:]*:	d53cd8e2 	mrs	x2, amevcntvoff07_el2
-[^:]*:	d51cd8e3 	msr	amevcntvoff07_el2, x3
-[^:]*:	d53cd902 	mrs	x2, amevcntvoff08_el2
-[^:]*:	d51cd903 	msr	amevcntvoff08_el2, x3
-[^:]*:	d53cd922 	mrs	x2, amevcntvoff09_el2
-[^:]*:	d51cd923 	msr	amevcntvoff09_el2, x3
-[^:]*:	d53cd942 	mrs	x2, amevcntvoff010_el2
-[^:]*:	d51cd943 	msr	amevcntvoff010_el2, x3
-[^:]*:	d53cd962 	mrs	x2, amevcntvoff011_el2
-[^:]*:	d51cd963 	msr	amevcntvoff011_el2, x3
-[^:]*:	d53cd982 	mrs	x2, amevcntvoff012_el2
-[^:]*:	d51cd983 	msr	amevcntvoff012_el2, x3
-[^:]*:	d53cd9a2 	mrs	x2, amevcntvoff013_el2
-[^:]*:	d51cd9a3 	msr	amevcntvoff013_el2, x3
-[^:]*:	d53cd9c2 	mrs	x2, amevcntvoff014_el2
-[^:]*:	d51cd9c3 	msr	amevcntvoff014_el2, x3
-[^:]*:	d53cd9e2 	mrs	x2, amevcntvoff015_el2
-[^:]*:	d51cd9e3 	msr	amevcntvoff015_el2, x3
-[^:]*:	d53cda02 	mrs	x2, amevcntvoff10_el2
-[^:]*:	d51cda03 	msr	amevcntvoff10_el2, x3
-[^:]*:	d53cda22 	mrs	x2, amevcntvoff11_el2
-[^:]*:	d51cda23 	msr	amevcntvoff11_el2, x3
-[^:]*:	d53cda42 	mrs	x2, amevcntvoff12_el2
-[^:]*:	d51cda43 	msr	amevcntvoff12_el2, x3
-[^:]*:	d53cda62 	mrs	x2, amevcntvoff13_el2
-[^:]*:	d51cda63 	msr	amevcntvoff13_el2, x3
-[^:]*:	d53cda82 	mrs	x2, amevcntvoff14_el2
-[^:]*:	d51cda83 	msr	amevcntvoff14_el2, x3
-[^:]*:	d53cdaa2 	mrs	x2, amevcntvoff15_el2
-[^:]*:	d51cdaa3 	msr	amevcntvoff15_el2, x3
-[^:]*:	d53cdac2 	mrs	x2, amevcntvoff16_el2
-[^:]*:	d51cdac3 	msr	amevcntvoff16_el2, x3
-[^:]*:	d53cdae2 	mrs	x2, amevcntvoff17_el2
-[^:]*:	d51cdae3 	msr	amevcntvoff17_el2, x3
-[^:]*:	d53cdb02 	mrs	x2, amevcntvoff18_el2
-[^:]*:	d51cdb03 	msr	amevcntvoff18_el2, x3
-[^:]*:	d53cdb22 	mrs	x2, amevcntvoff19_el2
-[^:]*:	d51cdb23 	msr	amevcntvoff19_el2, x3
-[^:]*:	d53cdb42 	mrs	x2, amevcntvoff110_el2
-[^:]*:	d51cdb43 	msr	amevcntvoff110_el2, x3
-[^:]*:	d53cdb62 	mrs	x2, amevcntvoff111_el2
-[^:]*:	d51cdb63 	msr	amevcntvoff111_el2, x3
-[^:]*:	d53cdb82 	mrs	x2, amevcntvoff112_el2
-[^:]*:	d51cdb83 	msr	amevcntvoff112_el2, x3
-[^:]*:	d53cdba2 	mrs	x2, amevcntvoff113_el2
-[^:]*:	d51cdba3 	msr	amevcntvoff113_el2, x3
-[^:]*:	d53cdbc2 	mrs	x2, amevcntvoff114_el2
-[^:]*:	d51cdbc3 	msr	amevcntvoff114_el2, x3
-[^:]*:	d53cdbe2 	mrs	x2, amevcntvoff115_el2
-[^:]*:	d51cdbe3 	msr	amevcntvoff115_el2, x3
-[^:]*:	d53ce0c2 	mrs	x2, cntpoff_el2
-[^:]*:	d51ce0c3 	msr	cntpoff_el2, x3
-[^:]*:	d5389922 	mrs	x2, pmsnevfr_el1
-[^:]*:	d5189923 	msr	pmsnevfr_el1, x3
-[^:]*:	d53c1242 	mrs	x2, hcrx_el2
-[^:]*:	d51c1243 	msr	hcrx_el2, x3
-[^:]*:	d538d0c2 	mrs	x2, rcwmask_el1
-[^:]*:	d518d0c3 	msr	rcwmask_el1, x3
-[^:]*:	d538d062 	mrs	x2, rcwsmask_el1
-[^:]*:	d518d063 	msr	rcwsmask_el1, x3
+[^:]*:	d53c1180 	mrs	x0, hfgrtr_el2
+[^:]*:	d51c1180 	msr	hfgrtr_el2, x0
+[^:]*:	d53c11a0 	mrs	x0, hfgwtr_el2
+[^:]*:	d51c11a0 	msr	hfgwtr_el2, x0
+[^:]*:	d53c11c0 	mrs	x0, hfgitr_el2
+[^:]*:	d51c11c0 	msr	hfgitr_el2, x0
+[^:]*:	d53c3180 	mrs	x0, hdfgrtr_el2
+[^:]*:	d51c3180 	msr	hdfgrtr_el2, x0
+[^:]*:	d53c31a0 	mrs	x0, hdfgwtr_el2
+[^:]*:	d51c31a0 	msr	hdfgwtr_el2, x0
+[^:]*:	d53c31c0 	mrs	x0, hafgrtr_el2
+[^:]*:	d51c31c0 	msr	hafgrtr_el2, x0
+[^:]*:	d53cd800 	mrs	x0, amevcntvoff00_el2
+[^:]*:	d51cd800 	msr	amevcntvoff00_el2, x0
+[^:]*:	d53cd820 	mrs	x0, amevcntvoff01_el2
+[^:]*:	d51cd820 	msr	amevcntvoff01_el2, x0
+[^:]*:	d53cd840 	mrs	x0, amevcntvoff02_el2
+[^:]*:	d51cd840 	msr	amevcntvoff02_el2, x0
+[^:]*:	d53cd860 	mrs	x0, amevcntvoff03_el2
+[^:]*:	d51cd860 	msr	amevcntvoff03_el2, x0
+[^:]*:	d53cd880 	mrs	x0, amevcntvoff04_el2
+[^:]*:	d51cd880 	msr	amevcntvoff04_el2, x0
+[^:]*:	d53cd8a0 	mrs	x0, amevcntvoff05_el2
+[^:]*:	d51cd8a0 	msr	amevcntvoff05_el2, x0
+[^:]*:	d53cd8c0 	mrs	x0, amevcntvoff06_el2
+[^:]*:	d51cd8c0 	msr	amevcntvoff06_el2, x0
+[^:]*:	d53cd8e0 	mrs	x0, amevcntvoff07_el2
+[^:]*:	d51cd8e0 	msr	amevcntvoff07_el2, x0
+[^:]*:	d53cd900 	mrs	x0, amevcntvoff08_el2
+[^:]*:	d51cd900 	msr	amevcntvoff08_el2, x0
+[^:]*:	d53cd920 	mrs	x0, amevcntvoff09_el2
+[^:]*:	d51cd920 	msr	amevcntvoff09_el2, x0
+[^:]*:	d53cd940 	mrs	x0, amevcntvoff010_el2
+[^:]*:	d51cd940 	msr	amevcntvoff010_el2, x0
+[^:]*:	d53cd960 	mrs	x0, amevcntvoff011_el2
+[^:]*:	d51cd960 	msr	amevcntvoff011_el2, x0
+[^:]*:	d53cd980 	mrs	x0, amevcntvoff012_el2
+[^:]*:	d51cd980 	msr	amevcntvoff012_el2, x0
+[^:]*:	d53cd9a0 	mrs	x0, amevcntvoff013_el2
+[^:]*:	d51cd9a0 	msr	amevcntvoff013_el2, x0
+[^:]*:	d53cd9c0 	mrs	x0, amevcntvoff014_el2
+[^:]*:	d51cd9c0 	msr	amevcntvoff014_el2, x0
+[^:]*:	d53cd9e0 	mrs	x0, amevcntvoff015_el2
+[^:]*:	d51cd9e0 	msr	amevcntvoff015_el2, x0
+[^:]*:	d53cda00 	mrs	x0, amevcntvoff10_el2
+[^:]*:	d51cda00 	msr	amevcntvoff10_el2, x0
+[^:]*:	d53cda20 	mrs	x0, amevcntvoff11_el2
+[^:]*:	d51cda20 	msr	amevcntvoff11_el2, x0
+[^:]*:	d53cda40 	mrs	x0, amevcntvoff12_el2
+[^:]*:	d51cda40 	msr	amevcntvoff12_el2, x0
+[^:]*:	d53cda60 	mrs	x0, amevcntvoff13_el2
+[^:]*:	d51cda60 	msr	amevcntvoff13_el2, x0
+[^:]*:	d53cda80 	mrs	x0, amevcntvoff14_el2
+[^:]*:	d51cda80 	msr	amevcntvoff14_el2, x0
+[^:]*:	d53cdaa0 	mrs	x0, amevcntvoff15_el2
+[^:]*:	d51cdaa0 	msr	amevcntvoff15_el2, x0
+[^:]*:	d53cdac0 	mrs	x0, amevcntvoff16_el2
+[^:]*:	d51cdac0 	msr	amevcntvoff16_el2, x0
+[^:]*:	d53cdae0 	mrs	x0, amevcntvoff17_el2
+[^:]*:	d51cdae0 	msr	amevcntvoff17_el2, x0
+[^:]*:	d53cdb00 	mrs	x0, amevcntvoff18_el2
+[^:]*:	d51cdb00 	msr	amevcntvoff18_el2, x0
+[^:]*:	d53cdb20 	mrs	x0, amevcntvoff19_el2
+[^:]*:	d51cdb20 	msr	amevcntvoff19_el2, x0
+[^:]*:	d53cdb40 	mrs	x0, amevcntvoff110_el2
+[^:]*:	d51cdb40 	msr	amevcntvoff110_el2, x0
+[^:]*:	d53cdb60 	mrs	x0, amevcntvoff111_el2
+[^:]*:	d51cdb60 	msr	amevcntvoff111_el2, x0
+[^:]*:	d53cdb80 	mrs	x0, amevcntvoff112_el2
+[^:]*:	d51cdb80 	msr	amevcntvoff112_el2, x0
+[^:]*:	d53cdba0 	mrs	x0, amevcntvoff113_el2
+[^:]*:	d51cdba0 	msr	amevcntvoff113_el2, x0
+[^:]*:	d53cdbc0 	mrs	x0, amevcntvoff114_el2
+[^:]*:	d51cdbc0 	msr	amevcntvoff114_el2, x0
+[^:]*:	d53cdbe0 	mrs	x0, amevcntvoff115_el2
+[^:]*:	d51cdbe0 	msr	amevcntvoff115_el2, x0
+[^:]*:	d53ce0c0 	mrs	x0, cntpoff_el2
+[^:]*:	d51ce0c0 	msr	cntpoff_el2, x0
+[^:]*:	d5389920 	mrs	x0, pmsnevfr_el1
+[^:]*:	d5189920 	msr	pmsnevfr_el1, x0
+[^:]*:	d53c1240 	mrs	x0, hcrx_el2
+[^:]*:	d51c1240 	msr	hcrx_el2, x0
+[^:]*:	d538d0c0 	mrs	x0, rcwmask_el1
+[^:]*:	d518d0c0 	msr	rcwmask_el1, x0
+[^:]*:	d538d060 	mrs	x0, rcwsmask_el1
+[^:]*:	d518d060 	msr	rcwsmask_el1, x0
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
index 21daa8c8c65..bf555d23b82 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
@@ -3,12 +3,12 @@
 	.endm
 
 	.macro	woreg, name
-	msr	\name, x1
+	msr	\name, x0
 	.endm
 
 	.macro	rwreg, name
-	mrs	x2, \name
-	msr	\name, x3
+	mrs	x0, \name
+	msr	\name, x0
 	.endm
 
 	roreg	id_dfr1_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
index 8c9f7ca14d1..cb895c64503 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
@@ -7,22 +7,22 @@ Disassembly of section \.text:
 
 0+ <\.text>:
 [^:]*:	d5787402 	mrrs	x2, x3, par_el1
-[^:]*:	d5587404 	msrr	par_el1, x4, x5
+[^:]*:	d5587402 	msrr	par_el1, x2, x3
 [^:]*:	d578d0c2 	mrrs	x2, x3, rcwmask_el1
-[^:]*:	d558d0c4 	msrr	rcwmask_el1, x4, x5
+[^:]*:	d558d0c2 	msrr	rcwmask_el1, x2, x3
 [^:]*:	d578d062 	mrrs	x2, x3, rcwsmask_el1
-[^:]*:	d558d064 	msrr	rcwsmask_el1, x4, x5
+[^:]*:	d558d062 	msrr	rcwsmask_el1, x2, x3
 [^:]*:	d5782002 	mrrs	x2, x3, ttbr0_el1
-[^:]*:	d5582004 	msrr	ttbr0_el1, x4, x5
+[^:]*:	d5582002 	msrr	ttbr0_el1, x2, x3
 [^:]*:	d57d2002 	mrrs	x2, x3, ttbr0_el12
-[^:]*:	d55d2004 	msrr	ttbr0_el12, x4, x5
+[^:]*:	d55d2002 	msrr	ttbr0_el12, x2, x3
 [^:]*:	d57c2002 	mrrs	x2, x3, ttbr0_el2
-[^:]*:	d55c2004 	msrr	ttbr0_el2, x4, x5
+[^:]*:	d55c2002 	msrr	ttbr0_el2, x2, x3
 [^:]*:	d5782022 	mrrs	x2, x3, ttbr1_el1
-[^:]*:	d5582024 	msrr	ttbr1_el1, x4, x5
+[^:]*:	d5582022 	msrr	ttbr1_el1, x2, x3
 [^:]*:	d57d2022 	mrrs	x2, x3, ttbr1_el12
-[^:]*:	d55d2024 	msrr	ttbr1_el12, x4, x5
+[^:]*:	d55d2022 	msrr	ttbr1_el12, x2, x3
 [^:]*:	d57c2022 	mrrs	x2, x3, ttbr1_el2
-[^:]*:	d55c2024 	msrr	ttbr1_el2, x4, x5
+[^:]*:	d55c2022 	msrr	ttbr1_el2, x2, x3
 [^:]*:	d57c2102 	mrrs	x2, x3, vttbr_el2
-[^:]*:	d55c2104 	msrr	vttbr_el2, x4, x5
\ No newline at end of file
+[^:]*:	d55c2102 	msrr	vttbr_el2, x2, x3
\ No newline at end of file
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.s b/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
index 4093315973d..09c9dace9b5 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
@@ -2,7 +2,7 @@
 
 	.macro	rwreg128, name
 	mrrs	x2, x3, \name
-	msrr	\name, x4, x5
+	msrr	\name, x2, x3
 	.endm
 
 	rwreg128	par_el1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v1 3/4] aarch64: testsuite: reorder write and read to match macro order
  2024-02-27 10:59 [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 1/4] aarch64: testsuite: replace instruction addresses by regex Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 2/4] aarch64: testsuite: use same regs for read and write tests Matthieu Longo
@ 2024-02-27 10:59 ` Matthieu Longo
  2024-02-27 10:59 ` [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them Matthieu Longo
  2024-04-24 10:48 ` [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
  4 siblings, 0 replies; 9+ messages in thread
From: Matthieu Longo @ 2024-02-27 10:59 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, Nick Clifton, Matthieu Longo

[-- Attachment #1: Type: text/plain, Size: 868 bytes --]


This patch aims at grouping write and read for a same system register
one after another so that the diff for the macro replacement does not
generate too much noise.
---
 .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    |  56 ++--
 .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |  88 +++---
 .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    |  90 +++---
 gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |  16 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  20 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   | 258 +++++++++---------
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   |   2 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg.d     |  10 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  14 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  22 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |   2 +-
 11 files changed, 286 insertions(+), 292 deletions(-)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v1-0003-aarch64-testsuite-reorder-write-and-read-to-match.patch --]
[-- Type: text/x-patch; name="v1-0003-aarch64-testsuite-reorder-write-and-read-to-match.patch", Size: 41540 bytes --]

diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
index 02d9cac392c..d98c2ed573a 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
@@ -3,79 +3,79 @@
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
 .*: Error: selected processor does not support system register name 'erxgsr_el1'
 .*: Error: selected processor does not support system register name 'sctlr2_el1'
-.*: Error: selected processor does not support system register name 'sctlr2_el12'
-.*: Error: selected processor does not support system register name 'sctlr2_el2'
-.*: Error: selected processor does not support system register name 'sctlr2_el3'
 .*: Error: selected processor does not support system register name 'sctlr2_el1'
 .*: Error: selected processor does not support system register name 'sctlr2_el12'
+.*: Error: selected processor does not support system register name 'sctlr2_el12'
 .*: Error: selected processor does not support system register name 'sctlr2_el2'
+.*: Error: selected processor does not support system register name 'sctlr2_el2'
+.*: Error: selected processor does not support system register name 'sctlr2_el3'
 .*: Error: selected processor does not support system register name 'sctlr2_el3'
 .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
-.*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
-.*: Error: selected processor does not support system register name 'hfgrtr2_el2'
-.*: Error: selected processor does not support system register name 'hfgwtr2_el2'
 .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
 .*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'hfgrtr2_el2'
 .*: Error: selected processor does not support system register name 'hfgrtr2_el2'
 .*: Error: selected processor does not support system register name 'hfgwtr2_el2'
+.*: Error: selected processor does not support system register name 'hfgwtr2_el2'
 .*: Error: selected processor does not support system register name 'pfar_el1'
-.*: Error: selected processor does not support system register name 'pfar_el2'
-.*: Error: selected processor does not support system register name 'pfar_el12'
 .*: Error: selected processor does not support system register name 'pfar_el1'
 .*: Error: selected processor does not support system register name 'pfar_el2'
+.*: Error: selected processor does not support system register name 'pfar_el2'
+.*: Error: selected processor does not support system register name 'pfar_el12'
 .*: Error: selected processor does not support system register name 'pfar_el12'
 .*: Error: selected processor does not support system register name 's1e1a'
 .*: Error: selected processor does not support system register name 's1e2a'
 .*: Error: selected processor does not support system register name 's1e3a'
 .*: Error: selected processor does not support system register name 'amair2_el1'
-.*: Error: selected processor does not support system register name 'amair2_el12'
-.*: Error: selected processor does not support system register name 'amair2_el2'
-.*: Error: selected processor does not support system register name 'amair2_el3'
-.*: Error: selected processor does not support system register name 'mair2_el1'
-.*: Error: selected processor does not support system register name 'mair2_el12'
-.*: Error: selected processor does not support system register name 'mair2_el2'
-.*: Error: selected processor does not support system register name 'mair2_el3'
 .*: Error: selected processor does not support system register name 'amair2_el1'
 .*: Error: selected processor does not support system register name 'amair2_el12'
+.*: Error: selected processor does not support system register name 'amair2_el12'
+.*: Error: selected processor does not support system register name 'amair2_el2'
 .*: Error: selected processor does not support system register name 'amair2_el2'
 .*: Error: selected processor does not support system register name 'amair2_el3'
+.*: Error: selected processor does not support system register name 'amair2_el3'
+.*: Error: selected processor does not support system register name 'mair2_el1'
 .*: Error: selected processor does not support system register name 'mair2_el1'
 .*: Error: selected processor does not support system register name 'mair2_el12'
+.*: Error: selected processor does not support system register name 'mair2_el12'
 .*: Error: selected processor does not support system register name 'mair2_el2'
+.*: Error: selected processor does not support system register name 'mair2_el2'
+.*: Error: selected processor does not support system register name 'mair2_el3'
 .*: Error: selected processor does not support system register name 'mair2_el3'
 .*: Error: selected processor does not support system register name 'pir_el1'
-.*: Error: selected processor does not support system register name 'pir_el12'
-.*: Error: selected processor does not support system register name 'pir_el2'
-.*: Error: selected processor does not support system register name 'pir_el3'
-.*: Error: selected processor does not support system register name 'pire0_el1'
-.*: Error: selected processor does not support system register name 'pire0_el12'
-.*: Error: selected processor does not support system register name 'pire0_el2'
 .*: Error: selected processor does not support system register name 'pir_el1'
 .*: Error: selected processor does not support system register name 'pir_el12'
+.*: Error: selected processor does not support system register name 'pir_el12'
 .*: Error: selected processor does not support system register name 'pir_el2'
+.*: Error: selected processor does not support system register name 'pir_el2'
+.*: Error: selected processor does not support system register name 'pir_el3'
 .*: Error: selected processor does not support system register name 'pir_el3'
 .*: Error: selected processor does not support system register name 'pire0_el1'
+.*: Error: selected processor does not support system register name 'pire0_el1'
+.*: Error: selected processor does not support system register name 'pire0_el12'
 .*: Error: selected processor does not support system register name 'pire0_el12'
 .*: Error: selected processor does not support system register name 'pire0_el2'
+.*: Error: selected processor does not support system register name 'pire0_el2'
 .*: Error: selected processor does not support system register name 's2pir_el2'
 .*: Error: selected processor does not support system register name 's2pir_el2'
 .*: Error: selected processor does not support system register name 'por_el0'
-.*: Error: selected processor does not support system register name 'por_el1'
-.*: Error: selected processor does not support system register name 'por_el12'
-.*: Error: selected processor does not support system register name 'por_el2'
-.*: Error: selected processor does not support system register name 'por_el3'
 .*: Error: selected processor does not support system register name 'por_el0'
 .*: Error: selected processor does not support system register name 'por_el1'
+.*: Error: selected processor does not support system register name 'por_el1'
+.*: Error: selected processor does not support system register name 'por_el12'
 .*: Error: selected processor does not support system register name 'por_el12'
 .*: Error: selected processor does not support system register name 'por_el2'
+.*: Error: selected processor does not support system register name 'por_el2'
+.*: Error: selected processor does not support system register name 'por_el3'
 .*: Error: selected processor does not support system register name 'por_el3'
 .*: Error: selected processor does not support system register name 's2por_el1'
 .*: Error: selected processor does not support system register name 's2por_el1'
 .*: Error: selected processor does not support system register name 'tcr2_el1'
-.*: Error: selected processor does not support system register name 'tcr2_el12'
-.*: Error: selected processor does not support system register name 'tcr2_el2'
 .*: Error: selected processor does not support system register name 'tcr2_el1'
 .*: Error: selected processor does not support system register name 'tcr2_el12'
+.*: Error: selected processor does not support system register name 'tcr2_el12'
+.*: Error: selected processor does not support system register name 'tcr2_el2'
 .*: Error: selected processor does not support system register name 'tcr2_el2'
 .*: Error: selected processor does not support system register name 'mdselr_el1'
 .*: Error: selected processor does not support system register name 'mdselr_el1'
@@ -123,4 +123,4 @@
 .*: Error: selected processor does not support system register name 'pmecr_el1'
 .*: Error: selected processor does not support system register name 'pmecr_el1'
 .*: Error: selected processor does not support system register name 'pmiar_el1'
-.*: Error: selected processor does not support system register name 'pmiar_el1'
+.*: Error: selected processor does not support system register name 'pmiar_el1'
\ No newline at end of file
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
index dc1e8bc1fa8..ac32b80b40c 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
@@ -6,92 +6,92 @@
 Disassembly of section \.text:
 
 0+ <.*>:
-.*:	d53c9a83 	mrs	x3, pmsdsfr_el1
 .*:	d51c9a83 	msr	pmsdsfr_el1, x3
+.*:	d53c9a83 	mrs	x3, pmsdsfr_el1
 .*:	d5385340 	mrs	x0, erxgsr_el1
 .*:	d5181063 	msr	sctlr2_el1, x3
-.*:	d51d1063 	msr	sctlr2_el12, x3
-.*:	d51c1063 	msr	sctlr2_el2, x3
-.*:	d51e1063 	msr	sctlr2_el3, x3
 .*:	d5381063 	mrs	x3, sctlr2_el1
+.*:	d51d1063 	msr	sctlr2_el12, x3
 .*:	d53d1063 	mrs	x3, sctlr2_el12
+.*:	d51c1063 	msr	sctlr2_el2, x3
 .*:	d53c1063 	mrs	x3, sctlr2_el2
+.*:	d51e1063 	msr	sctlr2_el3, x3
 .*:	d53e1063 	mrs	x3, sctlr2_el3
-.*:	d53c3103 	mrs	x3, hdfgrtr2_el2
-.*:	d53c3123 	mrs	x3, hdfgwtr2_el2
-.*:	d53c3143 	mrs	x3, hfgrtr2_el2
-.*:	d53c3163 	mrs	x3, hfgwtr2_el2
 .*:	d51c3103 	msr	hdfgrtr2_el2, x3
+.*:	d53c3103 	mrs	x3, hdfgrtr2_el2
 .*:	d51c3123 	msr	hdfgwtr2_el2, x3
+.*:	d53c3123 	mrs	x3, hdfgwtr2_el2
 .*:	d51c3143 	msr	hfgrtr2_el2, x3
+.*:	d53c3143 	mrs	x3, hfgrtr2_el2
 .*:	d51c3163 	msr	hfgwtr2_el2, x3
-.*:	d53860a0 	mrs	x0, pfar_el1
-.*:	d53c60a0 	mrs	x0, pfar_el2
-.*:	d53d60a0 	mrs	x0, pfar_el12
+.*:	d53c3163 	mrs	x3, hfgwtr2_el2
 .*:	d51860a0 	msr	pfar_el1, x0
+.*:	d53860a0 	mrs	x0, pfar_el1
 .*:	d51c60a0 	msr	pfar_el2, x0
+.*:	d53c60a0 	mrs	x0, pfar_el2
 .*:	d51d60a0 	msr	pfar_el12, x0
+.*:	d53d60a0 	mrs	x0, pfar_el12
 .*:	d5087941 	at	s1e1a, x1
 .*:	d50c7943 	at	s1e2a, x3
 .*:	d50e7945 	at	s1e3a, x5
-.*:	d538a320 	mrs	x0, amair2_el1
-.*:	d53da320 	mrs	x0, amair2_el12
-.*:	d53ca320 	mrs	x0, amair2_el2
-.*:	d53ea320 	mrs	x0, amair2_el3
-.*:	d538a220 	mrs	x0, mair2_el1
-.*:	d53da220 	mrs	x0, mair2_el12
-.*:	d53ca120 	mrs	x0, mair2_el2
-.*:	d53ea120 	mrs	x0, mair2_el3
 .*:	d518a320 	msr	amair2_el1, x0
+.*:	d538a320 	mrs	x0, amair2_el1
 .*:	d51da320 	msr	amair2_el12, x0
+.*:	d53da320 	mrs	x0, amair2_el12
 .*:	d51ca320 	msr	amair2_el2, x0
+.*:	d53ca320 	mrs	x0, amair2_el2
 .*:	d51ea320 	msr	amair2_el3, x0
+.*:	d53ea320 	mrs	x0, amair2_el3
 .*:	d518a220 	msr	mair2_el1, x0
+.*:	d538a220 	mrs	x0, mair2_el1
 .*:	d51da220 	msr	mair2_el12, x0
+.*:	d53da220 	mrs	x0, mair2_el12
 .*:	d51ca120 	msr	mair2_el2, x0
+.*:	d53ca120 	mrs	x0, mair2_el2
 .*:	d51ea120 	msr	mair2_el3, x0
-.*:	d538a260 	mrs	x0, pir_el1
-.*:	d53da260 	mrs	x0, pir_el12
-.*:	d53ca260 	mrs	x0, pir_el2
-.*:	d53ea260 	mrs	x0, pir_el3
-.*:	d538a240 	mrs	x0, pire0_el1
-.*:	d53da240 	mrs	x0, pire0_el12
-.*:	d53ca240 	mrs	x0, pire0_el2
+.*:	d53ea120 	mrs	x0, mair2_el3
 .*:	d518a260 	msr	pir_el1, x0
+.*:	d538a260 	mrs	x0, pir_el1
 .*:	d51da260 	msr	pir_el12, x0
+.*:	d53da260 	mrs	x0, pir_el12
 .*:	d51ca260 	msr	pir_el2, x0
+.*:	d53ca260 	mrs	x0, pir_el2
 .*:	d51ea260 	msr	pir_el3, x0
+.*:	d53ea260 	mrs	x0, pir_el3
 .*:	d518a240 	msr	pire0_el1, x0
+.*:	d538a240 	mrs	x0, pire0_el1
 .*:	d51da240 	msr	pire0_el12, x0
+.*:	d53da240 	mrs	x0, pire0_el12
 .*:	d51ca240 	msr	pire0_el2, x0
-.*:	d53ca2a0 	mrs	x0, s2pir_el2
+.*:	d53ca240 	mrs	x0, pire0_el2
 .*:	d51ca2a0 	msr	s2pir_el2, x0
-.*:	d53ba280 	mrs	x0, por_el0
-.*:	d538a280 	mrs	x0, por_el1
-.*:	d53da280 	mrs	x0, por_el12
-.*:	d53ca280 	mrs	x0, por_el2
-.*:	d53ea280 	mrs	x0, por_el3
+.*:	d53ca2a0 	mrs	x0, s2pir_el2
 .*:	d51ba280 	msr	por_el0, x0
+.*:	d53ba280 	mrs	x0, por_el0
 .*:	d518a280 	msr	por_el1, x0
+.*:	d538a280 	mrs	x0, por_el1
 .*:	d51da280 	msr	por_el12, x0
+.*:	d53da280 	mrs	x0, por_el12
 .*:	d51ca280 	msr	por_el2, x0
+.*:	d53ca280 	mrs	x0, por_el2
 .*:	d51ea280 	msr	por_el3, x0
-.*:	d538a2a0 	mrs	x0, s2por_el1
+.*:	d53ea280 	mrs	x0, por_el3
 .*:	d518a2a0 	msr	s2por_el1, x0
-.*:	d5382060 	mrs	x0, tcr2_el1
-.*:	d53d2060 	mrs	x0, tcr2_el12
-.*:	d53c2060 	mrs	x0, tcr2_el2
+.*:	d538a2a0 	mrs	x0, s2por_el1
 .*:	d5182060 	msr	tcr2_el1, x0
+.*:	d5382060 	mrs	x0, tcr2_el1
 .*:	d51d2060 	msr	tcr2_el12, x0
+.*:	d53d2060 	mrs	x0, tcr2_el12
 .*:	d51c2060 	msr	tcr2_el2, x0
-.*:	d5300440 	mrs	x0, mdselr_el1
+.*:	d53c2060 	mrs	x0, tcr2_el2
 .*:	d5100440 	msr	mdselr_el1, x0
-.*:	d5389e80 	mrs	x0, pmuacr_el1
+.*:	d5300440 	mrs	x0, mdselr_el1
 .*:	d5189e80 	msr	pmuacr_el1, x0
+.*:	d5389e80 	mrs	x0, pmuacr_el1
 .*:	d530ebe0 	mrs	x0, pmccntsvr_el1
 .*:	d530ec00 	mrs	x0, pmicntsvr_el1
-.*:	d5389d60 	mrs	x0, pmsscr_el1
 .*:	d5189d60 	msr	pmsscr_el1, x0
+.*:	d5389d60 	mrs	x0, pmsscr_el1
 .*:	d530e800 	mrs	x0, pmevcntsvr0_el1
 .*:	d530e940 	mrs	x0, pmevcntsvr10_el1
 .*:	d530e960 	mrs	x0, pmevcntsvr11_el1
@@ -122,12 +122,12 @@ Disassembly of section \.text:
 .*:	d530e8e0 	mrs	x0, pmevcntsvr7_el1
 .*:	d530e900 	mrs	x0, pmevcntsvr8_el1
 .*:	d530e920 	mrs	x0, pmevcntsvr9_el1
-.*:	d53b9400 	mrs	x0, pmicntr_el0
 .*:	d51b9400 	msr	pmicntr_el0, x0
-.*:	d53b9600 	mrs	x0, pmicfiltr_el0
+.*:	d53b9400 	mrs	x0, pmicntr_el0
 .*:	d51b9600 	msr	pmicfiltr_el0, x0
+.*:	d53b9600 	mrs	x0, pmicfiltr_el0
 .*:	d51b9d80 	msr	pmzr_el0, x0
-.*:	d5389ea0 	mrs	x0, pmecr_el1
 .*:	d5189ea0 	msr	pmecr_el1, x0
-.*:	d5389ee0 	mrs	x0, pmiar_el1
-.*:	d5189ee0 	msr	pmiar_el1, x0
\ No newline at end of file
+.*:	d5389ea0 	mrs	x0, pmecr_el1
+.*:	d5189ee0 	msr	pmiar_el1, x0
+.*:	d5389ee0 	mrs	x0, pmiar_el1
\ No newline at end of file
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
index 536631823f5..bf9019c9ac8 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
@@ -1,32 +1,32 @@
-	mrs x3, PMSDSFR_EL1
 	msr PMSDSFR_EL1, x3
+	mrs x3, PMSDSFR_EL1
 
 	mrs x0, ERXGSR_EL1
 
 	msr SCTLR2_EL1, x3
-	msr SCTLR2_EL12, x3
-	msr SCTLR2_EL2, x3
-	msr SCTLR2_EL3, x3
 	mrs x3, SCTLR2_EL1
+	msr SCTLR2_EL12, x3
 	mrs x3, SCTLR2_EL12
+	msr SCTLR2_EL2, x3
 	mrs x3, SCTLR2_EL2
+	msr SCTLR2_EL3, x3
 	mrs x3, SCTLR2_EL3
 
-	mrs x3, HDFGRTR2_EL2
-	mrs x3, HDFGWTR2_EL2
-	mrs x3, HFGRTR2_EL2
-	mrs x3, HFGWTR2_EL2
 	msr HDFGRTR2_EL2, x3
+	mrs x3, HDFGRTR2_EL2
 	msr HDFGWTR2_EL2, x3
+	mrs x3, HDFGWTR2_EL2
 	msr HFGRTR2_EL2, x3
+	mrs x3, HFGRTR2_EL2
 	msr HFGWTR2_EL2, x3
+	mrs x3, HFGWTR2_EL2
 
-	mrs x0, PFAR_EL1
-	mrs x0, PFAR_EL2
-	mrs x0, PFAR_EL12
 	msr PFAR_EL1, x0
+	mrs x0, PFAR_EL1
 	msr PFAR_EL2, x0
+	mrs x0, PFAR_EL2
 	msr PFAR_EL12, x0
+	mrs x0, PFAR_EL12
 
 	/* AT.  */
 	at s1e1a, x1
@@ -34,84 +34,80 @@
 	at s1e3a, x5
 
 	/* FEAT_AIE.  */
-	mrs x0, amair2_el1
-	mrs x0, amair2_el12
-	mrs x0, amair2_el2
-	mrs x0, amair2_el3
-	mrs x0, mair2_el1
-	mrs x0, mair2_el12
-	mrs x0, mair2_el2
-	mrs x0, mair2_el3
-
 	msr amair2_el1, x0
+	mrs x0, amair2_el1
 	msr amair2_el12, x0
+	mrs x0, amair2_el12
 	msr amair2_el2, x0
+	mrs x0, amair2_el2
 	msr amair2_el3, x0
+	mrs x0, amair2_el3
 	msr mair2_el1, x0
+	mrs x0, mair2_el1
 	msr mair2_el12, x0
+	mrs x0, mair2_el12
 	msr mair2_el2, x0
+	mrs x0, mair2_el2
 	msr mair2_el3, x0
+	mrs x0, mair2_el3
 
 	/* FEAT_S1PIE.  */
-	mrs x0, pir_el1
-	mrs x0, pir_el12
-	mrs x0, pir_el2
-	mrs x0, pir_el3
-	mrs x0, pire0_el1
-	mrs x0, pire0_el12
-	mrs x0, pire0_el2
-
 	msr pir_el1, x0
+	mrs x0, pir_el1
 	msr pir_el12, x0
+	mrs x0, pir_el12
 	msr pir_el2, x0
+	mrs x0, pir_el2
 	msr pir_el3, x0
+	mrs x0, pir_el3
 	msr pire0_el1, x0
+	mrs x0, pire0_el1
 	msr pire0_el12, x0
+	mrs x0, pire0_el12
 	msr pire0_el2, x0
+	mrs x0, pire0_el2
 
 	/* FEAT_S2PIE.  */
-	mrs x0, s2pir_el2
 	msr s2pir_el2, x0
+	mrs x0, s2pir_el2
 
 	/* FEAT_S1POE.  */
-	mrs x0, por_el0
-	mrs x0, por_el1
-	mrs x0, por_el12
-	mrs x0, por_el2
-	mrs x0, por_el3
-
 	msr por_el0, x0
+	mrs x0, por_el0
 	msr por_el1, x0
+	mrs x0, por_el1
 	msr por_el12, x0
+	mrs x0, por_el12
 	msr por_el2, x0
+	mrs x0, por_el2
 	msr por_el3, x0
+	mrs x0, por_el3
 
 	/* FEAT_S21POE.  */
-	mrs x0, s2por_el1
 	msr s2por_el1, x0
+	mrs x0, s2por_el1
 
 	/* FEAT_TCR2.  */
-	mrs x0, tcr2_el1
-	mrs x0, tcr2_el12
-	mrs x0, tcr2_el2
-
 	msr tcr2_el1, x0
+	mrs x0, tcr2_el1
 	msr tcr2_el12, x0
+	mrs x0, tcr2_el12
 	msr tcr2_el2, x0
+	mrs x0, tcr2_el2
 
 	/* FEAT_DEBUGv8p9 Extension.  */
-	mrs x0, mdselr_el1
 	msr mdselr_el1, x0
+	mrs x0, mdselr_el1
 
 	/* FEAT_PMUv3p9 Extension.  */
-	mrs x0, pmuacr_el1
 	msr pmuacr_el1, x0
+	mrs x0, pmuacr_el1
 
 	/* FEAT_PMUv3_SS Extension.  */
 	mrs x0, pmccntsvr_el1
 	mrs x0, pmicntsvr_el1
-	mrs x0, pmsscr_el1
 	msr pmsscr_el1, x0
+	mrs x0, pmsscr_el1
 	mrs x0, pmevcntsvr0_el1
 	mrs x0, pmevcntsvr10_el1
 	mrs x0, pmevcntsvr11_el1
@@ -144,14 +140,14 @@
 	mrs x0, pmevcntsvr9_el1
 
 	/* FEAT_PMUv3_ICNTR Extension.  */
-	mrs x0, pmicntr_el0
 	msr pmicntr_el0, x0
-	mrs x0, pmicfiltr_el0
+	mrs x0, pmicntr_el0
 	msr pmicfiltr_el0, x0
+	mrs x0, pmicfiltr_el0
 	msr pmzr_el0, x0
 
 	/* FEAT_SEBEP Extension.  */
-	mrs x0, pmecr_el1
 	msr pmecr_el1, x0
-	mrs x0, pmiar_el1
+	mrs x0, pmecr_el1
 	msr pmiar_el1, x0
+	mrs x0, pmiar_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
index 1564f530c67..5d74fd7056b 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
@@ -6,20 +6,20 @@ Disassembly of section \.text:
 
 0+ <.*>:
 
+.*:	d518a460 	msr	lorc_el1, x0
 .*:	d538a460 	mrs	x0, lorc_el1
+.*:	d518a420 	msr	lorea_el1, x0
 .*:	d538a420 	mrs	x0, lorea_el1
+.*:	d518a440 	msr	lorn_el1, x0
 .*:	d538a440 	mrs	x0, lorn_el1
+.*:	d518a400 	msr	lorsa_el1, x0
 .*:	d538a400 	mrs	x0, lorsa_el1
+.*:	d51ecc80 	msr	icc_ctlr_el3, x0
 .*:	d53ecc80 	mrs	x0, icc_ctlr_el3
+.*:	d518cca0 	msr	icc_sre_el1, x0
 .*:	d538cca0 	mrs	x0, icc_sre_el1
+.*:	d51cc9a0 	msr	icc_sre_el2, x0
 .*:	d53cc9a0 	mrs	x0, icc_sre_el2
+.*:	d51ecca0 	msr	icc_sre_el3, x0
 .*:	d53ecca0 	mrs	x0, icc_sre_el3
 .*:	d53ccb20 	mrs	x0, ich_vtr_el2
-.*:	d518a460 	msr	lorc_el1, x0
-.*:	d518a420 	msr	lorea_el1, x0
-.*:	d518a440 	msr	lorn_el1, x0
-.*:	d518a400 	msr	lorsa_el1, x0
-.*:	d51ecc80 	msr	icc_ctlr_el3, x0
-.*:	d518cca0 	msr	icc_sre_el1, x0
-.*:	d51cc9a0 	msr	icc_sre_el2, x0
-.*:	d51ecca0 	msr	icc_sre_el3, x0
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s
index 94dd85b1a03..8354a44a813 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s
@@ -1,22 +1,20 @@
 .arch armv8-a+lor
 
-/* Read from system registers.  */
+msr lorc_el1, x0
 mrs x0, lorc_el1
+msr lorea_el1, x0
 mrs x0, lorea_el1
+msr lorn_el1, x0
 mrs x0, lorn_el1
+msr lorsa_el1, x0
 mrs x0, lorsa_el1
+msr icc_ctlr_el3, x0
 mrs x0, icc_ctlr_el3
+msr icc_sre_el1, x0
 mrs x0, icc_sre_el1
+msr icc_sre_el2, x0
 mrs x0, icc_sre_el2
+msr icc_sre_el3, x0
 mrs x0, icc_sre_el3
-mrs x0, ich_vtr_el2
 
-/* Write to system registers.  */
-msr lorc_el1, x0
-msr lorea_el1, x0
-msr lorn_el1, x0
-msr lorsa_el1, x0
-msr icc_ctlr_el3, x0
-msr icc_sre_el1, x0
-msr icc_sre_el2, x0
-msr icc_sre_el3, x0
+mrs x0, ich_vtr_el2
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
index 3f048849836..d93b4c7da40 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
@@ -9,29 +9,29 @@ Disassembly of section \.text:
 [^:]*:	d53803a0 	mrs	x0, id_dfr1_el1
 [^:]*:	d53803c0 	mrs	x0, id_mmfr5_el1
 [^:]*:	d53802e0 	mrs	x0, id_isar6_el1
-[^:]*:	d5384600 	mrs	x0, icc_pmr_el1
 [^:]*:	d5184600 	msr	icc_pmr_el1, x0
+[^:]*:	d5384600 	mrs	x0, icc_pmr_el1
 [^:]*:	d538c800 	mrs	x0, icc_iar0_el1
 [^:]*:	d518c820 	msr	icc_eoir0_el1, x0
 [^:]*:	d538c840 	mrs	x0, icc_hppir0_el1
-[^:]*:	d538c860 	mrs	x0, icc_bpr0_el1
 [^:]*:	d518c860 	msr	icc_bpr0_el1, x0
-[^:]*:	d538c880 	mrs	x0, icc_ap0r0_el1
+[^:]*:	d538c860 	mrs	x0, icc_bpr0_el1
 [^:]*:	d518c880 	msr	icc_ap0r0_el1, x0
-[^:]*:	d538c8a0 	mrs	x0, icc_ap0r1_el1
+[^:]*:	d538c880 	mrs	x0, icc_ap0r0_el1
 [^:]*:	d518c8a0 	msr	icc_ap0r1_el1, x0
-[^:]*:	d538c8c0 	mrs	x0, icc_ap0r2_el1
+[^:]*:	d538c8a0 	mrs	x0, icc_ap0r1_el1
 [^:]*:	d518c8c0 	msr	icc_ap0r2_el1, x0
-[^:]*:	d538c8e0 	mrs	x0, icc_ap0r3_el1
+[^:]*:	d538c8c0 	mrs	x0, icc_ap0r2_el1
 [^:]*:	d518c8e0 	msr	icc_ap0r3_el1, x0
-[^:]*:	d538c900 	mrs	x0, icc_ap1r0_el1
+[^:]*:	d538c8e0 	mrs	x0, icc_ap0r3_el1
 [^:]*:	d518c900 	msr	icc_ap1r0_el1, x0
-[^:]*:	d538c920 	mrs	x0, icc_ap1r1_el1
+[^:]*:	d538c900 	mrs	x0, icc_ap1r0_el1
 [^:]*:	d518c920 	msr	icc_ap1r1_el1, x0
-[^:]*:	d538c940 	mrs	x0, icc_ap1r2_el1
+[^:]*:	d538c920 	mrs	x0, icc_ap1r1_el1
 [^:]*:	d518c940 	msr	icc_ap1r2_el1, x0
-[^:]*:	d538c960 	mrs	x0, icc_ap1r3_el1
+[^:]*:	d538c940 	mrs	x0, icc_ap1r2_el1
 [^:]*:	d518c960 	msr	icc_ap1r3_el1, x0
+[^:]*:	d538c960 	mrs	x0, icc_ap1r3_el1
 [^:]*:	d518cb20 	msr	icc_dir_el1, x0
 [^:]*:	d538cb60 	mrs	x0, icc_rpr_el1
 [^:]*:	d518cba0 	msr	icc_sgi1r_el1, x0
@@ -40,256 +40,256 @@ Disassembly of section \.text:
 [^:]*:	d538cc00 	mrs	x0, icc_iar1_el1
 [^:]*:	d518cc20 	msr	icc_eoir1_el1, x0
 [^:]*:	d538cc40 	mrs	x0, icc_hppir1_el1
-[^:]*:	d538cc60 	mrs	x0, icc_bpr1_el1
 [^:]*:	d518cc60 	msr	icc_bpr1_el1, x0
-[^:]*:	d538cc80 	mrs	x0, icc_ctlr_el1
+[^:]*:	d538cc60 	mrs	x0, icc_bpr1_el1
 [^:]*:	d518cc80 	msr	icc_ctlr_el1, x0
-[^:]*:	d538ccc0 	mrs	x0, icc_igrpen0_el1
+[^:]*:	d538cc80 	mrs	x0, icc_ctlr_el1
 [^:]*:	d518ccc0 	msr	icc_igrpen0_el1, x0
-[^:]*:	d538cce0 	mrs	x0, icc_igrpen1_el1
+[^:]*:	d538ccc0 	mrs	x0, icc_igrpen0_el1
 [^:]*:	d518cce0 	msr	icc_igrpen1_el1, x0
-[^:]*:	d53cc800 	mrs	x0, ich_ap0r0_el2
+[^:]*:	d538cce0 	mrs	x0, icc_igrpen1_el1
 [^:]*:	d51cc800 	msr	ich_ap0r0_el2, x0
-[^:]*:	d53cc820 	mrs	x0, ich_ap0r1_el2
+[^:]*:	d53cc800 	mrs	x0, ich_ap0r0_el2
 [^:]*:	d51cc820 	msr	ich_ap0r1_el2, x0
-[^:]*:	d53cc840 	mrs	x0, ich_ap0r2_el2
+[^:]*:	d53cc820 	mrs	x0, ich_ap0r1_el2
 [^:]*:	d51cc840 	msr	ich_ap0r2_el2, x0
-[^:]*:	d53cc860 	mrs	x0, ich_ap0r3_el2
+[^:]*:	d53cc840 	mrs	x0, ich_ap0r2_el2
 [^:]*:	d51cc860 	msr	ich_ap0r3_el2, x0
-[^:]*:	d53cc900 	mrs	x0, ich_ap1r0_el2
+[^:]*:	d53cc860 	mrs	x0, ich_ap0r3_el2
 [^:]*:	d51cc900 	msr	ich_ap1r0_el2, x0
-[^:]*:	d53cc920 	mrs	x0, ich_ap1r1_el2
+[^:]*:	d53cc900 	mrs	x0, ich_ap1r0_el2
 [^:]*:	d51cc920 	msr	ich_ap1r1_el2, x0
-[^:]*:	d53cc940 	mrs	x0, ich_ap1r2_el2
+[^:]*:	d53cc920 	mrs	x0, ich_ap1r1_el2
 [^:]*:	d51cc940 	msr	ich_ap1r2_el2, x0
-[^:]*:	d53cc960 	mrs	x0, ich_ap1r3_el2
+[^:]*:	d53cc940 	mrs	x0, ich_ap1r2_el2
 [^:]*:	d51cc960 	msr	ich_ap1r3_el2, x0
-[^:]*:	d53ccb00 	mrs	x0, ich_hcr_el2
+[^:]*:	d53cc960 	mrs	x0, ich_ap1r3_el2
 [^:]*:	d51ccb00 	msr	ich_hcr_el2, x0
+[^:]*:	d53ccb00 	mrs	x0, ich_hcr_el2
 [^:]*:	d53ccb40 	mrs	x0, ich_misr_el2
 [^:]*:	d53ccb60 	mrs	x0, ich_eisr_el2
 [^:]*:	d53ccba0 	mrs	x0, ich_elrsr_el2
-[^:]*:	d53ccbe0 	mrs	x0, ich_vmcr_el2
 [^:]*:	d51ccbe0 	msr	ich_vmcr_el2, x0
-[^:]*:	d53ccc00 	mrs	x0, ich_lr0_el2
+[^:]*:	d53ccbe0 	mrs	x0, ich_vmcr_el2
 [^:]*:	d51ccc00 	msr	ich_lr0_el2, x0
-[^:]*:	d53ccc20 	mrs	x0, ich_lr1_el2
+[^:]*:	d53ccc00 	mrs	x0, ich_lr0_el2
 [^:]*:	d51ccc20 	msr	ich_lr1_el2, x0
-[^:]*:	d53ccc40 	mrs	x0, ich_lr2_el2
+[^:]*:	d53ccc20 	mrs	x0, ich_lr1_el2
 [^:]*:	d51ccc40 	msr	ich_lr2_el2, x0
-[^:]*:	d53ccc60 	mrs	x0, ich_lr3_el2
+[^:]*:	d53ccc40 	mrs	x0, ich_lr2_el2
 [^:]*:	d51ccc60 	msr	ich_lr3_el2, x0
-[^:]*:	d53ccc80 	mrs	x0, ich_lr4_el2
+[^:]*:	d53ccc60 	mrs	x0, ich_lr3_el2
 [^:]*:	d51ccc80 	msr	ich_lr4_el2, x0
-[^:]*:	d53ccca0 	mrs	x0, ich_lr5_el2
+[^:]*:	d53ccc80 	mrs	x0, ich_lr4_el2
 [^:]*:	d51ccca0 	msr	ich_lr5_el2, x0
-[^:]*:	d53cccc0 	mrs	x0, ich_lr6_el2
+[^:]*:	d53ccca0 	mrs	x0, ich_lr5_el2
 [^:]*:	d51cccc0 	msr	ich_lr6_el2, x0
-[^:]*:	d53ccce0 	mrs	x0, ich_lr7_el2
+[^:]*:	d53cccc0 	mrs	x0, ich_lr6_el2
 [^:]*:	d51ccce0 	msr	ich_lr7_el2, x0
-[^:]*:	d53ccd00 	mrs	x0, ich_lr8_el2
+[^:]*:	d53ccce0 	mrs	x0, ich_lr7_el2
 [^:]*:	d51ccd00 	msr	ich_lr8_el2, x0
-[^:]*:	d53ccd20 	mrs	x0, ich_lr9_el2
+[^:]*:	d53ccd00 	mrs	x0, ich_lr8_el2
 [^:]*:	d51ccd20 	msr	ich_lr9_el2, x0
-[^:]*:	d53ccd40 	mrs	x0, ich_lr10_el2
+[^:]*:	d53ccd20 	mrs	x0, ich_lr9_el2
 [^:]*:	d51ccd40 	msr	ich_lr10_el2, x0
-[^:]*:	d53ccd60 	mrs	x0, ich_lr11_el2
+[^:]*:	d53ccd40 	mrs	x0, ich_lr10_el2
 [^:]*:	d51ccd60 	msr	ich_lr11_el2, x0
-[^:]*:	d53ccd80 	mrs	x0, ich_lr12_el2
+[^:]*:	d53ccd60 	mrs	x0, ich_lr11_el2
 [^:]*:	d51ccd80 	msr	ich_lr12_el2, x0
-[^:]*:	d53ccda0 	mrs	x0, ich_lr13_el2
+[^:]*:	d53ccd80 	mrs	x0, ich_lr12_el2
 [^:]*:	d51ccda0 	msr	ich_lr13_el2, x0
-[^:]*:	d53ccdc0 	mrs	x0, ich_lr14_el2
+[^:]*:	d53ccda0 	mrs	x0, ich_lr13_el2
 [^:]*:	d51ccdc0 	msr	ich_lr14_el2, x0
-[^:]*:	d53ccde0 	mrs	x0, ich_lr15_el2
+[^:]*:	d53ccdc0 	mrs	x0, ich_lr14_el2
 [^:]*:	d51ccde0 	msr	ich_lr15_el2, x0
-[^:]*:	d53ecce0 	mrs	x0, icc_igrpen1_el3
+[^:]*:	d53ccde0 	mrs	x0, ich_lr15_el2
 [^:]*:	d51ecce0 	msr	icc_igrpen1_el3, x0
+[^:]*:	d53ecce0 	mrs	x0, icc_igrpen1_el3
 [^:]*:	d538a4e0 	mrs	x0, lorid_el1
 [^:]*:	d5390040 	mrs	x0, ccsidr2_el1
-[^:]*:	d5381220 	mrs	x0, trfcr_el1
 [^:]*:	d5181220 	msr	trfcr_el1, x0
+[^:]*:	d5381220 	mrs	x0, trfcr_el1
 [^:]*:	d5389ec0 	mrs	x0, pmmir_el1
-[^:]*:	d53c1220 	mrs	x0, trfcr_el2
 [^:]*:	d51c1220 	msr	trfcr_el2, x0
-[^:]*:	d53d1220 	mrs	x0, trfcr_el12
+[^:]*:	d53c1220 	mrs	x0, trfcr_el2
 [^:]*:	d51d1220 	msr	trfcr_el12, x0
-[^:]*:	d53bd200 	mrs	x0, amcr_el0
+[^:]*:	d53d1220 	mrs	x0, trfcr_el12
 [^:]*:	d51bd200 	msr	amcr_el0, x0
+[^:]*:	d53bd200 	mrs	x0, amcr_el0
 [^:]*:	d53bd220 	mrs	x0, amcfgr_el0
 [^:]*:	d53bd240 	mrs	x0, amcgcr_el0
-[^:]*:	d53bd260 	mrs	x0, amuserenr_el0
 [^:]*:	d51bd260 	msr	amuserenr_el0, x0
-[^:]*:	d53bd280 	mrs	x0, amcntenclr0_el0
+[^:]*:	d53bd260 	mrs	x0, amuserenr_el0
 [^:]*:	d51bd280 	msr	amcntenclr0_el0, x0
-[^:]*:	d53bd2a0 	mrs	x0, amcntenset0_el0
+[^:]*:	d53bd280 	mrs	x0, amcntenclr0_el0
 [^:]*:	d51bd2a0 	msr	amcntenset0_el0, x0
-[^:]*:	d53bd300 	mrs	x0, amcntenclr1_el0
+[^:]*:	d53bd2a0 	mrs	x0, amcntenset0_el0
 [^:]*:	d51bd300 	msr	amcntenclr1_el0, x0
-[^:]*:	d53bd320 	mrs	x0, amcntenset1_el0
+[^:]*:	d53bd300 	mrs	x0, amcntenclr1_el0
 [^:]*:	d51bd320 	msr	amcntenset1_el0, x0
-[^:]*:	d53bd400 	mrs	x0, amevcntr00_el0
+[^:]*:	d53bd320 	mrs	x0, amcntenset1_el0
 [^:]*:	d51bd400 	msr	amevcntr00_el0, x0
-[^:]*:	d53bd420 	mrs	x0, amevcntr01_el0
+[^:]*:	d53bd400 	mrs	x0, amevcntr00_el0
 [^:]*:	d51bd420 	msr	amevcntr01_el0, x0
-[^:]*:	d53bd440 	mrs	x0, amevcntr02_el0
+[^:]*:	d53bd420 	mrs	x0, amevcntr01_el0
 [^:]*:	d51bd440 	msr	amevcntr02_el0, x0
-[^:]*:	d53bd460 	mrs	x0, amevcntr03_el0
+[^:]*:	d53bd440 	mrs	x0, amevcntr02_el0
 [^:]*:	d51bd460 	msr	amevcntr03_el0, x0
+[^:]*:	d53bd460 	mrs	x0, amevcntr03_el0
 [^:]*:	d53bd600 	mrs	x0, amevtyper00_el0
 [^:]*:	d53bd620 	mrs	x0, amevtyper01_el0
 [^:]*:	d53bd640 	mrs	x0, amevtyper02_el0
 [^:]*:	d53bd660 	mrs	x0, amevtyper03_el0
-[^:]*:	d53bdc00 	mrs	x0, amevcntr10_el0
 [^:]*:	d51bdc00 	msr	amevcntr10_el0, x0
-[^:]*:	d53bdc20 	mrs	x0, amevcntr11_el0
+[^:]*:	d53bdc00 	mrs	x0, amevcntr10_el0
 [^:]*:	d51bdc20 	msr	amevcntr11_el0, x0
-[^:]*:	d53bdc40 	mrs	x0, amevcntr12_el0
+[^:]*:	d53bdc20 	mrs	x0, amevcntr11_el0
 [^:]*:	d51bdc40 	msr	amevcntr12_el0, x0
-[^:]*:	d53bdc60 	mrs	x0, amevcntr13_el0
+[^:]*:	d53bdc40 	mrs	x0, amevcntr12_el0
 [^:]*:	d51bdc60 	msr	amevcntr13_el0, x0
-[^:]*:	d53bdc80 	mrs	x0, amevcntr14_el0
+[^:]*:	d53bdc60 	mrs	x0, amevcntr13_el0
 [^:]*:	d51bdc80 	msr	amevcntr14_el0, x0
-[^:]*:	d53bdca0 	mrs	x0, amevcntr15_el0
+[^:]*:	d53bdc80 	mrs	x0, amevcntr14_el0
 [^:]*:	d51bdca0 	msr	amevcntr15_el0, x0
-[^:]*:	d53bdcc0 	mrs	x0, amevcntr16_el0
+[^:]*:	d53bdca0 	mrs	x0, amevcntr15_el0
 [^:]*:	d51bdcc0 	msr	amevcntr16_el0, x0
-[^:]*:	d53bdce0 	mrs	x0, amevcntr17_el0
+[^:]*:	d53bdcc0 	mrs	x0, amevcntr16_el0
 [^:]*:	d51bdce0 	msr	amevcntr17_el0, x0
-[^:]*:	d53bdd00 	mrs	x0, amevcntr18_el0
+[^:]*:	d53bdce0 	mrs	x0, amevcntr17_el0
 [^:]*:	d51bdd00 	msr	amevcntr18_el0, x0
-[^:]*:	d53bdd20 	mrs	x0, amevcntr19_el0
+[^:]*:	d53bdd00 	mrs	x0, amevcntr18_el0
 [^:]*:	d51bdd20 	msr	amevcntr19_el0, x0
-[^:]*:	d53bdd40 	mrs	x0, amevcntr110_el0
+[^:]*:	d53bdd20 	mrs	x0, amevcntr19_el0
 [^:]*:	d51bdd40 	msr	amevcntr110_el0, x0
-[^:]*:	d53bdd60 	mrs	x0, amevcntr111_el0
+[^:]*:	d53bdd40 	mrs	x0, amevcntr110_el0
 [^:]*:	d51bdd60 	msr	amevcntr111_el0, x0
-[^:]*:	d53bdd80 	mrs	x0, amevcntr112_el0
+[^:]*:	d53bdd60 	mrs	x0, amevcntr111_el0
 [^:]*:	d51bdd80 	msr	amevcntr112_el0, x0
-[^:]*:	d53bdda0 	mrs	x0, amevcntr113_el0
+[^:]*:	d53bdd80 	mrs	x0, amevcntr112_el0
 [^:]*:	d51bdda0 	msr	amevcntr113_el0, x0
-[^:]*:	d53bddc0 	mrs	x0, amevcntr114_el0
+[^:]*:	d53bdda0 	mrs	x0, amevcntr113_el0
 [^:]*:	d51bddc0 	msr	amevcntr114_el0, x0
-[^:]*:	d53bdde0 	mrs	x0, amevcntr115_el0
+[^:]*:	d53bddc0 	mrs	x0, amevcntr114_el0
 [^:]*:	d51bdde0 	msr	amevcntr115_el0, x0
-[^:]*:	d53bde00 	mrs	x0, amevtyper10_el0
+[^:]*:	d53bdde0 	mrs	x0, amevcntr115_el0
 [^:]*:	d51bde00 	msr	amevtyper10_el0, x0
-[^:]*:	d53bde20 	mrs	x0, amevtyper11_el0
+[^:]*:	d53bde00 	mrs	x0, amevtyper10_el0
 [^:]*:	d51bde20 	msr	amevtyper11_el0, x0
-[^:]*:	d53bde40 	mrs	x0, amevtyper12_el0
+[^:]*:	d53bde20 	mrs	x0, amevtyper11_el0
 [^:]*:	d51bde40 	msr	amevtyper12_el0, x0
-[^:]*:	d53bde60 	mrs	x0, amevtyper13_el0
+[^:]*:	d53bde40 	mrs	x0, amevtyper12_el0
 [^:]*:	d51bde60 	msr	amevtyper13_el0, x0
-[^:]*:	d53bde80 	mrs	x0, amevtyper14_el0
+[^:]*:	d53bde60 	mrs	x0, amevtyper13_el0
 [^:]*:	d51bde80 	msr	amevtyper14_el0, x0
-[^:]*:	d53bdea0 	mrs	x0, amevtyper15_el0
+[^:]*:	d53bde80 	mrs	x0, amevtyper14_el0
 [^:]*:	d51bdea0 	msr	amevtyper15_el0, x0
-[^:]*:	d53bdec0 	mrs	x0, amevtyper16_el0
+[^:]*:	d53bdea0 	mrs	x0, amevtyper15_el0
 [^:]*:	d51bdec0 	msr	amevtyper16_el0, x0
-[^:]*:	d53bdee0 	mrs	x0, amevtyper17_el0
+[^:]*:	d53bdec0 	mrs	x0, amevtyper16_el0
 [^:]*:	d51bdee0 	msr	amevtyper17_el0, x0
-[^:]*:	d53bdf00 	mrs	x0, amevtyper18_el0
+[^:]*:	d53bdee0 	mrs	x0, amevtyper17_el0
 [^:]*:	d51bdf00 	msr	amevtyper18_el0, x0
-[^:]*:	d53bdf20 	mrs	x0, amevtyper19_el0
+[^:]*:	d53bdf00 	mrs	x0, amevtyper18_el0
 [^:]*:	d51bdf20 	msr	amevtyper19_el0, x0
-[^:]*:	d53bdf40 	mrs	x0, amevtyper110_el0
+[^:]*:	d53bdf20 	mrs	x0, amevtyper19_el0
 [^:]*:	d51bdf40 	msr	amevtyper110_el0, x0
-[^:]*:	d53bdf60 	mrs	x0, amevtyper111_el0
+[^:]*:	d53bdf40 	mrs	x0, amevtyper110_el0
 [^:]*:	d51bdf60 	msr	amevtyper111_el0, x0
-[^:]*:	d53bdf80 	mrs	x0, amevtyper112_el0
+[^:]*:	d53bdf60 	mrs	x0, amevtyper111_el0
 [^:]*:	d51bdf80 	msr	amevtyper112_el0, x0
-[^:]*:	d53bdfa0 	mrs	x0, amevtyper113_el0
+[^:]*:	d53bdf80 	mrs	x0, amevtyper112_el0
 [^:]*:	d51bdfa0 	msr	amevtyper113_el0, x0
-[^:]*:	d53bdfc0 	mrs	x0, amevtyper114_el0
+[^:]*:	d53bdfa0 	mrs	x0, amevtyper113_el0
 [^:]*:	d51bdfc0 	msr	amevtyper114_el0, x0
-[^:]*:	d53bdfe0 	mrs	x0, amevtyper115_el0
+[^:]*:	d53bdfc0 	mrs	x0, amevtyper114_el0
 [^:]*:	d51bdfe0 	msr	amevtyper115_el0, x0
+[^:]*:	d53bdfe0 	mrs	x0, amevtyper115_el0
 [^:]*:	d53bd2c0 	mrs	x0, amcg1idr_el0
 [^:]*:	d53be0a0 	mrs	x0, cntpctss_el0
 [^:]*:	d53be0c0 	mrs	x0, cntvctss_el0
-[^:]*:	d53c1180 	mrs	x0, hfgrtr_el2
 [^:]*:	d51c1180 	msr	hfgrtr_el2, x0
-[^:]*:	d53c11a0 	mrs	x0, hfgwtr_el2
+[^:]*:	d53c1180 	mrs	x0, hfgrtr_el2
 [^:]*:	d51c11a0 	msr	hfgwtr_el2, x0
-[^:]*:	d53c11c0 	mrs	x0, hfgitr_el2
+[^:]*:	d53c11a0 	mrs	x0, hfgwtr_el2
 [^:]*:	d51c11c0 	msr	hfgitr_el2, x0
-[^:]*:	d53c3180 	mrs	x0, hdfgrtr_el2
+[^:]*:	d53c11c0 	mrs	x0, hfgitr_el2
 [^:]*:	d51c3180 	msr	hdfgrtr_el2, x0
-[^:]*:	d53c31a0 	mrs	x0, hdfgwtr_el2
+[^:]*:	d53c3180 	mrs	x0, hdfgrtr_el2
 [^:]*:	d51c31a0 	msr	hdfgwtr_el2, x0
-[^:]*:	d53c31c0 	mrs	x0, hafgrtr_el2
+[^:]*:	d53c31a0 	mrs	x0, hdfgwtr_el2
 [^:]*:	d51c31c0 	msr	hafgrtr_el2, x0
-[^:]*:	d53cd800 	mrs	x0, amevcntvoff00_el2
+[^:]*:	d53c31c0 	mrs	x0, hafgrtr_el2
 [^:]*:	d51cd800 	msr	amevcntvoff00_el2, x0
-[^:]*:	d53cd820 	mrs	x0, amevcntvoff01_el2
+[^:]*:	d53cd800 	mrs	x0, amevcntvoff00_el2
 [^:]*:	d51cd820 	msr	amevcntvoff01_el2, x0
-[^:]*:	d53cd840 	mrs	x0, amevcntvoff02_el2
+[^:]*:	d53cd820 	mrs	x0, amevcntvoff01_el2
 [^:]*:	d51cd840 	msr	amevcntvoff02_el2, x0
-[^:]*:	d53cd860 	mrs	x0, amevcntvoff03_el2
+[^:]*:	d53cd840 	mrs	x0, amevcntvoff02_el2
 [^:]*:	d51cd860 	msr	amevcntvoff03_el2, x0
-[^:]*:	d53cd880 	mrs	x0, amevcntvoff04_el2
+[^:]*:	d53cd860 	mrs	x0, amevcntvoff03_el2
 [^:]*:	d51cd880 	msr	amevcntvoff04_el2, x0
-[^:]*:	d53cd8a0 	mrs	x0, amevcntvoff05_el2
+[^:]*:	d53cd880 	mrs	x0, amevcntvoff04_el2
 [^:]*:	d51cd8a0 	msr	amevcntvoff05_el2, x0
-[^:]*:	d53cd8c0 	mrs	x0, amevcntvoff06_el2
+[^:]*:	d53cd8a0 	mrs	x0, amevcntvoff05_el2
 [^:]*:	d51cd8c0 	msr	amevcntvoff06_el2, x0
-[^:]*:	d53cd8e0 	mrs	x0, amevcntvoff07_el2
+[^:]*:	d53cd8c0 	mrs	x0, amevcntvoff06_el2
 [^:]*:	d51cd8e0 	msr	amevcntvoff07_el2, x0
-[^:]*:	d53cd900 	mrs	x0, amevcntvoff08_el2
+[^:]*:	d53cd8e0 	mrs	x0, amevcntvoff07_el2
 [^:]*:	d51cd900 	msr	amevcntvoff08_el2, x0
-[^:]*:	d53cd920 	mrs	x0, amevcntvoff09_el2
+[^:]*:	d53cd900 	mrs	x0, amevcntvoff08_el2
 [^:]*:	d51cd920 	msr	amevcntvoff09_el2, x0
-[^:]*:	d53cd940 	mrs	x0, amevcntvoff010_el2
+[^:]*:	d53cd920 	mrs	x0, amevcntvoff09_el2
 [^:]*:	d51cd940 	msr	amevcntvoff010_el2, x0
-[^:]*:	d53cd960 	mrs	x0, amevcntvoff011_el2
+[^:]*:	d53cd940 	mrs	x0, amevcntvoff010_el2
 [^:]*:	d51cd960 	msr	amevcntvoff011_el2, x0
-[^:]*:	d53cd980 	mrs	x0, amevcntvoff012_el2
+[^:]*:	d53cd960 	mrs	x0, amevcntvoff011_el2
 [^:]*:	d51cd980 	msr	amevcntvoff012_el2, x0
-[^:]*:	d53cd9a0 	mrs	x0, amevcntvoff013_el2
+[^:]*:	d53cd980 	mrs	x0, amevcntvoff012_el2
 [^:]*:	d51cd9a0 	msr	amevcntvoff013_el2, x0
-[^:]*:	d53cd9c0 	mrs	x0, amevcntvoff014_el2
+[^:]*:	d53cd9a0 	mrs	x0, amevcntvoff013_el2
 [^:]*:	d51cd9c0 	msr	amevcntvoff014_el2, x0
-[^:]*:	d53cd9e0 	mrs	x0, amevcntvoff015_el2
+[^:]*:	d53cd9c0 	mrs	x0, amevcntvoff014_el2
 [^:]*:	d51cd9e0 	msr	amevcntvoff015_el2, x0
-[^:]*:	d53cda00 	mrs	x0, amevcntvoff10_el2
+[^:]*:	d53cd9e0 	mrs	x0, amevcntvoff015_el2
 [^:]*:	d51cda00 	msr	amevcntvoff10_el2, x0
-[^:]*:	d53cda20 	mrs	x0, amevcntvoff11_el2
+[^:]*:	d53cda00 	mrs	x0, amevcntvoff10_el2
 [^:]*:	d51cda20 	msr	amevcntvoff11_el2, x0
-[^:]*:	d53cda40 	mrs	x0, amevcntvoff12_el2
+[^:]*:	d53cda20 	mrs	x0, amevcntvoff11_el2
 [^:]*:	d51cda40 	msr	amevcntvoff12_el2, x0
-[^:]*:	d53cda60 	mrs	x0, amevcntvoff13_el2
+[^:]*:	d53cda40 	mrs	x0, amevcntvoff12_el2
 [^:]*:	d51cda60 	msr	amevcntvoff13_el2, x0
-[^:]*:	d53cda80 	mrs	x0, amevcntvoff14_el2
+[^:]*:	d53cda60 	mrs	x0, amevcntvoff13_el2
 [^:]*:	d51cda80 	msr	amevcntvoff14_el2, x0
-[^:]*:	d53cdaa0 	mrs	x0, amevcntvoff15_el2
+[^:]*:	d53cda80 	mrs	x0, amevcntvoff14_el2
 [^:]*:	d51cdaa0 	msr	amevcntvoff15_el2, x0
-[^:]*:	d53cdac0 	mrs	x0, amevcntvoff16_el2
+[^:]*:	d53cdaa0 	mrs	x0, amevcntvoff15_el2
 [^:]*:	d51cdac0 	msr	amevcntvoff16_el2, x0
-[^:]*:	d53cdae0 	mrs	x0, amevcntvoff17_el2
+[^:]*:	d53cdac0 	mrs	x0, amevcntvoff16_el2
 [^:]*:	d51cdae0 	msr	amevcntvoff17_el2, x0
-[^:]*:	d53cdb00 	mrs	x0, amevcntvoff18_el2
+[^:]*:	d53cdae0 	mrs	x0, amevcntvoff17_el2
 [^:]*:	d51cdb00 	msr	amevcntvoff18_el2, x0
-[^:]*:	d53cdb20 	mrs	x0, amevcntvoff19_el2
+[^:]*:	d53cdb00 	mrs	x0, amevcntvoff18_el2
 [^:]*:	d51cdb20 	msr	amevcntvoff19_el2, x0
-[^:]*:	d53cdb40 	mrs	x0, amevcntvoff110_el2
+[^:]*:	d53cdb20 	mrs	x0, amevcntvoff19_el2
 [^:]*:	d51cdb40 	msr	amevcntvoff110_el2, x0
-[^:]*:	d53cdb60 	mrs	x0, amevcntvoff111_el2
+[^:]*:	d53cdb40 	mrs	x0, amevcntvoff110_el2
 [^:]*:	d51cdb60 	msr	amevcntvoff111_el2, x0
-[^:]*:	d53cdb80 	mrs	x0, amevcntvoff112_el2
+[^:]*:	d53cdb60 	mrs	x0, amevcntvoff111_el2
 [^:]*:	d51cdb80 	msr	amevcntvoff112_el2, x0
-[^:]*:	d53cdba0 	mrs	x0, amevcntvoff113_el2
+[^:]*:	d53cdb80 	mrs	x0, amevcntvoff112_el2
 [^:]*:	d51cdba0 	msr	amevcntvoff113_el2, x0
-[^:]*:	d53cdbc0 	mrs	x0, amevcntvoff114_el2
+[^:]*:	d53cdba0 	mrs	x0, amevcntvoff113_el2
 [^:]*:	d51cdbc0 	msr	amevcntvoff114_el2, x0
-[^:]*:	d53cdbe0 	mrs	x0, amevcntvoff115_el2
+[^:]*:	d53cdbc0 	mrs	x0, amevcntvoff114_el2
 [^:]*:	d51cdbe0 	msr	amevcntvoff115_el2, x0
-[^:]*:	d53ce0c0 	mrs	x0, cntpoff_el2
+[^:]*:	d53cdbe0 	mrs	x0, amevcntvoff115_el2
 [^:]*:	d51ce0c0 	msr	cntpoff_el2, x0
-[^:]*:	d5389920 	mrs	x0, pmsnevfr_el1
+[^:]*:	d53ce0c0 	mrs	x0, cntpoff_el2
 [^:]*:	d5189920 	msr	pmsnevfr_el1, x0
-[^:]*:	d53c1240 	mrs	x0, hcrx_el2
+[^:]*:	d5389920 	mrs	x0, pmsnevfr_el1
 [^:]*:	d51c1240 	msr	hcrx_el2, x0
-[^:]*:	d538d0c0 	mrs	x0, rcwmask_el1
+[^:]*:	d53c1240 	mrs	x0, hcrx_el2
 [^:]*:	d518d0c0 	msr	rcwmask_el1, x0
-[^:]*:	d538d060 	mrs	x0, rcwsmask_el1
+[^:]*:	d538d0c0 	mrs	x0, rcwmask_el1
 [^:]*:	d518d060 	msr	rcwsmask_el1, x0
+[^:]*:	d538d060 	mrs	x0, rcwsmask_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
index bf555d23b82..04bd30d08d1 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
@@ -7,8 +7,8 @@
 	.endm
 
 	.macro	rwreg, name
-	mrs	x0, \name
 	msr	\name, x0
+	mrs	x0, \name
 	.endm
 
 	roreg	id_dfr1_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sysreg.d
index 90b5be3cabf..6dfad54a72c 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg.d
@@ -24,12 +24,12 @@ Disassembly of section \.text:
 .*:	d5380260 	mrs	x0, id_isar3_el1
 .*:	d5380280 	mrs	x0, id_isar4_el1
 .*:	d53802a0 	mrs	x0, id_isar5_el1
-.*:	d538cf00 	mrs	x0, s3_0_c12_c15_0
-.*:	d5384b00 	mrs	x0, s3_0_c4_c11_0
-.*:	d5184b00 	msr	s3_0_c4_c11_0, x0
-.*:	d5310300 	mrs	x0, trcstatr
-.*:	d5110300 	msr	trcstatr, x0
 .*:	d5380640 	mrs	x0, id_aa64isar2_el1
 .*:	d538065e 	mrs	x30, id_aa64isar2_el1
 .*:	d5380660 	mrs	x0, id_aa64isar3_el1
 .*:	d538067e 	mrs	x30, id_aa64isar3_el1
+.*:	d538cf00 	mrs	x0, s3_0_c12_c15_0
+.*:	d5184b00 	msr	s3_0_c4_c11_0, x0
+.*:	d5384b00 	mrs	x0, s3_0_c4_c11_0
+.*:	d5110300 	msr	trcstatr, x0
+.*:	d5310300 	mrs	x0, trcstatr
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg.s b/gas/testsuite/gas/aarch64/sysreg/sysreg.s
index a3f5b793620..998f31596bd 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg.s
@@ -24,15 +24,15 @@
 	mrs x0, id_isar4_el1
 	mrs x0, id_isar5_el1
 
-	mrs x0, s3_0_c12_c15_0
-	mrs x0, s3_0_c4_c11_0
-	msr s3_0_c4_c11_0, x0
-
-	mrs x0, s2_1_c0_c3_0
-	msr s2_1_c0_c3_0, x0
-
 	mrs x0, id_aa64isar2_el1
 	mrs x30, id_aa64isar2_el1
 
 	mrs x0, id_aa64isar3_el1
 	mrs x30, id_aa64isar3_el1
+
+	mrs x0, s3_0_c12_c15_0
+	msr s3_0_c4_c11_0, x0
+	mrs x0, s3_0_c4_c11_0
+
+	msr s2_1_c0_c3_0, x0
+	mrs x0, s2_1_c0_c3_0
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
index cb895c64503..2998c7b79a2 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
@@ -6,23 +6,23 @@
 Disassembly of section \.text:
 
 0+ <\.text>:
-[^:]*:	d5787402 	mrrs	x2, x3, par_el1
 [^:]*:	d5587402 	msrr	par_el1, x2, x3
-[^:]*:	d578d0c2 	mrrs	x2, x3, rcwmask_el1
+[^:]*:	d5787402 	mrrs	x2, x3, par_el1
 [^:]*:	d558d0c2 	msrr	rcwmask_el1, x2, x3
-[^:]*:	d578d062 	mrrs	x2, x3, rcwsmask_el1
+[^:]*:	d578d0c2 	mrrs	x2, x3, rcwmask_el1
 [^:]*:	d558d062 	msrr	rcwsmask_el1, x2, x3
-[^:]*:	d5782002 	mrrs	x2, x3, ttbr0_el1
+[^:]*:	d578d062 	mrrs	x2, x3, rcwsmask_el1
 [^:]*:	d5582002 	msrr	ttbr0_el1, x2, x3
-[^:]*:	d57d2002 	mrrs	x2, x3, ttbr0_el12
+[^:]*:	d5782002 	mrrs	x2, x3, ttbr0_el1
 [^:]*:	d55d2002 	msrr	ttbr0_el12, x2, x3
-[^:]*:	d57c2002 	mrrs	x2, x3, ttbr0_el2
+[^:]*:	d57d2002 	mrrs	x2, x3, ttbr0_el12
 [^:]*:	d55c2002 	msrr	ttbr0_el2, x2, x3
-[^:]*:	d5782022 	mrrs	x2, x3, ttbr1_el1
+[^:]*:	d57c2002 	mrrs	x2, x3, ttbr0_el2
 [^:]*:	d5582022 	msrr	ttbr1_el1, x2, x3
-[^:]*:	d57d2022 	mrrs	x2, x3, ttbr1_el12
+[^:]*:	d5782022 	mrrs	x2, x3, ttbr1_el1
 [^:]*:	d55d2022 	msrr	ttbr1_el12, x2, x3
-[^:]*:	d57c2022 	mrrs	x2, x3, ttbr1_el2
+[^:]*:	d57d2022 	mrrs	x2, x3, ttbr1_el12
 [^:]*:	d55c2022 	msrr	ttbr1_el2, x2, x3
-[^:]*:	d57c2102 	mrrs	x2, x3, vttbr_el2
-[^:]*:	d55c2102 	msrr	vttbr_el2, x2, x3
\ No newline at end of file
+[^:]*:	d57c2022 	mrrs	x2, x3, ttbr1_el2
+[^:]*:	d55c2102 	msrr	vttbr_el2, x2, x3
+[^:]*:	d57c2102 	mrrs	x2, x3, vttbr_el2
\ No newline at end of file
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.s b/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
index 09c9dace9b5..ee1d7cda3fa 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
@@ -1,8 +1,8 @@
 	.arch armv9.4-a+d128+the
 
 	.macro	rwreg128, name
-	mrrs	x2, x3, \name
 	msrr	\name, x2, x3
+	mrrs	x2, x3, \name
 	.endm
 
 	rwreg128	par_el1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them
  2024-02-27 10:59 [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
                   ` (2 preceding siblings ...)
  2024-02-27 10:59 ` [PATCH v1 3/4] aarch64: testsuite: reorder write and read to match macro order Matthieu Longo
@ 2024-02-27 10:59 ` Matthieu Longo
  2024-02-27 16:31   ` Andrew Carlotti
  2024-04-24 10:48 ` [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
  4 siblings, 1 reply; 9+ messages in thread
From: Matthieu Longo @ 2024-02-27 10:59 UTC (permalink / raw)
  To: binutils; +Cc: Richard Earnshaw, Nick Clifton, Matthieu Longo

[-- Attachment #1: Type: text/plain, Size: 1605 bytes --]


This patch rewrites assembly tests to use utils macros declared in
sysreg-test-utils.inc. Some tests were adapted to use the new macro
rw_sys_reg.
---
 .../aarch64/sysreg/armv8_9-a-sysregs-bad.d    |   2 +-
 .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    |  90 ++++-
 .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |   3 +-
 .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    | 139 +++----
 .../gas/aarch64/sysreg/illegal-sysreg-3.d     |   2 +-
 .../gas/aarch64/sysreg/illegal-sysreg-4.d     |   2 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-1.d   |   2 +
 gas/testsuite/gas/aarch64/sysreg/sysreg-1.s   | 223 ++++++------
 gas/testsuite/gas/aarch64/sysreg/sysreg-2.d   |   3 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-2.s   |  47 ++-
 gas/testsuite/gas/aarch64/sysreg/sysreg-3.d   |   3 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-3.s   |  25 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-6.d   |   2 +
 gas/testsuite/gas/aarch64/sysreg/sysreg-6.s   |   7 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |   2 +
 gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  32 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   |   2 +
 gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   | 339 +++++++++---------
 .../gas/aarch64/sysreg/sysreg-test-utils.inc  |  32 ++
 gas/testsuite/gas/aarch64/sysreg/sysreg.d     |   6 +-
 gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  63 ++--
 gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  42 +--
 gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |  27 +-
 23 files changed, 576 insertions(+), 519 deletions(-)
 create mode 100644 gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v1-0004-aarch64-testsuite-share-test-utils-macros-and-use.patch --]
[-- Type: text/x-patch; name="v1-0004-aarch64-testsuite-share-test-utils-macros-and-use.patch", Size: 51098 bytes --]

diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
index 2471b6b52c3..1160ec02ff7 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
@@ -1,3 +1,3 @@
-#as: -march=armv8.8-a
 #source: armv8_9-a-sysregs.s
+#as: -march=armv8.8-a -I$srcdir/$subdir
 #error_output: armv8_9-a-sysregs-bad.l
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
index d98c2ed573a..05431cc501b 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
@@ -1,90 +1,170 @@
 .*: Assembler messages:
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'erxgsr_el1'
 .*: Error: selected processor does not support system register name 'sctlr2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'sctlr2_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hfgrtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hfgrtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hfgwtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hfgwtr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pfar_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pfar_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pfar_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pfar_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pfar_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pfar_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 's1e1a'
 .*: Error: selected processor does not support system register name 's1e2a'
 .*: Error: selected processor does not support system register name 's1e3a'
 .*: Error: selected processor does not support system register name 'amair2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mair2_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pir_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pire0_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pire0_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pire0_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pire0_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pire0_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pire0_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 's2pir_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 's2pir_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el0'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el0'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'por_el3'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 's2por_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 's2por_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'tcr2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'tcr2_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'tcr2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'tcr2_el12'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'tcr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'tcr2_el2'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mdselr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'mdselr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmuacr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmuacr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmccntsvr_el1'
 .*: Error: selected processor does not support system register name 'pmicntsvr_el1'
 .*: Error: selected processor does not support system register name 'pmsscr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmsscr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmevcntsvr0_el1'
 .*: Error: selected processor does not support system register name 'pmevcntsvr10_el1'
 .*: Error: selected processor does not support system register name 'pmevcntsvr11_el1'
@@ -116,11 +196,19 @@
 .*: Error: selected processor does not support system register name 'pmevcntsvr8_el1'
 .*: Error: selected processor does not support system register name 'pmevcntsvr9_el1'
 .*: Error: selected processor does not support system register name 'pmicntr_el0'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmicntr_el0'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmicfiltr_el0'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmicfiltr_el0'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmzr_el0'
 .*: Error: selected processor does not support system register name 'pmecr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmecr_el1'
+.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'pmiar_el1'
-.*: Error: selected processor does not support system register name 'pmiar_el1'
\ No newline at end of file
+.*:  Info: macro invoked from here
+.*: Error: selected processor does not support system register name 'pmiar_el1'
+.*:  Info: macro invoked from here
\ No newline at end of file
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
index ac32b80b40c..9913c2be6d3 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
@@ -1,4 +1,5 @@
-#as: -march=armv8.9-a
+#source: armv8_9-a-sysregs.s
+#as: -march=armv8.9-a -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
index bf9019c9ac8..318d8bb9097 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
@@ -1,32 +1,23 @@
-	msr PMSDSFR_EL1, x3
-	mrs x3, PMSDSFR_EL1
+	.include "sysreg-test-utils.inc"
+
+.text
+	rw_sys_reg sys_reg=PMSDSFR_EL1 xreg=x3 r=1 w=1
 
 	mrs x0, ERXGSR_EL1
 
-	msr SCTLR2_EL1, x3
-	mrs x3, SCTLR2_EL1
-	msr SCTLR2_EL12, x3
-	mrs x3, SCTLR2_EL12
-	msr SCTLR2_EL2, x3
-	mrs x3, SCTLR2_EL2
-	msr SCTLR2_EL3, x3
-	mrs x3, SCTLR2_EL3
-
-	msr HDFGRTR2_EL2, x3
-	mrs x3, HDFGRTR2_EL2
-	msr HDFGWTR2_EL2, x3
-	mrs x3, HDFGWTR2_EL2
-	msr HFGRTR2_EL2, x3
-	mrs x3, HFGRTR2_EL2
-	msr HFGWTR2_EL2, x3
-	mrs x3, HFGWTR2_EL2
-
-	msr PFAR_EL1, x0
-	mrs x0, PFAR_EL1
-	msr PFAR_EL2, x0
-	mrs x0, PFAR_EL2
-	msr PFAR_EL12, x0
-	mrs x0, PFAR_EL12
+	rw_sys_reg sys_reg=SCTLR2_EL1 xreg=x3 r=1 w=1
+	rw_sys_reg sys_reg=SCTLR2_EL12 xreg=x3 r=1 w=1
+	rw_sys_reg sys_reg=SCTLR2_EL2 xreg=x3 r=1 w=1
+	rw_sys_reg sys_reg=SCTLR2_EL3 xreg=x3 r=1 w=1
+
+	rw_sys_reg sys_reg=HDFGRTR2_EL2 xreg=x3 r=1 w=1
+	rw_sys_reg sys_reg=HDFGWTR2_EL2 xreg=x3 r=1 w=1
+	rw_sys_reg sys_reg=HFGRTR2_EL2 xreg=x3 r=1 w=1
+	rw_sys_reg sys_reg=HFGWTR2_EL2 xreg=x3 r=1 w=1
+
+	rw_sys_reg sys_reg=PFAR_EL1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=PFAR_EL2 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=PFAR_EL12 xreg=x0 r=1 w=1
 
 	/* AT.  */
 	at s1e1a, x1
@@ -34,80 +25,52 @@
 	at s1e3a, x5
 
 	/* FEAT_AIE.  */
-	msr amair2_el1, x0
-	mrs x0, amair2_el1
-	msr amair2_el12, x0
-	mrs x0, amair2_el12
-	msr amair2_el2, x0
-	mrs x0, amair2_el2
-	msr amair2_el3, x0
-	mrs x0, amair2_el3
-	msr mair2_el1, x0
-	mrs x0, mair2_el1
-	msr mair2_el12, x0
-	mrs x0, mair2_el12
-	msr mair2_el2, x0
-	mrs x0, mair2_el2
-	msr mair2_el3, x0
-	mrs x0, mair2_el3
+	rw_sys_reg sys_reg=amair2_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=amair2_el12 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=amair2_el2 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=amair2_el3 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=mair2_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=mair2_el12 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=mair2_el2 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=mair2_el3 xreg=x0 r=1 w=1
 
 	/* FEAT_S1PIE.  */
-	msr pir_el1, x0
-	mrs x0, pir_el1
-	msr pir_el12, x0
-	mrs x0, pir_el12
-	msr pir_el2, x0
-	mrs x0, pir_el2
-	msr pir_el3, x0
-	mrs x0, pir_el3
-	msr pire0_el1, x0
-	mrs x0, pire0_el1
-	msr pire0_el12, x0
-	mrs x0, pire0_el12
-	msr pire0_el2, x0
-	mrs x0, pire0_el2
+	rw_sys_reg sys_reg=pir_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pir_el12 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pir_el2 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pir_el3 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pire0_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pire0_el12 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pire0_el2 xreg=x0 r=1 w=1
 
 	/* FEAT_S2PIE.  */
-	msr s2pir_el2, x0
-	mrs x0, s2pir_el2
+	rw_sys_reg sys_reg=s2pir_el2 xreg=x0 r=1 w=1
 
 	/* FEAT_S1POE.  */
-	msr por_el0, x0
-	mrs x0, por_el0
-	msr por_el1, x0
-	mrs x0, por_el1
-	msr por_el12, x0
-	mrs x0, por_el12
-	msr por_el2, x0
-	mrs x0, por_el2
-	msr por_el3, x0
-	mrs x0, por_el3
+	rw_sys_reg sys_reg=por_el0 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=por_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=por_el12 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=por_el2 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=por_el3 xreg=x0 r=1 w=1
 
 	/* FEAT_S21POE.  */
-	msr s2por_el1, x0
-	mrs x0, s2por_el1
+	rw_sys_reg sys_reg=s2por_el1 xreg=x0 r=1 w=1
 
 	/* FEAT_TCR2.  */
-	msr tcr2_el1, x0
-	mrs x0, tcr2_el1
-	msr tcr2_el12, x0
-	mrs x0, tcr2_el12
-	msr tcr2_el2, x0
-	mrs x0, tcr2_el2
+	rw_sys_reg sys_reg=tcr2_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=tcr2_el12 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=tcr2_el2 xreg=x0 r=1 w=1
 
 	/* FEAT_DEBUGv8p9 Extension.  */
-	msr mdselr_el1, x0
-	mrs x0, mdselr_el1
+	rw_sys_reg sys_reg=mdselr_el1 xreg=x0 r=1 w=1
 
 	/* FEAT_PMUv3p9 Extension.  */
-	msr pmuacr_el1, x0
-	mrs x0, pmuacr_el1
+	rw_sys_reg sys_reg=pmuacr_el1 xreg=x0 r=1 w=1
 
 	/* FEAT_PMUv3_SS Extension.  */
 	mrs x0, pmccntsvr_el1
 	mrs x0, pmicntsvr_el1
-	msr pmsscr_el1, x0
-	mrs x0, pmsscr_el1
+	rw_sys_reg sys_reg=pmsscr_el1 xreg=x0 r=1 w=1
 	mrs x0, pmevcntsvr0_el1
 	mrs x0, pmevcntsvr10_el1
 	mrs x0, pmevcntsvr11_el1
@@ -140,14 +103,10 @@
 	mrs x0, pmevcntsvr9_el1
 
 	/* FEAT_PMUv3_ICNTR Extension.  */
-	msr pmicntr_el0, x0
-	mrs x0, pmicntr_el0
-	msr pmicfiltr_el0, x0
-	mrs x0, pmicfiltr_el0
+	rw_sys_reg sys_reg=pmicntr_el0 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pmicfiltr_el0 xreg=x0 r=1 w=1
 	msr pmzr_el0, x0
 
 	/* FEAT_SEBEP Extension.  */
-	msr pmecr_el1, x0
-	mrs x0, pmecr_el1
-	msr pmiar_el1, x0
-	mrs x0, pmiar_el1
+	rw_sys_reg sys_reg=pmecr_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=pmiar_el1 xreg=x0 r=1 w=1
diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d
index 932eb542431..6918395a9ab 100644
--- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d
+++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d
@@ -1,3 +1,3 @@
-#as: -march=armv8-a
 #source: sysreg-3.s
+#as: -march=armv8-a -I$srcdir/$subdir
 #error_output: illegal-sysreg-3.l
diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d
index e1815665d96..34dd4e4ac48 100644
--- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d
+++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d
@@ -1,3 +1,3 @@
-#as: -march=armv8-a
 #source: sysreg-4.s
+#as: -march=armv8-a
 #error_output: illegal-sysreg-4.l
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d
index fb9991d1116..cecb1ad88ee 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d
@@ -1,3 +1,5 @@
+#source: sysreg-1.s
+#as: -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-1.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-1.s
index 82a86d38fb4..16d8f931403 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-1.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-1.s
@@ -19,111 +19,104 @@
    along with this program; see the file COPYING3. If not,
    see <http://www.gnu.org/licenses/>.  */
 
-	.macro rw_sys_reg sys_reg xreg r w
-	.ifc \w, 1
-	msr \sys_reg, \xreg
-	.endif
-	.ifc \r, 1
-	mrs \xreg, \sys_reg
-	.endif
-	.endm
+	.include "sysreg-test-utils.inc"
 
 	.text
 
-	rw_sys_reg sys_reg=id_aa64afr0_el1 xreg=x7 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64afr1_el1 xreg=x7 r=1 w=0
-	rw_sys_reg sys_reg=mvfr2_el1 xreg=x7 r=1 w=0
-	rw_sys_reg sys_reg=dlr_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=dspsr_el0 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=sder32_el3 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=mdcr_el3 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=mdccint_el1 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=dbgvcr32_el2 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=fpexc32_el2 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=teecr32_el1 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=teehbr32_el1 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=cntp_tval_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=cntp_ctl_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=cntp_cval_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=cntps_tval_el1 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=cntps_ctl_el1 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=cntps_cval_el1 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=pmccntr_el0 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=pmevcntr0_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr1_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr2_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr3_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr4_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr5_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr6_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr7_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr8_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr9_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr10_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr11_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr12_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr13_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr14_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr15_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr16_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr17_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr18_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr19_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr20_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr21_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr22_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr23_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr24_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr25_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr26_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr27_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr28_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr29_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevcntr30_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper0_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper1_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper2_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper3_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper4_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper5_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper6_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper7_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper8_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper9_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper10_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper11_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper12_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper13_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper14_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper15_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper16_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper17_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper18_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper19_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper20_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper21_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper22_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper23_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper24_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper25_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper26_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper27_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper28_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper29_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmevtyper30_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=pmccfiltr_el0 xreg=x7 r=1 w=1
-
-	rw_sys_reg sys_reg=tpidrro_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=tpidr_el0 xreg=x7 r=1 w=1
-	rw_sys_reg sys_reg=cntfrq_el0 xreg=x7 r=1 w=1
+	rw_sys_reg sys_reg=id_aa64afr0_el1 xreg=x7 w=0
+	rw_sys_reg sys_reg=id_aa64afr1_el1 xreg=x7 w=0
+	rw_sys_reg sys_reg=mvfr2_el1 xreg=x7 w=0
+	rw_sys_reg sys_reg=dlr_el0 xreg=x7
+	rw_sys_reg sys_reg=dspsr_el0 xreg=x7
+
+	rw_sys_reg sys_reg=sder32_el3 xreg=x7
+	rw_sys_reg sys_reg=mdcr_el3 xreg=x7
+
+	rw_sys_reg sys_reg=mdccint_el1 xreg=x7
+
+	rw_sys_reg sys_reg=dbgvcr32_el2 xreg=x7
+
+	rw_sys_reg sys_reg=fpexc32_el2 xreg=x7
+
+	rw_sys_reg sys_reg=teecr32_el1 xreg=x7
+	rw_sys_reg sys_reg=teehbr32_el1 xreg=x7
+
+	rw_sys_reg sys_reg=cntp_tval_el0 xreg=x7
+	rw_sys_reg sys_reg=cntp_ctl_el0 xreg=x7
+	rw_sys_reg sys_reg=cntp_cval_el0 xreg=x7
+	rw_sys_reg sys_reg=cntps_tval_el1 xreg=x7
+	rw_sys_reg sys_reg=cntps_ctl_el1 xreg=x7
+	rw_sys_reg sys_reg=cntps_cval_el1 xreg=x7
+
+	rw_sys_reg sys_reg=pmccntr_el0 xreg=x7
+
+	rw_sys_reg sys_reg=pmevcntr0_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr1_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr2_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr3_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr4_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr5_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr6_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr7_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr8_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr9_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr10_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr11_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr12_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr13_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr14_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr15_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr16_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr17_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr18_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr19_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr20_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr21_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr22_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr23_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr24_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr25_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr26_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr27_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr28_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr29_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevcntr30_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper0_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper1_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper2_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper3_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper4_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper5_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper6_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper7_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper8_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper9_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper10_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper11_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper12_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper13_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper14_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper15_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper16_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper17_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper18_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper19_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper20_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper21_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper22_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper23_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper24_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper25_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper26_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper27_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper28_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper29_el0 xreg=x7
+	rw_sys_reg sys_reg=pmevtyper30_el0 xreg=x7
+	rw_sys_reg sys_reg=pmccfiltr_el0 xreg=x7
+
+	rw_sys_reg sys_reg=tpidrro_el0 xreg=x7
+	rw_sys_reg sys_reg=tpidr_el0 xreg=x7
+	rw_sys_reg sys_reg=cntfrq_el0 xreg=x7
 
 	//
 	// Macros to generate MRS and MSR with all the implementation defined
@@ -156,19 +149,19 @@
 	all_imple_defined	0, 7
 	.noaltmacro
 
-	rw_sys_reg sys_reg=dbgdtr_el0 xreg=x15 r=1 w=1
-	rw_sys_reg sys_reg=dbgdtrrx_el0 xreg=x15 r=1 w=0
+	rw_sys_reg sys_reg=dbgdtr_el0 xreg=x15
+	rw_sys_reg sys_reg=dbgdtrrx_el0 xreg=x15 w=0
 
-	rw_sys_reg sys_reg=rmr_el1 xreg=x15 r=1 w=1
-	rw_sys_reg sys_reg=rmr_el2 xreg=x15 r=1 w=1
-	rw_sys_reg sys_reg=rmr_el3 xreg=x15 r=1 w=1
+	rw_sys_reg sys_reg=rmr_el1 xreg=x15
+	rw_sys_reg sys_reg=rmr_el2 xreg=x15
+	rw_sys_reg sys_reg=rmr_el3 xreg=x15
 
-	rw_sys_reg sys_reg=spsr_el1 xreg=x15 r=1 w=1
-	rw_sys_reg sys_reg=spsr_el2 xreg=x15 r=1 w=1
-	rw_sys_reg sys_reg=spsr_el3 xreg=x15 r=1 w=1
+	rw_sys_reg sys_reg=spsr_el1 xreg=x15
+	rw_sys_reg sys_reg=spsr_el2 xreg=x15
+	rw_sys_reg sys_reg=spsr_el3 xreg=x15
 
-	rw_sys_reg sys_reg=s0_0_C0_C0_0 xreg=x15 r=1 w=1
-	rw_sys_reg sys_reg=s1_7_C15_C15_7 xreg=x27 r=1 w=1
-	rw_sys_reg sys_reg=s2_4_C6_C8_0 xreg=x14 r=1 w=1
-	rw_sys_reg sys_reg=s1_2_C14_C4_2 xreg=x4 r=1 w=1
-	rw_sys_reg sys_reg=s0_1_C13_C1_3 xreg=x7 r=1 w=1
+	rw_sys_reg sys_reg=s0_0_C0_C0_0 xreg=x15
+	rw_sys_reg sys_reg=s1_7_C15_C15_7 xreg=x27
+	rw_sys_reg sys_reg=s2_4_C6_C8_0 xreg=x14
+	rw_sys_reg sys_reg=s1_2_C14_C4_2 xreg=x4
+	rw_sys_reg sys_reg=s0_1_C13_C1_3 xreg=x7
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
index 0a3a0c7d6b4..1845902137e 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
@@ -1,5 +1,6 @@
+#source: sysreg-2.s
+#as: -march=armv8.2-a+profile -I$srcdir/$subdir
 #objdump: -dr
-#as: -march=armv8.2-a+profile
 
 .*:     file .*
 
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s
index 315e6411849..5ffb83a82f5 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.s
@@ -1,37 +1,30 @@
 /* sysreg-2.s Test file for ARMv8.2 system registers.  */
 
-	.macro rw_sys_reg sys_reg xreg r w
-	.ifc \w, 1
-	msr \sys_reg, \xreg
-	.endif
-	.ifc \r, 1
-	mrs \xreg, \sys_reg
-	.endif
-	.endm
+	.include "sysreg-test-utils.inc"
 
 	.text
 
-	rw_sys_reg sys_reg=id_aa64mmfr1_el1 xreg=x0 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64mmfr2_el1 xreg=x0 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64mmfr3_el1 xreg=x0 r=1 w=0
-	rw_sys_reg sys_reg=id_aa64mmfr4_el1 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr1_el1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr2_el1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr3_el1 w=0
+	rw_sys_reg sys_reg=id_aa64mmfr4_el1 w=0
 
 	/* RAS extension.  */
 
-	rw_sys_reg sys_reg=erridr_el1 xreg=x0 r=1 w=0
-	rw_sys_reg sys_reg=errselr_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=erridr_el1 w=0
+	rw_sys_reg sys_reg=errselr_el1
 
-	rw_sys_reg sys_reg=erxfr_el1 xreg=x0 r=1 w=0
-	rw_sys_reg sys_reg=erxctlr_el1 xreg=x0 r=1 w=1
-	rw_sys_reg sys_reg=erxstatus_el1 xreg=x0 r=1 w=1
-	rw_sys_reg sys_reg=erxaddr_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=erxfr_el1 w=0
+	rw_sys_reg sys_reg=erxctlr_el1
+	rw_sys_reg sys_reg=erxstatus_el1
+	rw_sys_reg sys_reg=erxaddr_el1
 
-	rw_sys_reg sys_reg=erxmisc0_el1 xreg=x0 r=1 w=1
-	rw_sys_reg sys_reg=erxmisc1_el1 xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=erxmisc0_el1
+	rw_sys_reg sys_reg=erxmisc1_el1
 
-	rw_sys_reg sys_reg=vsesr_el2 xreg=x0 r=1 w=0
-	rw_sys_reg sys_reg=disr_el1 xreg=x0 r=1 w=1
-	rw_sys_reg sys_reg=vdisr_el2 xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=vsesr_el2 w=0
+	rw_sys_reg sys_reg=disr_el1
+	rw_sys_reg sys_reg=vdisr_el2 w=0
 
 	/* DC CVAP.  */
 
@@ -47,17 +40,17 @@
 	/* Statistical profiling.  */
 
 	.irp reg, pmblimitr_el1, pmbptr_el1, pmbsr_el1
-	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=\reg
 	.endr
 
 	.irp reg, pmscr_el1, pmsicr_el1, pmsirr_el1, pmsfcr_el1
-	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=\reg
 	.endr
 
 	.irp reg, pmsevfr_el1, pmslatfr_el1, pmscr_el2, pmscr_el12
-	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=1
+	rw_sys_reg sys_reg=\reg
 	.endr
 
 	.irp reg, pmbidr_el1, pmsidr_el1
-	rw_sys_reg sys_reg=\reg xreg=x0 r=1 w=0
+	rw_sys_reg sys_reg=\reg w=0
 	.endr
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
index 5ed05d6916c..0135762663a 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
@@ -1,5 +1,6 @@
+#source: sysreg-3.s
+#as: -march=armv8.3-a -I$srcdir/$subdir
 #objdump: -dr
-#as: -march=armv8.3-a
 
 .*:     file .*
 
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s
index b45f89fcf27..53c6da8104d 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.s
@@ -1,21 +1,18 @@
 /* sysreg-3.s Test file for ARMv8.3 system registers.  */
 
-	.macro test sys_reg xreg
-	msr \sys_reg, \xreg
-	mrs \xreg, \sys_reg
-	.endm
+	.include "sysreg-test-utils.inc"
 
 	.text
 
-	test sys_reg=apiakeylo_el1 xreg=x0
-	test sys_reg=apiakeyhi_el1 xreg=x0
-	test sys_reg=apibkeylo_el1 xreg=x0
-	test sys_reg=apibkeyhi_el1 xreg=x0
+	rw_sys_reg sys_reg=apiakeylo_el1
+	rw_sys_reg sys_reg=apiakeyhi_el1
+	rw_sys_reg sys_reg=apibkeylo_el1
+	rw_sys_reg sys_reg=apibkeyhi_el1
 
-	test sys_reg=apdakeylo_el1 xreg=x0
-	test sys_reg=apdakeyhi_el1 xreg=x0
-	test sys_reg=apdbkeylo_el1 xreg=x0
-	test sys_reg=apdbkeyhi_el1 xreg=x0
+	rw_sys_reg sys_reg=apdakeylo_el1
+	rw_sys_reg sys_reg=apdakeyhi_el1
+	rw_sys_reg sys_reg=apdbkeylo_el1
+	rw_sys_reg sys_reg=apdbkeyhi_el1
 
-	test sys_reg=apgakeylo_el1 xreg=x0
-	test sys_reg=apgakeyhi_el1 xreg=x0
+	rw_sys_reg sys_reg=apgakeylo_el1
+	rw_sys_reg sys_reg=apgakeyhi_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d
index ac928ce3037..cb9c46e26b6 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d
@@ -1,3 +1,5 @@
+#source: sysreg-6.s
+#as: -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-6.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-6.s
index c6772ae732d..16129859095 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-6.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-6.s
@@ -1,2 +1,5 @@
-msr hcr_el2, x0
-mrs x0,hcr_el2
+	.include "sysreg-test-utils.inc"
+
+	.text
+
+	rw_sys_reg sys_reg=hcr_el2
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
index 5d74fd7056b..846ab8b96ab 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
@@ -1,3 +1,5 @@
+#source: sysreg-7.s
+#as: -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s
index 8354a44a813..e371f19bcfb 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.s
@@ -1,20 +1,16 @@
-.arch armv8-a+lor
+	.include "sysreg-test-utils.inc"
 
-msr lorc_el1, x0
-mrs x0, lorc_el1
-msr lorea_el1, x0
-mrs x0, lorea_el1
-msr lorn_el1, x0
-mrs x0, lorn_el1
-msr lorsa_el1, x0
-mrs x0, lorsa_el1
-msr icc_ctlr_el3, x0
-mrs x0, icc_ctlr_el3
-msr icc_sre_el1, x0
-mrs x0, icc_sre_el1
-msr icc_sre_el2, x0
-mrs x0, icc_sre_el2
-msr icc_sre_el3, x0
-mrs x0, icc_sre_el3
+	.text
 
-mrs x0, ich_vtr_el2
+	.arch armv8-a+lor
+
+	rw_sys_reg sys_reg=lorc_el1
+	rw_sys_reg sys_reg=lorea_el1
+	rw_sys_reg sys_reg=lorn_el1
+	rw_sys_reg sys_reg=lorsa_el1
+	rw_sys_reg sys_reg=icc_ctlr_el3
+	rw_sys_reg sys_reg=icc_sre_el1
+	rw_sys_reg sys_reg=icc_sre_el2
+	rw_sys_reg sys_reg=icc_sre_el3
+
+	rw_sys_reg sys_reg=ich_vtr_el2 w=0
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
index d93b4c7da40..4ee851fc32d 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
@@ -1,3 +1,5 @@
+#source: sysreg-8.s
+#as: -I$srcdir/$subdir
 #objdump: -dr
 
 .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
index 04bd30d08d1..0cf1178542a 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
@@ -1,192 +1,183 @@
-	.macro	roreg, name
-	mrs	x0, \name
-	.endm
-
-	.macro	woreg, name
-	msr	\name, x0
-	.endm
-
-	.macro	rwreg, name
-	msr	\name, x0
-	mrs	x0, \name
-	.endm
-
-	roreg	id_dfr1_el1
-	roreg	id_mmfr5_el1
-	roreg	id_isar6_el1
-
-	rwreg	icc_pmr_el1
-	roreg	icc_iar0_el1
-	woreg	icc_eoir0_el1
-	roreg	icc_hppir0_el1
-	rwreg	icc_bpr0_el1
-	rwreg	icc_ap0r0_el1
-	rwreg	icc_ap0r1_el1
-	rwreg	icc_ap0r2_el1
-	rwreg	icc_ap0r3_el1
-	rwreg	icc_ap1r0_el1
-	rwreg	icc_ap1r1_el1
-	rwreg	icc_ap1r2_el1
-	rwreg	icc_ap1r3_el1
-	woreg	icc_dir_el1
-	roreg	icc_rpr_el1
-	woreg	icc_sgi1r_el1
-	woreg	icc_asgi1r_el1
-	woreg	icc_sgi0r_el1
-	roreg	icc_iar1_el1
-	woreg	icc_eoir1_el1
-	roreg	icc_hppir1_el1
-	rwreg	icc_bpr1_el1
-	rwreg	icc_ctlr_el1
-	rwreg	icc_igrpen0_el1
-	rwreg	icc_igrpen1_el1
-	rwreg	ich_ap0r0_el2
-	rwreg	ich_ap0r1_el2
-	rwreg	ich_ap0r2_el2
-	rwreg	ich_ap0r3_el2
-	rwreg	ich_ap1r0_el2
-	rwreg	ich_ap1r1_el2
-	rwreg	ich_ap1r2_el2
-	rwreg	ich_ap1r3_el2
-	rwreg	ich_hcr_el2
-	roreg	ich_misr_el2
-	roreg	ich_eisr_el2
-	roreg	ich_elrsr_el2
-	rwreg	ich_vmcr_el2
-	rwreg	ich_lr0_el2
-	rwreg	ich_lr1_el2
-	rwreg	ich_lr2_el2
-	rwreg	ich_lr3_el2
-	rwreg	ich_lr4_el2
-	rwreg	ich_lr5_el2
-	rwreg	ich_lr6_el2
-	rwreg	ich_lr7_el2
-	rwreg	ich_lr8_el2
-	rwreg	ich_lr9_el2
-	rwreg	ich_lr10_el2
-	rwreg	ich_lr11_el2
-	rwreg	ich_lr12_el2
-	rwreg	ich_lr13_el2
-	rwreg	ich_lr14_el2
-	rwreg	ich_lr15_el2
-	rwreg	icc_igrpen1_el3
+	.include "sysreg-test-utils.inc"
+
+	.text
+
+	rw_sys_reg	id_dfr1_el1 w=0
+	rw_sys_reg	id_mmfr5_el1 w=0
+	rw_sys_reg	id_isar6_el1 w=0
+
+	rw_sys_reg	icc_pmr_el1
+	rw_sys_reg	icc_iar0_el1 w=0
+	rw_sys_reg	icc_eoir0_el1 r=0
+	rw_sys_reg	icc_hppir0_el1 w=0
+	rw_sys_reg	icc_bpr0_el1
+	rw_sys_reg	icc_ap0r0_el1
+	rw_sys_reg	icc_ap0r1_el1
+	rw_sys_reg	icc_ap0r2_el1
+	rw_sys_reg	icc_ap0r3_el1
+	rw_sys_reg	icc_ap1r0_el1
+	rw_sys_reg	icc_ap1r1_el1
+	rw_sys_reg	icc_ap1r2_el1
+	rw_sys_reg	icc_ap1r3_el1
+	rw_sys_reg	icc_dir_el1 r=0
+	rw_sys_reg	icc_rpr_el1 w=0
+	rw_sys_reg	icc_sgi1r_el1 r=0
+	rw_sys_reg	icc_asgi1r_el1 r=0
+	rw_sys_reg	icc_sgi0r_el1 r=0
+	rw_sys_reg	icc_iar1_el1 w=0
+	rw_sys_reg	icc_eoir1_el1 r=0
+	rw_sys_reg	icc_hppir1_el1 w=0
+	rw_sys_reg	icc_bpr1_el1
+	rw_sys_reg	icc_ctlr_el1
+	rw_sys_reg	icc_igrpen0_el1
+	rw_sys_reg	icc_igrpen1_el1
+	rw_sys_reg	ich_ap0r0_el2
+	rw_sys_reg	ich_ap0r1_el2
+	rw_sys_reg	ich_ap0r2_el2
+	rw_sys_reg	ich_ap0r3_el2
+	rw_sys_reg	ich_ap1r0_el2
+	rw_sys_reg	ich_ap1r1_el2
+	rw_sys_reg	ich_ap1r2_el2
+	rw_sys_reg	ich_ap1r3_el2
+	rw_sys_reg	ich_hcr_el2
+	rw_sys_reg	ich_misr_el2 w=0
+	rw_sys_reg	ich_eisr_el2 w=0
+	rw_sys_reg	ich_elrsr_el2 w=0
+	rw_sys_reg	ich_vmcr_el2
+	rw_sys_reg	ich_lr0_el2
+	rw_sys_reg	ich_lr1_el2
+	rw_sys_reg	ich_lr2_el2
+	rw_sys_reg	ich_lr3_el2
+	rw_sys_reg	ich_lr4_el2
+	rw_sys_reg	ich_lr5_el2
+	rw_sys_reg	ich_lr6_el2
+	rw_sys_reg	ich_lr7_el2
+	rw_sys_reg	ich_lr8_el2
+	rw_sys_reg	ich_lr9_el2
+	rw_sys_reg	ich_lr10_el2
+	rw_sys_reg	ich_lr11_el2
+	rw_sys_reg	ich_lr12_el2
+	rw_sys_reg	ich_lr13_el2
+	rw_sys_reg	ich_lr14_el2
+	rw_sys_reg	ich_lr15_el2
+	rw_sys_reg	icc_igrpen1_el3
 
 	.arch	armv8.1-a
 
-	roreg	lorid_el1
+	rw_sys_reg	lorid_el1 w=0
 
 	.arch	armv8.3-a
 
-	roreg	ccsidr2_el1
+	rw_sys_reg	ccsidr2_el1 w=0
 
 	.arch	armv8.4-a
 
-	rwreg	trfcr_el1
-	roreg	pmmir_el1
-	rwreg	trfcr_el2
-
-	rwreg	trfcr_el12
-
-	rwreg	amcr_el0
-	roreg	amcfgr_el0
-	roreg	amcgcr_el0
-	rwreg	amuserenr_el0
-	rwreg	amcntenclr0_el0
-	rwreg	amcntenset0_el0
-	rwreg	amcntenclr1_el0
-	rwreg	amcntenset1_el0
-	rwreg	amevcntr00_el0
-	rwreg	amevcntr01_el0
-	rwreg	amevcntr02_el0
-	rwreg	amevcntr03_el0
-	roreg	amevtyper00_el0
-	roreg	amevtyper01_el0
-	roreg	amevtyper02_el0
-	roreg	amevtyper03_el0
-	rwreg	amevcntr10_el0
-	rwreg	amevcntr11_el0
-	rwreg	amevcntr12_el0
-	rwreg	amevcntr13_el0
-	rwreg	amevcntr14_el0
-	rwreg	amevcntr15_el0
-	rwreg	amevcntr16_el0
-	rwreg	amevcntr17_el0
-	rwreg	amevcntr18_el0
-	rwreg	amevcntr19_el0
-	rwreg	amevcntr110_el0
-	rwreg	amevcntr111_el0
-	rwreg	amevcntr112_el0
-	rwreg	amevcntr113_el0
-	rwreg	amevcntr114_el0
-	rwreg	amevcntr115_el0
-	rwreg	amevtyper10_el0
-	rwreg	amevtyper11_el0
-	rwreg	amevtyper12_el0
-	rwreg	amevtyper13_el0
-	rwreg	amevtyper14_el0
-	rwreg	amevtyper15_el0
-	rwreg	amevtyper16_el0
-	rwreg	amevtyper17_el0
-	rwreg	amevtyper18_el0
-	rwreg	amevtyper19_el0
-	rwreg	amevtyper110_el0
-	rwreg	amevtyper111_el0
-	rwreg	amevtyper112_el0
-	rwreg	amevtyper113_el0
-	rwreg	amevtyper114_el0
-	rwreg	amevtyper115_el0
+	rw_sys_reg	trfcr_el1
+	rw_sys_reg	pmmir_el1 w=0
+	rw_sys_reg	trfcr_el2
+
+	rw_sys_reg	trfcr_el12
+
+	rw_sys_reg	amcr_el0
+	rw_sys_reg	amcfgr_el0 w=0
+	rw_sys_reg	amcgcr_el0 w=0
+	rw_sys_reg	amuserenr_el0
+	rw_sys_reg	amcntenclr0_el0
+	rw_sys_reg	amcntenset0_el0
+	rw_sys_reg	amcntenclr1_el0
+	rw_sys_reg	amcntenset1_el0
+	rw_sys_reg	amevcntr00_el0
+	rw_sys_reg	amevcntr01_el0
+	rw_sys_reg	amevcntr02_el0
+	rw_sys_reg	amevcntr03_el0
+	rw_sys_reg	amevtyper00_el0 w=0
+	rw_sys_reg	amevtyper01_el0 w=0
+	rw_sys_reg	amevtyper02_el0 w=0
+	rw_sys_reg	amevtyper03_el0 w=0
+	rw_sys_reg	amevcntr10_el0
+	rw_sys_reg	amevcntr11_el0
+	rw_sys_reg	amevcntr12_el0
+	rw_sys_reg	amevcntr13_el0
+	rw_sys_reg	amevcntr14_el0
+	rw_sys_reg	amevcntr15_el0
+	rw_sys_reg	amevcntr16_el0
+	rw_sys_reg	amevcntr17_el0
+	rw_sys_reg	amevcntr18_el0
+	rw_sys_reg	amevcntr19_el0
+	rw_sys_reg	amevcntr110_el0
+	rw_sys_reg	amevcntr111_el0
+	rw_sys_reg	amevcntr112_el0
+	rw_sys_reg	amevcntr113_el0
+	rw_sys_reg	amevcntr114_el0
+	rw_sys_reg	amevcntr115_el0
+	rw_sys_reg	amevtyper10_el0
+	rw_sys_reg	amevtyper11_el0
+	rw_sys_reg	amevtyper12_el0
+	rw_sys_reg	amevtyper13_el0
+	rw_sys_reg	amevtyper14_el0
+	rw_sys_reg	amevtyper15_el0
+	rw_sys_reg	amevtyper16_el0
+	rw_sys_reg	amevtyper17_el0
+	rw_sys_reg	amevtyper18_el0
+	rw_sys_reg	amevtyper19_el0
+	rw_sys_reg	amevtyper110_el0
+	rw_sys_reg	amevtyper111_el0
+	rw_sys_reg	amevtyper112_el0
+	rw_sys_reg	amevtyper113_el0
+	rw_sys_reg	amevtyper114_el0
+	rw_sys_reg	amevtyper115_el0
 
 	.arch	armv8.6-a
 
-	roreg	amcg1idr_el0
-	roreg	cntpctss_el0
-	roreg	cntvctss_el0
-	rwreg	hfgrtr_el2
-	rwreg	hfgwtr_el2
-	rwreg	hfgitr_el2
-	rwreg	hdfgrtr_el2
-	rwreg	hdfgwtr_el2
-	rwreg	hafgrtr_el2
-	rwreg	amevcntvoff00_el2
-	rwreg	amevcntvoff01_el2
-	rwreg	amevcntvoff02_el2
-	rwreg	amevcntvoff03_el2
-	rwreg	amevcntvoff04_el2
-	rwreg	amevcntvoff05_el2
-	rwreg	amevcntvoff06_el2
-	rwreg	amevcntvoff07_el2
-	rwreg	amevcntvoff08_el2
-	rwreg	amevcntvoff09_el2
-	rwreg	amevcntvoff010_el2
-	rwreg	amevcntvoff011_el2
-	rwreg	amevcntvoff012_el2
-	rwreg	amevcntvoff013_el2
-	rwreg	amevcntvoff014_el2
-	rwreg	amevcntvoff015_el2
-	rwreg	amevcntvoff10_el2
-	rwreg	amevcntvoff11_el2
-	rwreg	amevcntvoff12_el2
-	rwreg	amevcntvoff13_el2
-	rwreg	amevcntvoff14_el2
-	rwreg	amevcntvoff15_el2
-	rwreg	amevcntvoff16_el2
-	rwreg	amevcntvoff17_el2
-	rwreg	amevcntvoff18_el2
-	rwreg	amevcntvoff19_el2
-	rwreg	amevcntvoff110_el2
-	rwreg	amevcntvoff111_el2
-	rwreg	amevcntvoff112_el2
-	rwreg	amevcntvoff113_el2
-	rwreg	amevcntvoff114_el2
-	rwreg	amevcntvoff115_el2
-	rwreg	cntpoff_el2
+	rw_sys_reg	amcg1idr_el0 w=0
+	rw_sys_reg	cntpctss_el0 w=0
+	rw_sys_reg	cntvctss_el0 w=0
+	rw_sys_reg	hfgrtr_el2
+	rw_sys_reg	hfgwtr_el2
+	rw_sys_reg	hfgitr_el2
+	rw_sys_reg	hdfgrtr_el2
+	rw_sys_reg	hdfgwtr_el2
+	rw_sys_reg	hafgrtr_el2
+	rw_sys_reg	amevcntvoff00_el2
+	rw_sys_reg	amevcntvoff01_el2
+	rw_sys_reg	amevcntvoff02_el2
+	rw_sys_reg	amevcntvoff03_el2
+	rw_sys_reg	amevcntvoff04_el2
+	rw_sys_reg	amevcntvoff05_el2
+	rw_sys_reg	amevcntvoff06_el2
+	rw_sys_reg	amevcntvoff07_el2
+	rw_sys_reg	amevcntvoff08_el2
+	rw_sys_reg	amevcntvoff09_el2
+	rw_sys_reg	amevcntvoff010_el2
+	rw_sys_reg	amevcntvoff011_el2
+	rw_sys_reg	amevcntvoff012_el2
+	rw_sys_reg	amevcntvoff013_el2
+	rw_sys_reg	amevcntvoff014_el2
+	rw_sys_reg	amevcntvoff015_el2
+	rw_sys_reg	amevcntvoff10_el2
+	rw_sys_reg	amevcntvoff11_el2
+	rw_sys_reg	amevcntvoff12_el2
+	rw_sys_reg	amevcntvoff13_el2
+	rw_sys_reg	amevcntvoff14_el2
+	rw_sys_reg	amevcntvoff15_el2
+	rw_sys_reg	amevcntvoff16_el2
+	rw_sys_reg	amevcntvoff17_el2
+	rw_sys_reg	amevcntvoff18_el2
+	rw_sys_reg	amevcntvoff19_el2
+	rw_sys_reg	amevcntvoff110_el2
+	rw_sys_reg	amevcntvoff111_el2
+	rw_sys_reg	amevcntvoff112_el2
+	rw_sys_reg	amevcntvoff113_el2
+	rw_sys_reg	amevcntvoff114_el2
+	rw_sys_reg	amevcntvoff115_el2
+	rw_sys_reg	cntpoff_el2
 
 	.arch	armv8.7-a
 
-	rwreg	pmsnevfr_el1
-	rwreg	hcrx_el2
+	rw_sys_reg	pmsnevfr_el1
+	rw_sys_reg	hcrx_el2
 
 	.arch	armv8-a+the
 
-	rwreg	rcwmask_el1
-	rwreg	rcwsmask_el1
+	rw_sys_reg	rcwmask_el1
+	rw_sys_reg	rcwsmask_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc b/gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc
new file mode 100644
index 00000000000..ac618db4400
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc
@@ -0,0 +1,32 @@
+/** Test util to perform a READ and/or WRITE from/to a system register
+ *
+ * \param sysreg a system register.
+ * \param xreg   any general purpose register Xn (default=x0).
+ * \param r      boolean enabling or disabling the read test (default=1).
+ * \param w      boolean enabling or disabling the write test (default=1).
+ */
+.macro rw_sys_reg sys_reg xreg=x0 r=1 w=1
+.ifc \w, 1
+msr \sys_reg, \xreg
+.endif
+.ifc \r, 1
+mrs \xreg, \sys_reg
+.endif
+.endm
+
+/** 128-bits version of rw_sys_reg
+ *
+ * \param sysreg a system register.
+ * \param xreg1  first general-purpose destination register Xn (default=x0).
+ * \param xreg2  second general-purpose destination register Xn (default=x1).
+ * \param r      boolean enabling or disabling the read test (default=1).
+ * \param w      boolean enabling or disabling the write test (default=1).
+ */
+.macro rw_sys_reg_128 sys_reg xreg1=x0 xreg2=x1 r=1 w=1
+.ifc \w, 1
+msrr \sys_reg, \xreg1, \xreg2
+.endif
+.ifc \r, 1
+mrrs \xreg1, \xreg2, \sys_reg
+.endif
+.endm
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sysreg.d
index 6dfad54a72c..54ade34a87e 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg.d
@@ -1,3 +1,5 @@
+#source: sysreg.s
+#as: -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
@@ -5,9 +7,9 @@
 Disassembly of section \.text:
 
 0+ <.*>:
-.*:	d51b9c67 	msr	pmovsclr_el0, x7
+.*:	d51b9c60 	msr	pmovsclr_el0, x0
 .*:	d53b9c60 	mrs	x0, pmovsclr_el0
-.*:	d51b9e67 	msr	pmovsset_el0, x7
+.*:	d51b9e60 	msr	pmovsset_el0, x0
 .*:	d53b9e60 	mrs	x0, pmovsset_el0
 .*:	d5380140 	mrs	x0, id_dfr0_el1
 .*:	d5380100 	mrs	x0, id_pfr0_el1
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg.s b/gas/testsuite/gas/aarch64/sysreg/sysreg.s
index 998f31596bd..9c0fd4ae2fd 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg.s
@@ -1,38 +1,31 @@
+	.include "sysreg-test-utils.inc"
 
-	# Test case for system registers
 	.text
 
-	msr pmovsclr_el0, x7
-	mrs x0, pmovsclr_el0
-
-	msr pmovsset_el0, x7
-	mrs x0, pmovsset_el0
-
-	mrs x0, id_dfr0_el1
-	mrs x0, id_pfr0_el1
-	mrs x0, id_pfr1_el1
-	mrs x0, id_afr0_el1
-	mrs x0, id_mmfr0_el1
-	mrs x0, id_mmfr1_el1
-	mrs x0, id_mmfr2_el1
-	mrs x0, id_mmfr3_el1
-	mrs x0, id_mmfr4_el1
-	mrs x0, id_isar0_el1
-	mrs x0, id_isar1_el1
-	mrs x0, id_isar2_el1
-	mrs x0, id_isar3_el1
-	mrs x0, id_isar4_el1
-	mrs x0, id_isar5_el1
-
-	mrs x0, id_aa64isar2_el1
-	mrs x30, id_aa64isar2_el1
-
-	mrs x0, id_aa64isar3_el1
-	mrs x30, id_aa64isar3_el1
-
-	mrs x0, s3_0_c12_c15_0
-	msr s3_0_c4_c11_0, x0
-	mrs x0, s3_0_c4_c11_0
-
-	msr s2_1_c0_c3_0, x0
-	mrs x0, s2_1_c0_c3_0
+	rw_sys_reg sys_reg=pmovsclr_el0
+	rw_sys_reg sys_reg=pmovsset_el0
+
+	rw_sys_reg sys_reg=id_dfr0_el1 w=0
+	rw_sys_reg sys_reg=id_pfr0_el1 w=0
+	rw_sys_reg sys_reg=id_pfr1_el1 w=0
+	rw_sys_reg sys_reg=id_afr0_el1 w=0
+	rw_sys_reg sys_reg=id_mmfr0_el1 w=0
+	rw_sys_reg sys_reg=id_mmfr1_el1 w=0
+	rw_sys_reg sys_reg=id_mmfr2_el1 w=0
+	rw_sys_reg sys_reg=id_mmfr3_el1 w=0
+	rw_sys_reg sys_reg=id_mmfr4_el1 w=0
+	rw_sys_reg sys_reg=id_isar0_el1 w=0
+	rw_sys_reg sys_reg=id_isar1_el1 w=0
+	rw_sys_reg sys_reg=id_isar2_el1 w=0
+	rw_sys_reg sys_reg=id_isar3_el1 w=0
+	rw_sys_reg sys_reg=id_isar4_el1 w=0
+	rw_sys_reg sys_reg=id_isar5_el1 w=0
+
+	rw_sys_reg sys_reg=id_aa64isar2_el1 xreg=x0 w=0
+	rw_sys_reg sys_reg=id_aa64isar2_el1 xreg=x30 w=0
+	rw_sys_reg sys_reg=id_aa64isar3_el1 xreg=x0 w=0
+	rw_sys_reg sys_reg=id_aa64isar3_el1 xreg=x30 w=0
+
+	rw_sys_reg sys_reg=s3_0_c12_c15_0 w=0
+	rw_sys_reg sys_reg=s3_0_c4_c11_0
+	rw_sys_reg sys_reg=s2_1_c0_c3_0
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
index 2998c7b79a2..22df5e241b1 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d
@@ -1,3 +1,5 @@
+#source: sysreg128.s
+#as: -I$srcdir/$subdir
 #objdump: -dr
 
 .*
@@ -6,23 +8,23 @@
 Disassembly of section \.text:
 
 0+ <\.text>:
-[^:]*:	d5587402 	msrr	par_el1, x2, x3
-[^:]*:	d5787402 	mrrs	x2, x3, par_el1
-[^:]*:	d558d0c2 	msrr	rcwmask_el1, x2, x3
-[^:]*:	d578d0c2 	mrrs	x2, x3, rcwmask_el1
-[^:]*:	d558d062 	msrr	rcwsmask_el1, x2, x3
-[^:]*:	d578d062 	mrrs	x2, x3, rcwsmask_el1
-[^:]*:	d5582002 	msrr	ttbr0_el1, x2, x3
-[^:]*:	d5782002 	mrrs	x2, x3, ttbr0_el1
-[^:]*:	d55d2002 	msrr	ttbr0_el12, x2, x3
-[^:]*:	d57d2002 	mrrs	x2, x3, ttbr0_el12
-[^:]*:	d55c2002 	msrr	ttbr0_el2, x2, x3
-[^:]*:	d57c2002 	mrrs	x2, x3, ttbr0_el2
-[^:]*:	d5582022 	msrr	ttbr1_el1, x2, x3
-[^:]*:	d5782022 	mrrs	x2, x3, ttbr1_el1
-[^:]*:	d55d2022 	msrr	ttbr1_el12, x2, x3
-[^:]*:	d57d2022 	mrrs	x2, x3, ttbr1_el12
-[^:]*:	d55c2022 	msrr	ttbr1_el2, x2, x3
-[^:]*:	d57c2022 	mrrs	x2, x3, ttbr1_el2
-[^:]*:	d55c2102 	msrr	vttbr_el2, x2, x3
-[^:]*:	d57c2102 	mrrs	x2, x3, vttbr_el2
\ No newline at end of file
+.*:	d5587402 	msrr	par_el1, x2, x3
+.*:	d5787402 	mrrs	x2, x3, par_el1
+.*:	d558d0c2 	msrr	rcwmask_el1, x2, x3
+.*:	d578d0c2 	mrrs	x2, x3, rcwmask_el1
+.*:	d558d062 	msrr	rcwsmask_el1, x2, x3
+.*:	d578d062 	mrrs	x2, x3, rcwsmask_el1
+.*:	d5582002 	msrr	ttbr0_el1, x2, x3
+.*:	d5782002 	mrrs	x2, x3, ttbr0_el1
+.*:	d55d2002 	msrr	ttbr0_el12, x2, x3
+.*:	d57d2002 	mrrs	x2, x3, ttbr0_el12
+.*:	d55c2002 	msrr	ttbr0_el2, x2, x3
+.*:	d57c2002 	mrrs	x2, x3, ttbr0_el2
+.*:	d5582022 	msrr	ttbr1_el1, x2, x3
+.*:	d5782022 	mrrs	x2, x3, ttbr1_el1
+.*:	d55d2022 	msrr	ttbr1_el12, x2, x3
+.*:	d57d2022 	mrrs	x2, x3, ttbr1_el12
+.*:	d55c2022 	msrr	ttbr1_el2, x2, x3
+.*:	d57c2022 	mrrs	x2, x3, ttbr1_el2
+.*:	d55c2102 	msrr	vttbr_el2, x2, x3
+.*:	d57c2102 	mrrs	x2, x3, vttbr_el2
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.s b/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
index ee1d7cda3fa..165dfa713d8 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.s
@@ -1,17 +1,14 @@
-	.arch armv9.4-a+d128+the
+	.include "sysreg-test-utils.inc"
 
-	.macro	rwreg128, name
-	msrr	\name, x2, x3
-	mrrs	x2, x3, \name
-	.endm
+	.arch armv9.4-a+d128+the
 
-	rwreg128	par_el1
-	rwreg128	rcwmask_el1
-	rwreg128	rcwsmask_el1
-	rwreg128	ttbr0_el1
-	rwreg128	ttbr0_el12
-	rwreg128	ttbr0_el2
-	rwreg128	ttbr1_el1
-	rwreg128	ttbr1_el12
-	rwreg128	ttbr1_el2
-	rwreg128	vttbr_el2
+	rw_sys_reg_128 par_el1 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 rcwmask_el1 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 rcwsmask_el1 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 ttbr0_el1 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 ttbr0_el12 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 ttbr0_el2 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 ttbr1_el1 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 ttbr1_el12 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 ttbr1_el2 xreg1=x2 xreg2=x3
+	rw_sys_reg_128 vttbr_el2 xreg1=x2 xreg2=x3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them
  2024-02-27 10:59 ` [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them Matthieu Longo
@ 2024-02-27 16:31   ` Andrew Carlotti
  2024-03-01 10:10     ` Matthieu Longo
  0 siblings, 1 reply; 9+ messages in thread
From: Andrew Carlotti @ 2024-02-27 16:31 UTC (permalink / raw)
  To: Matthieu Longo; +Cc: binutils, Richard Earnshaw, Nick Clifton

On Tue, Feb 27, 2024 at 10:59:17AM +0000, Matthieu Longo wrote:
> 
> This patch rewrites assembly tests to use utils macros declared in
> sysreg-test-utils.inc. Some tests were adapted to use the new macro
> rw_sys_reg.
> ---
>  .../aarch64/sysreg/armv8_9-a-sysregs-bad.d    |   2 +-
>  .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    |  90 ++++-
>  .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |   3 +-
>  .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    | 139 +++----
>  .../gas/aarch64/sysreg/illegal-sysreg-3.d     |   2 +-
>  .../gas/aarch64/sysreg/illegal-sysreg-4.d     |   2 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-1.d   |   2 +
>  gas/testsuite/gas/aarch64/sysreg/sysreg-1.s   | 223 ++++++------
>  gas/testsuite/gas/aarch64/sysreg/sysreg-2.d   |   3 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-2.s   |  47 ++-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-3.d   |   3 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-3.s   |  25 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-6.d   |   2 +
>  gas/testsuite/gas/aarch64/sysreg/sysreg-6.s   |   7 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |   2 +
>  gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  32 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   |   2 +
>  gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   | 339 +++++++++---------
>  .../gas/aarch64/sysreg/sysreg-test-utils.inc  |  32 ++
>  gas/testsuite/gas/aarch64/sysreg/sysreg.d     |   6 +-
>  gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  63 ++--
>  gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  42 +--
>  gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |  27 +-
>  23 files changed, 576 insertions(+), 519 deletions(-)
>  create mode 100644 gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc
> 
...
> diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
> index bf9019c9ac8..318d8bb9097 100644
> --- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
> +++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
> @@ -1,32 +1,23 @@
> -	msr PMSDSFR_EL1, x3
> -	mrs x3, PMSDSFR_EL1
> +	.include "sysreg-test-utils.inc"
> +
> +.text
> +	rw_sys_reg sys_reg=PMSDSFR_EL1 xreg=x3 r=1 w=1
>  
>  	mrs x0, ERXGSR_EL1
>  
> -	msr SCTLR2_EL1, x3
> -	mrs x3, SCTLR2_EL1
> -	msr SCTLR2_EL12, x3
> -	mrs x3, SCTLR2_EL12
> -	msr SCTLR2_EL2, x3
> -	mrs x3, SCTLR2_EL2
> -	msr SCTLR2_EL3, x3
> -	mrs x3, SCTLR2_EL3
> -
> -	msr HDFGRTR2_EL2, x3
> -	mrs x3, HDFGRTR2_EL2
> -	msr HDFGWTR2_EL2, x3
> -	mrs x3, HDFGWTR2_EL2
> -	msr HFGRTR2_EL2, x3
> -	mrs x3, HFGRTR2_EL2
> -	msr HFGWTR2_EL2, x3
> -	mrs x3, HFGWTR2_EL2
> -
> -	msr PFAR_EL1, x0
> -	mrs x0, PFAR_EL1
> -	msr PFAR_EL2, x0
> -	mrs x0, PFAR_EL2
> -	msr PFAR_EL12, x0
> -	mrs x0, PFAR_EL12
> +	rw_sys_reg sys_reg=SCTLR2_EL1 xreg=x3 r=1 w=1
> +	rw_sys_reg sys_reg=SCTLR2_EL12 xreg=x3 r=1 w=1
> +	rw_sys_reg sys_reg=SCTLR2_EL2 xreg=x3 r=1 w=1
> +	rw_sys_reg sys_reg=SCTLR2_EL3 xreg=x3 r=1 w=1
> +
> +	rw_sys_reg sys_reg=HDFGRTR2_EL2 xreg=x3 r=1 w=1
> +	rw_sys_reg sys_reg=HDFGWTR2_EL2 xreg=x3 r=1 w=1
> +	rw_sys_reg sys_reg=HFGRTR2_EL2 xreg=x3 r=1 w=1
> +	rw_sys_reg sys_reg=HFGWTR2_EL2 xreg=x3 r=1 w=1
> +
> +	rw_sys_reg sys_reg=PFAR_EL1 xreg=x0 r=1 w=1
> +	rw_sys_reg sys_reg=PFAR_EL2 xreg=x0 r=1 w=1
> +	rw_sys_reg sys_reg=PFAR_EL12 xreg=x0 r=1 w=1

This may be just my preference, and I know you're just extending existing
practice here, but I'm not keen on hiding the actual instructions away behind
macros (especially if there's little or no reduction in the size of the
assembly file).  I think it makes it harder to check that the input assembly
matches the output assembly, and I've seen several cases recently where such
discrepancies were missed.  It also adds lots of macro invocation messages to
the error check files.

In the case of a large multidimensional cross-product of operand values it
might make more sense to use macros, but in that case you'd still need to check
and include the full assembly contents in the .d file.   You can probably get
equally effective test coverage in most cases by just checking each dimension
separately anyway.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them
  2024-02-27 16:31   ` Andrew Carlotti
@ 2024-03-01 10:10     ` Matthieu Longo
  2024-03-04 14:43       ` Andrew Carlotti
  0 siblings, 1 reply; 9+ messages in thread
From: Matthieu Longo @ 2024-03-01 10:10 UTC (permalink / raw)
  To: Andrew Carlotti; +Cc: binutils, Richard Earnshaw, Nick Clifton

Just to make sure I understood you well, your main concern is about the 
difficulty of verifying the test cases caused by the proposed changes.

Those difficulties can be summarized by the two following points:
1. Using macros which hide the instructions is not to be encouraged if 
there's little or no reduction in the size of the assembly file.
2. The macro adds lots of macro invocation messages to the error check 
files.

(1) The file you took as an example 
(gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s) by the way is one 
of the files that I didn't change to remove r=1 w=1 which are the 
default values, and also that are still using a different register (x3) 
from the default (x0). That's why it looks so verbose, and sometimes 
worse than the original.

In the proposed patch, the expansion of the helper macros always 
generates the same sequence of instructions: msr[r] and mr[r]s, and 
always in the same order.
I agree that the usage of macros might add some complexity in others 
cases outside of the system registers tests. However, here it makes 
things better in my experience.

The issues that I was trying to address here were:
- Making things more explicit: w=1, r=0 is clear, the instruction name 
is more cryptic than rw_sys_reg, and I often need to check the doc. Even 
after several times, I am still confused which one is the read 
instruction, and which one is the write one.
- Enforcing the order of emitted instructions (write before read) so 
that the reading of the generated assembly is easier (=more mechanical).
- Uniformizing the macros across the different files. People have been 
reimplementing the same macros again and again, each time in a slightly 
different way. I am not aware of the reason behind their choice, but 
from the naming, I would guess that readability was their goal.

Please, note that I didn't change every file, but only set up the 
boilerplates with some examples so that people starts using those macros.

If you have a look at others assembly files that were changed, do you 
still feel that the macros are not helping for readability ?
Your concern is fair. I am interested in feedback of others reviewers.

(2) Regarding the macro invocation messages when checking for errors, I 
agree that they are very bothering. I actually prepared a patch to a new 
command line option --no-info (similar to --no-warn) which allows to 
disable such annoying messages. I plan to publish it later, but I expect 
it to be a bit controversial as it adds a new command line options to 
the CLI interface. Consequently, I preferred not to make my changes 
dependent on it.

On 2024-02-27 16:31, Andrew Carlotti wrote:
> On Tue, Feb 27, 2024 at 10:59:17AM +0000, Matthieu Longo wrote:
>>
>> This patch rewrites assembly tests to use utils macros declared in
>> sysreg-test-utils.inc. Some tests were adapted to use the new macro
>> rw_sys_reg.
>> ---
>>   .../aarch64/sysreg/armv8_9-a-sysregs-bad.d    |   2 +-
>>   .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    |  90 ++++-
>>   .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |   3 +-
>>   .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    | 139 +++----
>>   .../gas/aarch64/sysreg/illegal-sysreg-3.d     |   2 +-
>>   .../gas/aarch64/sysreg/illegal-sysreg-4.d     |   2 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-1.d   |   2 +
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-1.s   | 223 ++++++------
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-2.d   |   3 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-2.s   |  47 ++-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-3.d   |   3 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-3.s   |  25 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-6.d   |   2 +
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-6.s   |   7 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |   2 +
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  32 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   |   2 +
>>   gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   | 339 +++++++++---------
>>   .../gas/aarch64/sysreg/sysreg-test-utils.inc  |  32 ++
>>   gas/testsuite/gas/aarch64/sysreg/sysreg.d     |   6 +-
>>   gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  63 ++--
>>   gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  42 +--
>>   gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |  27 +-
>>   23 files changed, 576 insertions(+), 519 deletions(-)
>>   create mode 100644 gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc
>>
> ...
>> diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
>> index bf9019c9ac8..318d8bb9097 100644
>> --- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
>> +++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
>> @@ -1,32 +1,23 @@
>> -	msr PMSDSFR_EL1, x3
>> -	mrs x3, PMSDSFR_EL1
>> +	.include "sysreg-test-utils.inc"
>> +
>> +.text
>> +	rw_sys_reg sys_reg=PMSDSFR_EL1 xreg=x3 r=1 w=1
>>   
>>   	mrs x0, ERXGSR_EL1
>>   
>> -	msr SCTLR2_EL1, x3
>> -	mrs x3, SCTLR2_EL1
>> -	msr SCTLR2_EL12, x3
>> -	mrs x3, SCTLR2_EL12
>> -	msr SCTLR2_EL2, x3
>> -	mrs x3, SCTLR2_EL2
>> -	msr SCTLR2_EL3, x3
>> -	mrs x3, SCTLR2_EL3
>> -
>> -	msr HDFGRTR2_EL2, x3
>> -	mrs x3, HDFGRTR2_EL2
>> -	msr HDFGWTR2_EL2, x3
>> -	mrs x3, HDFGWTR2_EL2
>> -	msr HFGRTR2_EL2, x3
>> -	mrs x3, HFGRTR2_EL2
>> -	msr HFGWTR2_EL2, x3
>> -	mrs x3, HFGWTR2_EL2
>> -
>> -	msr PFAR_EL1, x0
>> -	mrs x0, PFAR_EL1
>> -	msr PFAR_EL2, x0
>> -	mrs x0, PFAR_EL2
>> -	msr PFAR_EL12, x0
>> -	mrs x0, PFAR_EL12
>> +	rw_sys_reg sys_reg=SCTLR2_EL1 xreg=x3 r=1 w=1
>> +	rw_sys_reg sys_reg=SCTLR2_EL12 xreg=x3 r=1 w=1
>> +	rw_sys_reg sys_reg=SCTLR2_EL2 xreg=x3 r=1 w=1
>> +	rw_sys_reg sys_reg=SCTLR2_EL3 xreg=x3 r=1 w=1
>> +
>> +	rw_sys_reg sys_reg=HDFGRTR2_EL2 xreg=x3 r=1 w=1
>> +	rw_sys_reg sys_reg=HDFGWTR2_EL2 xreg=x3 r=1 w=1
>> +	rw_sys_reg sys_reg=HFGRTR2_EL2 xreg=x3 r=1 w=1
>> +	rw_sys_reg sys_reg=HFGWTR2_EL2 xreg=x3 r=1 w=1
>> +
>> +	rw_sys_reg sys_reg=PFAR_EL1 xreg=x0 r=1 w=1
>> +	rw_sys_reg sys_reg=PFAR_EL2 xreg=x0 r=1 w=1
>> +	rw_sys_reg sys_reg=PFAR_EL12 xreg=x0 r=1 w=1
> 
> This may be just my preference, and I know you're just extending existing
> practice here, but I'm not keen on hiding the actual instructions away behind
> macros (especially if there's little or no reduction in the size of the
> assembly file).  I think it makes it harder to check that the input assembly
> matches the output assembly, and I've seen several cases recently where such
> discrepancies were missed.  It also adds lots of macro invocation messages to
> the error check files.
> 
> In the case of a large multidimensional cross-product of operand values it
> might make more sense to use macros, but in that case you'd still need to check
> and include the full assembly contents in the .d file.   You can probably get
> equally effective test coverage in most cases by just checking each dimension
> separately anyway.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them
  2024-03-01 10:10     ` Matthieu Longo
@ 2024-03-04 14:43       ` Andrew Carlotti
  0 siblings, 0 replies; 9+ messages in thread
From: Andrew Carlotti @ 2024-03-04 14:43 UTC (permalink / raw)
  To: Matthieu Longo; +Cc: binutils, Richard Earnshaw, Nick Clifton

On Fri, Mar 01, 2024 at 10:10:45AM +0000, Matthieu Longo wrote:
> Just to make sure I understood you well, your main concern is about the
> difficulty of verifying the test cases caused by the proposed changes.
> 
> Those difficulties can be summarized by the two following points:
> 1. Using macros which hide the instructions is not to be encouraged if
> there's little or no reduction in the size of the assembly file.
> 2. The macro adds lots of macro invocation messages to the error check
> files.

My point is more about it being more difficult (in my opinion) to compare the
input and output when one of them uses macros, regardless of any increase or
decrease in codesize.

> (1) The file you took as an example
> (gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s) by the way is one of
> the files that I didn't change to remove r=1 w=1 which are the default
> values, and also that are still using a different register (x3) from the
> default (x0). That's why it looks so verbose, and sometimes worse than the
> original.
> 
> In the proposed patch, the expansion of the helper macros always generates
> the same sequence of instructions: msr[r] and mr[r]s, and always in the same
> order.
> I agree that the usage of macros might add some complexity in others cases
> outside of the system registers tests. However, here it makes things better
> in my experience.
> 
> The issues that I was trying to address here were:
> - Making things more explicit: w=1, r=0 is clear, the instruction name is
> more cryptic than rw_sys_reg, and I often need to check the doc. Even after
> several times, I am still confused which one is the read instruction, and
> which one is the write one.
> - Enforcing the order of emitted instructions (write before read) so that
> the reading of the generated assembly is easier (=more mechanical).
> - Uniformizing the macros across the different files. People have been
> reimplementing the same macros again and again, each time in a slightly
> different way. I am not aware of the reason behind their choice, but from
> the naming, I would guess that readability was their goal.
> 
> Please, note that I didn't change every file, but only set up the
> boilerplates with some examples so that people starts using those macros.
> 
> If you have a look at others assembly files that were changed, do you still
> feel that the macros are not helping for readability ?
> Your concern is fair. I am interested in feedback of others reviewers.

Indeed - this is just my preference at the moment, and I don't think it should
prevent this patch being merged (particularly since you're just homogenizing
existing macro usage).  Plenty of other people have used the macros before you,
and must therefore have considered them to be beneficial.

> (2) Regarding the macro invocation messages when checking for errors, I
> agree that they are very bothering. I actually prepared a patch to a new
> command line option --no-info (similar to --no-warn) which allows to disable
> such annoying messages. I plan to publish it later, but I expect it to be a
> bit controversial as it adds a new command line options to the CLI
> interface. Consequently, I preferred not to make my changes dependent on it.
> 
> On 2024-02-27 16:31, Andrew Carlotti wrote:
> > On Tue, Feb 27, 2024 at 10:59:17AM +0000, Matthieu Longo wrote:
> > > 
> > > This patch rewrites assembly tests to use utils macros declared in
> > > sysreg-test-utils.inc. Some tests were adapted to use the new macro
> > > rw_sys_reg.
> > > ---
> > >   .../aarch64/sysreg/armv8_9-a-sysregs-bad.d    |   2 +-
> > >   .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    |  90 ++++-
> > >   .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |   3 +-
> > >   .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    | 139 +++----
> > >   .../gas/aarch64/sysreg/illegal-sysreg-3.d     |   2 +-
> > >   .../gas/aarch64/sysreg/illegal-sysreg-4.d     |   2 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-1.d   |   2 +
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-1.s   | 223 ++++++------
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-2.d   |   3 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-2.s   |  47 ++-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-3.d   |   3 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-3.s   |  25 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-6.d   |   2 +
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-6.s   |   7 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |   2 +
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  32 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   |   2 +
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   | 339 +++++++++---------
> > >   .../gas/aarch64/sysreg/sysreg-test-utils.inc  |  32 ++
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg.d     |   6 +-
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  63 ++--
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  42 +--
> > >   gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |  27 +-
> > >   23 files changed, 576 insertions(+), 519 deletions(-)
> > >   create mode 100644 gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc
> > > 
> > ...
> > > diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
> > > index bf9019c9ac8..318d8bb9097 100644
> > > --- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
> > > +++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.s
> > > @@ -1,32 +1,23 @@
> > > -	msr PMSDSFR_EL1, x3
> > > -	mrs x3, PMSDSFR_EL1
> > > +	.include "sysreg-test-utils.inc"
> > > +
> > > +.text
> > > +	rw_sys_reg sys_reg=PMSDSFR_EL1 xreg=x3 r=1 w=1
> > >   	mrs x0, ERXGSR_EL1
> > > -	msr SCTLR2_EL1, x3
> > > -	mrs x3, SCTLR2_EL1
> > > -	msr SCTLR2_EL12, x3
> > > -	mrs x3, SCTLR2_EL12
> > > -	msr SCTLR2_EL2, x3
> > > -	mrs x3, SCTLR2_EL2
> > > -	msr SCTLR2_EL3, x3
> > > -	mrs x3, SCTLR2_EL3
> > > -
> > > -	msr HDFGRTR2_EL2, x3
> > > -	mrs x3, HDFGRTR2_EL2
> > > -	msr HDFGWTR2_EL2, x3
> > > -	mrs x3, HDFGWTR2_EL2
> > > -	msr HFGRTR2_EL2, x3
> > > -	mrs x3, HFGRTR2_EL2
> > > -	msr HFGWTR2_EL2, x3
> > > -	mrs x3, HFGWTR2_EL2
> > > -
> > > -	msr PFAR_EL1, x0
> > > -	mrs x0, PFAR_EL1
> > > -	msr PFAR_EL2, x0
> > > -	mrs x0, PFAR_EL2
> > > -	msr PFAR_EL12, x0
> > > -	mrs x0, PFAR_EL12
> > > +	rw_sys_reg sys_reg=SCTLR2_EL1 xreg=x3 r=1 w=1
> > > +	rw_sys_reg sys_reg=SCTLR2_EL12 xreg=x3 r=1 w=1
> > > +	rw_sys_reg sys_reg=SCTLR2_EL2 xreg=x3 r=1 w=1
> > > +	rw_sys_reg sys_reg=SCTLR2_EL3 xreg=x3 r=1 w=1
> > > +
> > > +	rw_sys_reg sys_reg=HDFGRTR2_EL2 xreg=x3 r=1 w=1
> > > +	rw_sys_reg sys_reg=HDFGWTR2_EL2 xreg=x3 r=1 w=1
> > > +	rw_sys_reg sys_reg=HFGRTR2_EL2 xreg=x3 r=1 w=1
> > > +	rw_sys_reg sys_reg=HFGWTR2_EL2 xreg=x3 r=1 w=1
> > > +
> > > +	rw_sys_reg sys_reg=PFAR_EL1 xreg=x0 r=1 w=1
> > > +	rw_sys_reg sys_reg=PFAR_EL2 xreg=x0 r=1 w=1
> > > +	rw_sys_reg sys_reg=PFAR_EL12 xreg=x0 r=1 w=1
> > 
> > This may be just my preference, and I know you're just extending existing
> > practice here, but I'm not keen on hiding the actual instructions away behind
> > macros (especially if there's little or no reduction in the size of the
> > assembly file).  I think it makes it harder to check that the input assembly
> > matches the output assembly, and I've seen several cases recently where such
> > discrepancies were missed.  It also adds lots of macro invocation messages to
> > the error check files.
> > 
> > In the case of a large multidimensional cross-product of operand values it
> > might make more sense to use macros, but in that case you'd still need to check
> > and include the full assembly contents in the .d file.   You can probably get
> > equally effective test coverage in most cases by just checking each dimension
> > separately anyway.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros
  2024-02-27 10:59 [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
                   ` (3 preceding siblings ...)
  2024-02-27 10:59 ` [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them Matthieu Longo
@ 2024-04-24 10:48 ` Matthieu Longo
  4 siblings, 0 replies; 9+ messages in thread
From: Matthieu Longo @ 2024-04-24 10:48 UTC (permalink / raw)
  To: binutils, Nick Clifton, Richard Earnshaw; +Cc: Andrew Carlotti

Hi,

Thanks to Andrew Carlotti for your feedback (last message in March 
archive: https://sourceware.org/pipermail/binutils/2024-March/132808.html).

Please could I have some feedback on this patch series from the 
maintainers ?

Regards,
Matthieu.

On 2024-02-27 10:59, Matthieu Longo wrote:
> Hi,
> 
> [patch 0/4] aarch64: testsuite: refactoring of some sysreg tests to share test macros
>    [patch v1 1/4] aarch64: testsuite: replace instruction addresses by regex
>    [patch v1 2/4] aarch64: testsuite: use same regs for read and write tests
>    [patch v1 3/4] aarch64: testsuite: reorder write and read to match macro order
>    [patch v1 4/4] aarch64: testsuite: share test utils macros and use them
> 
> This patch series proposes a refactoring of sysreg tests focusing on:
> - replacing hard-coded instruction addresses by regexes in the objdump test output files (.d)
> - simplifying the usage of macro by using the same register for reading and writing
> - providing 2 macros to read/write from/to sysregs
> - adapting the tests to use those 2 macros
> More details are available in the individual commit messages.
> 
> Regression tested on the aarch64-none-elf, and no regression was found.
> 
> Ok for binutils-master? I don't have commit access so I need someone to commit on my behalf.
> 
> Regards,
> Matthieu.
> 
>   .../aarch64/sysreg/armv8_9-a-sysregs-bad.d    |   2 +-
>   .../aarch64/sysreg/armv8_9-a-sysregs-bad.l    | 142 ++++-
>   .../gas/aarch64/sysreg/armv8_9-a-sysregs.d    |  91 +--
>   .../gas/aarch64/sysreg/armv8_9-a-sysregs.s    | 143 ++---
>   .../gas/aarch64/sysreg/illegal-sysreg-3.d     |   2 +-
>   .../gas/aarch64/sysreg/illegal-sysreg-4.d     |   2 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-1.d   |   2 +
>   gas/testsuite/gas/aarch64/sysreg/sysreg-1.s   | 223 ++++----
>   gas/testsuite/gas/aarch64/sysreg/sysreg-2.d   | 105 ++--
>   gas/testsuite/gas/aarch64/sysreg/sysreg-2.s   |  47 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-3.d   |  43 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-3.s   |  25 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-6.d   |   2 +
>   gas/testsuite/gas/aarch64/sysreg/sysreg-6.s   |   7 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-7.d   |  18 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-7.s   |  34 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg-8.d   | 530 +++++++++---------
>   gas/testsuite/gas/aarch64/sysreg/sysreg-8.s   | 339 ++++++-----
>   .../gas/aarch64/sysreg/sysreg-test-utils.inc  |  32 ++
>   gas/testsuite/gas/aarch64/sysreg/sysreg.d     |  58 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg.s     |  63 +--
>   gas/testsuite/gas/aarch64/sysreg/sysreg128.d  |  42 +-
>   gas/testsuite/gas/aarch64/sysreg/sysreg128.s  |  27 +-
>   23 files changed, 1015 insertions(+), 964 deletions(-)
>   create mode 100644 gas/testsuite/gas/aarch64/sysreg/sysreg-test-utils.inc
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-04-24 10:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-27 10:59 [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo
2024-02-27 10:59 ` [PATCH v1 1/4] aarch64: testsuite: replace instruction addresses by regex Matthieu Longo
2024-02-27 10:59 ` [PATCH v1 2/4] aarch64: testsuite: use same regs for read and write tests Matthieu Longo
2024-02-27 10:59 ` [PATCH v1 3/4] aarch64: testsuite: reorder write and read to match macro order Matthieu Longo
2024-02-27 10:59 ` [PATCH v1 4/4] aarch64: testsuite: share test utils macros and use them Matthieu Longo
2024-02-27 16:31   ` Andrew Carlotti
2024-03-01 10:10     ` Matthieu Longo
2024-03-04 14:43       ` Andrew Carlotti
2024-04-24 10:48 ` [PATCH v1 0/4][Binutils] aarch64: testsuite: refactoring of some tests to share test macros Matthieu Longo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).