Add assembler and disassembler support for the new Armv8.4-a registers for AArch64.
authorTamar Christina <tamar.christina@arm.com>
Thu, 9 Nov 2017 15:48:43 +0000 (15:48 +0000)
committerTamar Christina <tamar.christina@arm.com>
Thu, 9 Nov 2017 16:29:16 +0000 (16:29 +0000)
Some of these instructions have been back-ported as optional extensions to
Armv8.2-a and higher, but others are only available for Armv8.4-a.

opcodes/

* aarch64-opc.c (aarch64_sys_regs): Add ARMv8.4-a registers;
dit, vstcr_el2, vsttbr_el2, cnthvs_tval_el2, cnthvs_cval_el2,
cnthvs_ctl_el2, cnthps_tval_el2, cnthps_cval_el2, cnthps_ctl_el2,
sder32_el2, vncr_el2.
(aarch64_sys_reg_supported_p): Likewise.
(aarch64_pstatefields): Add dit register.
(aarch64_pstatefield_supported_p): Likewise.
(aarch64_sys_regs_tlbi): Add vmalle1os, vae1os, aside1os, vaae1os,
vale1os, vaale1os, ipas2e1os, ipas2le1os, vae2os, vale2os, vmalls12e1os,
vae3os, vale3os, alle2os, alle1os, alle3os, rvae1, rvaae1, rvale1,
rvaale1, rvae1is, rvaae1is, rvale1is, rvaale1is, rvae1os, rvaae1os,
rvale1os, rvaale1os, ripas2e1is, ripas2le1is, ripas2e1, ripas2le1,
ripas2e1os, ripas2le1os, rvae2, rvale2, rvae2is, rvale2is, rvae2os,
rvale2os, rvae3, rvale3, rvae3is, rvale3is, rvae3os, rvale3os.

gas/testsuite

* gas/aarch64/armv8_4-a-registers-illegal.d: New.
* gas/aarch64/armv8_4-a-registers-illegal.l: New.
* gas/aarch64/armv8_4-a-registers-illegal.s: New.
* gas/aarch64/armv8_4-a-registers.d: New.
* gas/aarch64/armv8_4-a-registers.s: New.

gas/ChangeLog
gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv8_4-a-registers.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv8_4-a-registers.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/aarch64-opc.c

index 441dc2297d2ad86095a97488bb3eef54e6a939f3..3d032f2236f1dfada5848900eafa0a2c6479d92f 100644 (file)
@@ -1,3 +1,11 @@
+2017-11-09  Tamar Christina  <tamar.christina@arm.com>
+
+       * gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d: New.
+       * gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.l: New.
+       * gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.s: New.
+       * gas/testsuite/gas/aarch64/armv8_4-a-registers.d: New.
+       * gas/testsuite/gas/aarch64/armv8_4-a-registers.s: New.
+
 2017-11-09 Tamar Christina  <tamar.christina@arm.com>
 
        * config/tc-aarch64.c (process_omitted_operand):
diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d b/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d
new file mode 100644 (file)
index 0000000..098552b
--- /dev/null
@@ -0,0 +1,3 @@
+#as: -march=armv8.4-a+crypto+sm4+sha3
+#source: armv8_4-a-registers-illegal.s
+#error-output: armv8_4-a-registers-illegal.l
diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.l b/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.l
new file mode 100644 (file)
index 0000000..41373f7
--- /dev/null
@@ -0,0 +1,178 @@
+[^:]+: Assembler messages:
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,VSTTBR_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, vsttbr_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,VSTCR_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, vstcr_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTP_TVAL_EL0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cntp_tval_el0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTP_CTL_EL0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cntp_ctl_el0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTP_CVAL_EL0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cntp_cval_el0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTV_TVAL_EL0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cntv_tval_el0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTV_CTL_EL0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cntv_ctl_el0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTV_CVAL_EL0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cntv_cval_el0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTHVS_TVAL_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cnthvs_tval_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTHVS_CVAL_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cnthvs_cval_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTHVS_CTL_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cnthvs_ctl_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTHPS_TVAL_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cnthps_tval_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTHPS_CVAL_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cnthps_cval_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,CNTHPS_CTL_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, cnthps_ctl_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,SDER32_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, sder32_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,VNCR_EL2'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, vncr_el2
+[^:]+:[0-9]+: Error: operand mismatch -- `msr DIT,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            msr dit, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `mrs W0,DIT'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            mrs x0, dit
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VAE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vae1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi ASIDE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi aside1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VAAE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vaae1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VALE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vale1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VAALE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vaale1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi IPAS2E1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ipas2e1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi IPAS2LE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ipas2le1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VAE2OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vae2os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VALE2OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vale2os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VAE3OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vae3os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi VALE3OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi vale3os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE1,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae1, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAAE1,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvaae1, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE1,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale1, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAALE1,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvaale1, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE1IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae1is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAAE1IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvaae1is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE1IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale1is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAALE1IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvaale1is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAAE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvaae1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAALE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvaale1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RIPAS2E1IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ripas2e1is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RIPAS2LE1IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ripas2le1is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RIPAS2E1,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ripas2e1, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RIPAS2LE1,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ripas2le1, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RIPAS2E1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ripas2e1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RIPAS2LE1OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi ripas2le1os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE2,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae2, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE2,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale2, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE2IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae2is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE2IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale2is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE2OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae2os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE2OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale2os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE3,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae3, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE3,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale3, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE3IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae3is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE3IS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale3is, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVAE3OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvae3os, x0
+[^:]+:[0-9]+: Error: operand mismatch -- `tlbi RVALE3OS,W0'
+[^:]+:[0-9]+: Info:    did you mean this\?
+[^:]+:[0-9]+: Info:            tlbi rvale3os, x0
diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.s b/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.s
new file mode 100644 (file)
index 0000000..d31fff2
--- /dev/null
@@ -0,0 +1,80 @@
+# Secure second stage
+MRS W0, VSTTBR_EL2
+MRS W0, VSTCR_EL2
+
+# Timer changes
+MRS W0, CNTP_TVAL_EL0
+MRS W0, CNTP_CTL_EL0
+MRS W0, CNTP_CVAL_EL0
+MRS W0, CNTV_TVAL_EL0
+MRS W0, CNTV_CTL_EL0
+MRS W0, CNTV_CVAL_EL0
+
+MRS W0, CNTHVS_TVAL_EL2
+MRS W0, CNTHVS_CVAL_EL2
+MRS W0, CNTHVS_CTL_EL2
+MRS W0, CNTHPS_TVAL_EL2
+MRS W0, CNTHPS_CVAL_EL2
+MRS W0, CNTHPS_CTL_EL2
+
+# Debug state
+MRS W0, SDER32_EL2
+
+# Nested Virtualization
+MRS W0, VNCR_EL2
+
+# PSTATE
+MSR DIT, #01
+MSR DIT, W0
+MRS W0, DIT
+
+# TLB Maintenance instructions
+TLBI VMALLE1OS
+TLBI VAE1OS, W0
+TLBI ASIDE1OS, W0
+TLBI VAAE1OS, W0
+TLBI VALE1OS, W0
+TLBI VAALE1OS, W0
+TLBI IPAS2E1OS, W0
+TLBI IPAS2LE1OS, W0
+TLBI VAE2OS, W0
+TLBI VALE2OS, W0
+TLBI VMALLS12E1OS
+TLBI VAE3OS, W0
+TLBI VALE3OS, W0
+TLBI ALLE2OS
+TLBI ALLE1OS
+TLBI ALLE3OS
+
+# TLB Range Maintenance Instructions
+TLBI RVAE1, W0
+TLBI RVAAE1, W0
+TLBI RVALE1, W0
+TLBI RVAALE1, W0
+TLBI RVAE1IS, W0
+TLBI RVAAE1IS, W0
+TLBI RVALE1IS, W0
+TLBI RVAALE1IS, W0
+TLBI RVAE1OS, W0
+TLBI RVAAE1OS, W0
+TLBI RVALE1OS, W0
+TLBI RVAALE1OS, W0
+TLBI RIPAS2E1IS, W0
+TLBI RIPAS2LE1IS, W0
+TLBI RIPAS2E1, W0
+TLBI RIPAS2LE1, W0
+TLBI RIPAS2E1OS, W0
+TLBI RIPAS2LE1OS, W0
+TLBI RVAE2, W0
+TLBI RVALE2, W0
+TLBI RVAE2IS, W0
+TLBI RVALE2IS, W0
+TLBI RVAE2OS, W0
+TLBI RVALE2OS, W0
+TLBI RVAE3, W0
+TLBI RVALE3, W0
+TLBI RVAE3IS, W0
+TLBI RVALE3IS, W0
+TLBI RVAE3OS, W0
+TLBI RVALE3OS, W0
+
diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers.d b/gas/testsuite/gas/aarch64/armv8_4-a-registers.d
new file mode 100644 (file)
index 0000000..f643c89
--- /dev/null
@@ -0,0 +1,192 @@
+#as: -march=armv8.4-a
+#objdump: -dr
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+[^:]+:\s+d53c2603      mrs     x3, vsttbr_el2
+[^:]+:\s+d53c260b      mrs     x11, vsttbr_el2
+[^:]+:\s+d53c260f      mrs     x15, vsttbr_el2
+[^:]+:\s+d53c2643      mrs     x3, vstcr_el2
+[^:]+:\s+d53c264b      mrs     x11, vstcr_el2
+[^:]+:\s+d53c264f      mrs     x15, vstcr_el2
+[^:]+:\s+d53be203      mrs     x3, cntp_tval_el0
+[^:]+:\s+d53be20b      mrs     x11, cntp_tval_el0
+[^:]+:\s+d53be20f      mrs     x15, cntp_tval_el0
+[^:]+:\s+d53be223      mrs     x3, cntp_ctl_el0
+[^:]+:\s+d53be22b      mrs     x11, cntp_ctl_el0
+[^:]+:\s+d53be22f      mrs     x15, cntp_ctl_el0
+[^:]+:\s+d53be243      mrs     x3, cntp_cval_el0
+[^:]+:\s+d53be24b      mrs     x11, cntp_cval_el0
+[^:]+:\s+d53be24f      mrs     x15, cntp_cval_el0
+[^:]+:\s+d53be303      mrs     x3, cntv_tval_el0
+[^:]+:\s+d53be30b      mrs     x11, cntv_tval_el0
+[^:]+:\s+d53be30f      mrs     x15, cntv_tval_el0
+[^:]+:\s+d53be323      mrs     x3, cntv_ctl_el0
+[^:]+:\s+d53be32b      mrs     x11, cntv_ctl_el0
+[^:]+:\s+d53be32f      mrs     x15, cntv_ctl_el0
+[^:]+:\s+d53be343      mrs     x3, cntv_cval_el0
+[^:]+:\s+d53be34b      mrs     x11, cntv_cval_el0
+[^:]+:\s+d53be34f      mrs     x15, cntv_cval_el0
+[^:]+:\s+d53ce403      mrs     x3, cnthvs_tval_el2
+[^:]+:\s+d53ce40b      mrs     x11, cnthvs_tval_el2
+[^:]+:\s+d53ce40f      mrs     x15, cnthvs_tval_el2
+[^:]+:\s+d53ce443      mrs     x3, cnthvs_cval_el2
+[^:]+:\s+d53ce44b      mrs     x11, cnthvs_cval_el2
+[^:]+:\s+d53ce44f      mrs     x15, cnthvs_cval_el2
+[^:]+:\s+d53ce423      mrs     x3, cnthvs_ctl_el2
+[^:]+:\s+d53ce42b      mrs     x11, cnthvs_ctl_el2
+[^:]+:\s+d53ce42f      mrs     x15, cnthvs_ctl_el2
+[^:]+:\s+d53ce503      mrs     x3, cnthps_tval_el2
+[^:]+:\s+d53ce50b      mrs     x11, cnthps_tval_el2
+[^:]+:\s+d53ce50f      mrs     x15, cnthps_tval_el2
+[^:]+:\s+d53ce543      mrs     x3, cnthps_cval_el2
+[^:]+:\s+d53ce54b      mrs     x11, cnthps_cval_el2
+[^:]+:\s+d53ce54f      mrs     x15, cnthps_cval_el2
+[^:]+:\s+d53ce523      mrs     x3, cnthps_ctl_el2
+[^:]+:\s+d53ce52b      mrs     x11, cnthps_ctl_el2
+[^:]+:\s+d53ce52f      mrs     x15, cnthps_ctl_el2
+[^:]+:\s+d53c1323      mrs     x3, sder32_el2
+[^:]+:\s+d53c132b      mrs     x11, sder32_el2
+[^:]+:\s+d53c132f      mrs     x15, sder32_el2
+[^:]+:\s+d53c2203      mrs     x3, vncr_el2
+[^:]+:\s+d53c220b      mrs     x11, vncr_el2
+[^:]+:\s+d53c220f      mrs     x15, vncr_el2
+[^:]+:\s+d503415f      msr     dit, #0x1
+[^:]+:\s+d503405f      msr     dit, #0x0
+[^:]+:\s+d51b42a3      msr     dit, x3
+[^:]+:\s+d51b42ab      msr     dit, x11
+[^:]+:\s+d51b42af      msr     dit, x15
+[^:]+:\s+d53b42a3      mrs     x3, dit
+[^:]+:\s+d53b42ab      mrs     x11, dit
+[^:]+:\s+d53b42af      mrs     x15, dit
+[^:]+:\s+d508811f      tlbi    vmalle1os
+[^:]+:\s+d50c811f      tlbi    alle2os
+[^:]+:\s+d50c819f      tlbi    alle1os
+[^:]+:\s+d50e811f      tlbi    alle3os
+[^:]+:\s+d50c81df      tlbi    vmalls12e1os
+[^:]+:\s+d5088123      tlbi    vae1os, x3
+[^:]+:\s+d508812b      tlbi    vae1os, x11
+[^:]+:\s+d508812f      tlbi    vae1os, x15
+[^:]+:\s+d5088143      tlbi    aside1os, x3
+[^:]+:\s+d508814b      tlbi    aside1os, x11
+[^:]+:\s+d508814f      tlbi    aside1os, x15
+[^:]+:\s+d5088163      tlbi    vaae1os, x3
+[^:]+:\s+d508816b      tlbi    vaae1os, x11
+[^:]+:\s+d508816f      tlbi    vaae1os, x15
+[^:]+:\s+d50881a3      tlbi    vale1os, x3
+[^:]+:\s+d50881ab      tlbi    vale1os, x11
+[^:]+:\s+d50881af      tlbi    vale1os, x15
+[^:]+:\s+d50881e3      tlbi    vaale1os, x3
+[^:]+:\s+d50881eb      tlbi    vaale1os, x11
+[^:]+:\s+d50881ef      tlbi    vaale1os, x15
+[^:]+:\s+d50c8403      tlbi    ipas2e1os, x3
+[^:]+:\s+d50c840b      tlbi    ipas2e1os, x11
+[^:]+:\s+d50c840f      tlbi    ipas2e1os, x15
+[^:]+:\s+d50c8483      tlbi    ipas2le1os, x3
+[^:]+:\s+d50c848b      tlbi    ipas2le1os, x11
+[^:]+:\s+d50c848f      tlbi    ipas2le1os, x15
+[^:]+:\s+d50c8123      tlbi    vae2os, x3
+[^:]+:\s+d50c812b      tlbi    vae2os, x11
+[^:]+:\s+d50c812f      tlbi    vae2os, x15
+[^:]+:\s+d50c81a3      tlbi    vale2os, x3
+[^:]+:\s+d50c81ab      tlbi    vale2os, x11
+[^:]+:\s+d50c81af      tlbi    vale2os, x15
+[^:]+:\s+d50e8123      tlbi    vae3os, x3
+[^:]+:\s+d50e812b      tlbi    vae3os, x11
+[^:]+:\s+d50e812f      tlbi    vae3os, x15
+[^:]+:\s+d50e81a3      tlbi    vale3os, x3
+[^:]+:\s+d50e81ab      tlbi    vale3os, x11
+[^:]+:\s+d50e81af      tlbi    vale3os, x15
+[^:]+:\s+d5088623      tlbi    rvae1, x3
+[^:]+:\s+d508862b      tlbi    rvae1, x11
+[^:]+:\s+d508862f      tlbi    rvae1, x15
+[^:]+:\s+d5088663      tlbi    rvaae1, x3
+[^:]+:\s+d508866b      tlbi    rvaae1, x11
+[^:]+:\s+d508866f      tlbi    rvaae1, x15
+[^:]+:\s+d50886a3      tlbi    rvale1, x3
+[^:]+:\s+d50886ab      tlbi    rvale1, x11
+[^:]+:\s+d50886af      tlbi    rvale1, x15
+[^:]+:\s+d50886e3      tlbi    rvaale1, x3
+[^:]+:\s+d50886eb      tlbi    rvaale1, x11
+[^:]+:\s+d50886ef      tlbi    rvaale1, x15
+[^:]+:\s+d5088223      tlbi    rvae1is, x3
+[^:]+:\s+d508822b      tlbi    rvae1is, x11
+[^:]+:\s+d508822f      tlbi    rvae1is, x15
+[^:]+:\s+d5088263      tlbi    rvaae1is, x3
+[^:]+:\s+d508826b      tlbi    rvaae1is, x11
+[^:]+:\s+d508826f      tlbi    rvaae1is, x15
+[^:]+:\s+d50882a3      tlbi    rvale1is, x3
+[^:]+:\s+d50882ab      tlbi    rvale1is, x11
+[^:]+:\s+d50882af      tlbi    rvale1is, x15
+[^:]+:\s+d50882e3      tlbi    rvaale1is, x3
+[^:]+:\s+d50882eb      tlbi    rvaale1is, x11
+[^:]+:\s+d50882ef      tlbi    rvaale1is, x15
+[^:]+:\s+d5088523      tlbi    rvae1os, x3
+[^:]+:\s+d508852b      tlbi    rvae1os, x11
+[^:]+:\s+d508852f      tlbi    rvae1os, x15
+[^:]+:\s+d5088563      tlbi    rvaae1os, x3
+[^:]+:\s+d508856b      tlbi    rvaae1os, x11
+[^:]+:\s+d508856f      tlbi    rvaae1os, x15
+[^:]+:\s+d50885a3      tlbi    rvale1os, x3
+[^:]+:\s+d50885ab      tlbi    rvale1os, x11
+[^:]+:\s+d50885af      tlbi    rvale1os, x15
+[^:]+:\s+d50885e3      tlbi    rvaale1os, x3
+[^:]+:\s+d50885eb      tlbi    rvaale1os, x11
+[^:]+:\s+d50885ef      tlbi    rvaale1os, x15
+[^:]+:\s+d50c8043      tlbi    ripas2e1is, x3
+[^:]+:\s+d50c804b      tlbi    ripas2e1is, x11
+[^:]+:\s+d50c804f      tlbi    ripas2e1is, x15
+[^:]+:\s+d50c80c3      tlbi    ripas2le1is, x3
+[^:]+:\s+d50c80cb      tlbi    ripas2le1is, x11
+[^:]+:\s+d50c80cf      tlbi    ripas2le1is, x15
+[^:]+:\s+d50c8443      tlbi    ripas2e1, x3
+[^:]+:\s+d50c844b      tlbi    ripas2e1, x11
+[^:]+:\s+d50c844f      tlbi    ripas2e1, x15
+[^:]+:\s+d50c84c3      tlbi    ripas2le1, x3
+[^:]+:\s+d50c84cb      tlbi    ripas2le1, x11
+[^:]+:\s+d50c84cf      tlbi    ripas2le1, x15
+[^:]+:\s+d50c8463      tlbi    ripas2e1os, x3
+[^:]+:\s+d50c846b      tlbi    ripas2e1os, x11
+[^:]+:\s+d50c846f      tlbi    ripas2e1os, x15
+[^:]+:\s+d50c84e3      tlbi    ripas2le1os, x3
+[^:]+:\s+d50c84eb      tlbi    ripas2le1os, x11
+[^:]+:\s+d50c84ef      tlbi    ripas2le1os, x15
+[^:]+:\s+d50c8623      tlbi    rvae2, x3
+[^:]+:\s+d50c862b      tlbi    rvae2, x11
+[^:]+:\s+d50c862f      tlbi    rvae2, x15
+[^:]+:\s+d50c86a3      tlbi    rvale2, x3
+[^:]+:\s+d50c86ab      tlbi    rvale2, x11
+[^:]+:\s+d50c86af      tlbi    rvale2, x15
+[^:]+:\s+d50c8223      tlbi    rvae2is, x3
+[^:]+:\s+d50c822b      tlbi    rvae2is, x11
+[^:]+:\s+d50c822f      tlbi    rvae2is, x15
+[^:]+:\s+d50c82a3      tlbi    rvale2is, x3
+[^:]+:\s+d50c82ab      tlbi    rvale2is, x11
+[^:]+:\s+d50c82af      tlbi    rvale2is, x15
+[^:]+:\s+d50c8523      tlbi    rvae2os, x3
+[^:]+:\s+d50c852b      tlbi    rvae2os, x11
+[^:]+:\s+d50c852f      tlbi    rvae2os, x15
+[^:]+:\s+d50c85a3      tlbi    rvale2os, x3
+[^:]+:\s+d50c85ab      tlbi    rvale2os, x11
+[^:]+:\s+d50c85af      tlbi    rvale2os, x15
+[^:]+:\s+d50e8623      tlbi    rvae3, x3
+[^:]+:\s+d50e862b      tlbi    rvae3, x11
+[^:]+:\s+d50e862f      tlbi    rvae3, x15
+[^:]+:\s+d50e86a3      tlbi    rvale3, x3
+[^:]+:\s+d50e86ab      tlbi    rvale3, x11
+[^:]+:\s+d50e86af      tlbi    rvale3, x15
+[^:]+:\s+d50e8223      tlbi    rvae3is, x3
+[^:]+:\s+d50e822b      tlbi    rvae3is, x11
+[^:]+:\s+d50e822f      tlbi    rvae3is, x15
+[^:]+:\s+d50e82a3      tlbi    rvale3is, x3
+[^:]+:\s+d50e82ab      tlbi    rvale3is, x11
+[^:]+:\s+d50e82af      tlbi    rvale3is, x15
+[^:]+:\s+d50e8523      tlbi    rvae3os, x3
+[^:]+:\s+d50e852b      tlbi    rvae3os, x11
+[^:]+:\s+d50e852f      tlbi    rvae3os, x15
+[^:]+:\s+d50e85a3      tlbi    rvale3os, x3
+[^:]+:\s+d50e85ab      tlbi    rvale3os, x11
+[^:]+:\s+d50e85af      tlbi    rvale3os, x15
diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers.s b/gas/testsuite/gas/aarch64/armv8_4-a-registers.s
new file mode 100644 (file)
index 0000000..b909b82
--- /dev/null
@@ -0,0 +1,94 @@
+       .macro gen_mrs reg
+       .irp m, 3, 11, 15
+               MRS X\m, \reg
+       .endr
+       .endm
+
+       .macro gen_tlbi reg
+       .irp m, 3, 11, 15
+               TLBI \reg, X\m
+       .endr
+       .endm
+func:
+       # Secure second stage
+       gen_mrs VSTTBR_EL2
+       gen_mrs VSTCR_EL2
+
+       # Timer changes
+       gen_mrs CNTP_TVAL_EL0
+       gen_mrs CNTP_CTL_EL0
+       gen_mrs CNTP_CVAL_EL0
+       gen_mrs CNTV_TVAL_EL0
+       gen_mrs CNTV_CTL_EL0
+       gen_mrs CNTV_CVAL_EL0
+
+       gen_mrs CNTHVS_TVAL_EL2
+       gen_mrs CNTHVS_CVAL_EL2
+       gen_mrs CNTHVS_CTL_EL2
+       gen_mrs CNTHPS_TVAL_EL2
+       gen_mrs CNTHPS_CVAL_EL2
+       gen_mrs CNTHPS_CTL_EL2
+
+       # Debug state
+       gen_mrs SDER32_EL2
+
+       # Nested Virtualization
+       gen_mrs VNCR_EL2
+
+       # PSTATE
+       MSR DIT, #01
+       MSR DIT, #00
+       MSR DIT, X3
+       MSR DIT, X11
+       MSR DIT, X15
+       gen_mrs DIT
+
+       # TLB Maintenance instructions
+       TLBI VMALLE1OS
+       TLBI ALLE2OS
+       TLBI ALLE1OS
+       TLBI ALLE3OS
+       TLBI VMALLS12E1OS
+       gen_tlbi VAE1OS
+       gen_tlbi ASIDE1OS
+       gen_tlbi VAAE1OS
+       gen_tlbi VALE1OS
+       gen_tlbi VAALE1OS
+       gen_tlbi IPAS2E1OS
+       gen_tlbi IPAS2LE1OS
+       gen_tlbi VAE2OS
+       gen_tlbi VALE2OS
+       gen_tlbi VAE3OS
+       gen_tlbi VALE3OS
+
+       # TLB Range Maintenance Instructions
+       gen_tlbi RVAE1
+       gen_tlbi RVAAE1
+       gen_tlbi RVALE1
+       gen_tlbi RVAALE1
+       gen_tlbi RVAE1IS
+       gen_tlbi RVAAE1IS
+       gen_tlbi RVALE1IS
+       gen_tlbi RVAALE1IS
+       gen_tlbi RVAE1OS
+       gen_tlbi RVAAE1OS
+       gen_tlbi RVALE1OS
+       gen_tlbi RVAALE1OS
+       gen_tlbi RIPAS2E1IS
+       gen_tlbi RIPAS2LE1IS
+       gen_tlbi RIPAS2E1
+       gen_tlbi RIPAS2LE1
+       gen_tlbi RIPAS2E1OS
+       gen_tlbi RIPAS2LE1OS
+       gen_tlbi RVAE2
+       gen_tlbi RVALE2
+       gen_tlbi RVAE2IS
+       gen_tlbi RVALE2IS
+       gen_tlbi RVAE2OS
+       gen_tlbi RVALE2OS
+       gen_tlbi RVAE3
+       gen_tlbi RVALE3
+       gen_tlbi RVAE3IS
+       gen_tlbi RVALE3IS
+       gen_tlbi RVAE3OS
+       gen_tlbi RVALE3OS
index 4056d88408166a91726a496a88c2bc9da8293f48..809cad3117c51611ddee343ce2acc71411a614e5 100644 (file)
@@ -1,3 +1,20 @@
+2017-11-09  Tamar Christina  <tamar.christina@arm.com>
+
+       * aarch64-opc.c (aarch64_sys_regs): Add ARMv8.4-a registers;
+       dit, vstcr_el2, vsttbr_el2, cnthvs_tval_el2, cnthvs_cval_el2,
+       cnthvs_ctl_el2, cnthps_tval_el2, cnthps_cval_el2, cnthps_ctl_el2,
+       sder32_el2, vncr_el2.
+       (aarch64_sys_reg_supported_p): Likewise.
+       (aarch64_pstatefields): Add dit register.
+       (aarch64_pstatefield_supported_p): Likewise.
+       (aarch64_sys_regs_tlbi): Add vmalle1os, vae1os, aside1os, vaae1os,
+       vale1os, vaale1os, ipas2e1os, ipas2le1os, vae2os, vale2os, vmalls12e1os,
+       vae3os, vale3os, alle2os, alle1os, alle3os, rvae1, rvaae1, rvale1,
+       rvaale1, rvae1is, rvaae1is, rvale1is, rvaale1is, rvae1os, rvaae1os,
+       rvale1os, rvaale1os, ripas2e1is, ripas2le1is, ripas2e1, ripas2le1,
+       ripas2e1os, ripas2le1os, rvae2, rvale2, rvae2is, rvale2is, rvae2os,
+       rvale2os, rvae3, rvale3, rvae3is, rvale3is, rvae3os, rvale3os.
+
 2017-11-09  Tamar Christina  <tamar.christina@arm.com>
 
        * aarch64-tbl.h (QL_SHA512UPT, QL_V2SAME2D, QL_V3SAME2D): New.
index 44619062c90d2fd073fcbdf9ffc20d79549cc4df..96ca085d15b96b50bda6c2b62005e5d3ce39c1f4 100644 (file)
@@ -2465,7 +2465,8 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx,
             MSR PAN, #uimm4
             The immediate must be #0 or #1.  */
          if ((opnd->pstatefield == 0x03        /* UAO.  */
-              || opnd->pstatefield == 0x04)    /* PAN.  */
+              || opnd->pstatefield == 0x04     /* PAN.  */
+              || opnd->pstatefield == 0x1a)    /* DIT.  */
              && opnds[1].imm.value > 1)
            {
              set_imm_out_of_range_error (mismatch_detail, idx, 0, 1);
@@ -4031,6 +4032,18 @@ const aarch64_sys_reg aarch64_sys_regs [] =
   { "pmevtyper29_el0",   CPENC(3,3,C14,C15,5), 0 },
   { "pmevtyper30_el0",   CPENC(3,3,C14,C15,6), 0 },
   { "pmccfiltr_el0",     CPENC(3,3,C14,C15,7), 0 },
+
+  { "dit",              CPEN_ (3, C2, 5), F_ARCHEXT },
+  { "vstcr_el2",        CPENC(3, 4, C2, C6, 2), F_ARCHEXT },
+  { "vsttbr_el2",       CPENC(3, 4, C2, C6, 0), F_ARCHEXT },
+  { "cnthvs_tval_el2",  CPENC(3, 4, C14, C4, 0), F_ARCHEXT },
+  { "cnthvs_cval_el2",  CPENC(3, 4, C14, C4, 2), F_ARCHEXT },
+  { "cnthvs_ctl_el2",   CPENC(3, 4, C14, C4, 1), F_ARCHEXT },
+  { "cnthps_tval_el2",  CPENC(3, 4, C14, C5, 0), F_ARCHEXT },
+  { "cnthps_cval_el2",  CPENC(3, 4, C14, C5, 2), F_ARCHEXT },
+  { "cnthps_ctl_el2",   CPENC(3, 4, C14, C5, 1), F_ARCHEXT },
+  { "sder32_el2",       CPENC(3, 4, C1, C3, 1), F_ARCHEXT },
+  { "vncr_el2",                 CPENC(3, 4, C2, C2, 0), F_ARCHEXT },
   { 0,          CPENC(0,0,0,0,0),      0 },
 };
 
@@ -4168,9 +4181,87 @@ aarch64_sys_reg_supported_p (const aarch64_feature_set features,
       && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_SVE))
     return FALSE;
 
+  /* ARMv8.4 features.  */
+
+  /* PSTATE.DIT.  */
+  if (reg->value == CPEN_ (3, C2, 5)
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_4))
+    return FALSE;
+
+  /* Virtualization extensions.  */
+  if ((reg->value == CPENC(3, 4, C2, C6, 2)
+       || reg->value == CPENC(3, 4, C2, C6, 0)
+       || reg->value == CPENC(3, 4, C14, C4, 0)
+       || reg->value == CPENC(3, 4, C14, C4, 2)
+       || reg->value == CPENC(3, 4, C14, C4, 1)
+       || reg->value == CPENC(3, 4, C14, C5, 0)
+       || reg->value == CPENC(3, 4, C14, C5, 2)
+       || reg->value == CPENC(3, 4, C14, C5, 1)
+       || reg->value == CPENC(3, 4, C1, C3, 1)
+       || reg->value == CPENC(3, 4, C2, C2, 0))
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_4))
+    return FALSE;
+
+  /* ARMv8.4 TLB instructions.  */
+  if ((reg->value == CPENS (0, C8, C1, 0)
+       || reg->value == CPENS (0, C8, C1, 1)
+       || reg->value == CPENS (0, C8, C1, 2)
+       || reg->value == CPENS (0, C8, C1, 3)
+       || reg->value == CPENS (0, C8, C1, 5)
+       || reg->value == CPENS (0, C8, C1, 7)
+       || reg->value == CPENS (4, C8, C4, 0)
+       || reg->value == CPENS (4, C8, C4, 4)
+       || reg->value == CPENS (4, C8, C1, 1)
+       || reg->value == CPENS (4, C8, C1, 5)
+       || reg->value == CPENS (4, C8, C1, 6)
+       || reg->value == CPENS (6, C8, C1, 1)
+       || reg->value == CPENS (6, C8, C1, 5)
+       || reg->value == CPENS (4, C8, C1, 0)
+       || reg->value == CPENS (4, C8, C1, 4)
+       || reg->value == CPENS (6, C8, C1, 0)
+       || reg->value == CPENS (0, C8, C6, 1)
+       || reg->value == CPENS (0, C8, C6, 3)
+       || reg->value == CPENS (0, C8, C6, 5)
+       || reg->value == CPENS (0, C8, C6, 7)
+       || reg->value == CPENS (0, C8, C2, 1)
+       || reg->value == CPENS (0, C8, C2, 3)
+       || reg->value == CPENS (0, C8, C2, 5)
+       || reg->value == CPENS (0, C8, C2, 7)
+       || reg->value == CPENS (0, C8, C5, 1)
+       || reg->value == CPENS (0, C8, C5, 3)
+       || reg->value == CPENS (0, C8, C5, 5)
+       || reg->value == CPENS (0, C8, C5, 7)
+       || reg->value == CPENS (4, C8, C0, 2)
+       || reg->value == CPENS (4, C8, C0, 6)
+       || reg->value == CPENS (4, C8, C4, 2)
+       || reg->value == CPENS (4, C8, C4, 6)
+       || reg->value == CPENS (4, C8, C4, 3)
+       || reg->value == CPENS (4, C8, C4, 7)
+       || reg->value == CPENS (4, C8, C6, 1)
+       || reg->value == CPENS (4, C8, C6, 5)
+       || reg->value == CPENS (4, C8, C2, 1)
+       || reg->value == CPENS (4, C8, C2, 5)
+       || reg->value == CPENS (4, C8, C5, 1)
+       || reg->value == CPENS (4, C8, C5, 5)
+       || reg->value == CPENS (6, C8, C6, 1)
+       || reg->value == CPENS (6, C8, C6, 5)
+       || reg->value == CPENS (6, C8, C2, 1)
+       || reg->value == CPENS (6, C8, C2, 5)
+       || reg->value == CPENS (6, C8, C5, 1)
+       || reg->value == CPENS (6, C8, C5, 5))
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_4))
+    return FALSE;
+
   return TRUE;
 }
 
+/* The CPENC below is fairly misleading, the fields
+   here are not in CPENC form. They are in op2op1 form. The fields are encoded
+   by ins_pstatefield, which just shifts the value by the width of the fields
+   in a loop. So if you CPENC them only the first value will be set, the rest
+   are masked out to 0. As an example. op2 = 3, op1=2. CPENC would produce a
+   value of 0b110000000001000000 (0x30040) while what you want is
+   0b011010 (0x1a).  */
 const aarch64_sys_reg aarch64_pstatefields [] =
 {
   { "spsel",            0x05,  0 },
@@ -4178,6 +4269,7 @@ const aarch64_sys_reg aarch64_pstatefields [] =
   { "daifclr",          0x1f,  0 },
   { "pan",             0x04,   F_ARCHEXT },
   { "uao",             0x03,   F_ARCHEXT },
+  { "dit",             0x1a,   F_ARCHEXT },
   { 0,          CPENC(0,0,0,0,0), 0 },
 };
 
@@ -4198,6 +4290,11 @@ aarch64_pstatefield_supported_p (const aarch64_feature_set features,
       && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
     return FALSE;
 
+  /* DIT.  Values are from aarch64_pstatefields.  */
+  if (reg->value == 0x1a
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_4))
+    return FALSE;
+
   return TRUE;
 }
 
@@ -4276,6 +4373,55 @@ const aarch64_sys_ins_reg aarch64_sys_regs_tlbi[] =
     { "vale2",     CPENS (4, C8, C7, 5), F_HASXT },
     { "vale3",     CPENS (6, C8, C7, 5), F_HASXT },
     { "vaale1",    CPENS (0, C8, C7, 7), F_HASXT },
+
+    { "vmalle1os",    CPENS (0, C8, C1, 0), F_ARCHEXT },
+    { "vae1os",       CPENS (0, C8, C1, 1), F_HASXT | F_ARCHEXT },
+    { "aside1os",     CPENS (0, C8, C1, 2), F_HASXT | F_ARCHEXT },
+    { "vaae1os",      CPENS (0, C8, C1, 3), F_HASXT | F_ARCHEXT },
+    { "vale1os",      CPENS (0, C8, C1, 5), F_HASXT | F_ARCHEXT },
+    { "vaale1os",     CPENS (0, C8, C1, 7), F_HASXT | F_ARCHEXT },
+    { "ipas2e1os",    CPENS (4, C8, C4, 0), F_HASXT | F_ARCHEXT },
+    { "ipas2le1os",   CPENS (4, C8, C4, 4), F_HASXT | F_ARCHEXT },
+    { "vae2os",       CPENS (4, C8, C1, 1), F_HASXT | F_ARCHEXT },
+    { "vale2os",      CPENS (4, C8, C1, 5), F_HASXT | F_ARCHEXT },
+    { "vmalls12e1os", CPENS (4, C8, C1, 6), F_ARCHEXT },
+    { "vae3os",       CPENS (6, C8, C1, 1), F_HASXT | F_ARCHEXT },
+    { "vale3os",      CPENS (6, C8, C1, 5), F_HASXT | F_ARCHEXT },
+    { "alle2os",      CPENS (4, C8, C1, 0), F_ARCHEXT },
+    { "alle1os",      CPENS (4, C8, C1, 4), F_ARCHEXT },
+    { "alle3os",      CPENS (6, C8, C1, 0), F_ARCHEXT },
+
+    { "rvae1",      CPENS (0, C8, C6, 1), F_HASXT | F_ARCHEXT },
+    { "rvaae1",     CPENS (0, C8, C6, 3), F_HASXT | F_ARCHEXT },
+    { "rvale1",     CPENS (0, C8, C6, 5), F_HASXT | F_ARCHEXT },
+    { "rvaale1",    CPENS (0, C8, C6, 7), F_HASXT | F_ARCHEXT },
+    { "rvae1is",    CPENS (0, C8, C2, 1), F_HASXT | F_ARCHEXT },
+    { "rvaae1is",   CPENS (0, C8, C2, 3), F_HASXT | F_ARCHEXT },
+    { "rvale1is",   CPENS (0, C8, C2, 5), F_HASXT | F_ARCHEXT },
+    { "rvaale1is",  CPENS (0, C8, C2, 7), F_HASXT | F_ARCHEXT },
+    { "rvae1os",    CPENS (0, C8, C5, 1), F_HASXT | F_ARCHEXT },
+    { "rvaae1os",   CPENS (0, C8, C5, 3), F_HASXT | F_ARCHEXT },
+    { "rvale1os",   CPENS (0, C8, C5, 5), F_HASXT | F_ARCHEXT },
+    { "rvaale1os",  CPENS (0, C8, C5, 7), F_HASXT | F_ARCHEXT },
+    { "ripas2e1is", CPENS (4, C8, C0, 2), F_HASXT | F_ARCHEXT },
+    { "ripas2le1is",CPENS (4, C8, C0, 6), F_HASXT | F_ARCHEXT },
+    { "ripas2e1",   CPENS (4, C8, C4, 2), F_HASXT | F_ARCHEXT },
+    { "ripas2le1",  CPENS (4, C8, C4, 6), F_HASXT | F_ARCHEXT },
+    { "ripas2e1os", CPENS (4, C8, C4, 3), F_HASXT | F_ARCHEXT },
+    { "ripas2le1os",CPENS (4, C8, C4, 7), F_HASXT | F_ARCHEXT },
+    { "rvae2",      CPENS (4, C8, C6, 1), F_HASXT | F_ARCHEXT },
+    { "rvale2",     CPENS (4, C8, C6, 5), F_HASXT | F_ARCHEXT },
+    { "rvae2is",    CPENS (4, C8, C2, 1), F_HASXT | F_ARCHEXT },
+    { "rvale2is",   CPENS (4, C8, C2, 5), F_HASXT | F_ARCHEXT },
+    { "rvae2os",    CPENS (4, C8, C5, 1), F_HASXT | F_ARCHEXT },
+    { "rvale2os",   CPENS (4, C8, C5, 5), F_HASXT | F_ARCHEXT },
+    { "rvae3",      CPENS (6, C8, C6, 1), F_HASXT | F_ARCHEXT },
+    { "rvale3",     CPENS (6, C8, C6, 5), F_HASXT | F_ARCHEXT },
+    { "rvae3is",    CPENS (6, C8, C2, 1), F_HASXT | F_ARCHEXT },
+    { "rvale3is",   CPENS (6, C8, C2, 5), F_HASXT | F_ARCHEXT },
+    { "rvae3os",    CPENS (6, C8, C5, 1), F_HASXT | F_ARCHEXT },
+    { "rvale3os",   CPENS (6, C8, C5, 5), F_HASXT | F_ARCHEXT },
+
     { 0,       CPENS(0,0,0,0), 0 }
 };
 
This page took 0.035437 seconds and 4 git commands to generate.