]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[Aarch64] Support ARMv8.2 AT instructions
authorMatthew Wahab <matthew.wahab@arm.com>
Thu, 10 Dec 2015 16:58:51 +0000 (16:58 +0000)
committerMatthew Wahab <matthew.wahab@arm.com>
Mon, 14 Dec 2015 14:13:25 +0000 (14:13 +0000)
ARMv8.2 adds new instructions AT S1E1RP and AT S1E1WP to Aarch64. This
patch adds support for the instructions, making them available when
-march=armv8.2-a is selected.

gas/testsuite/
2015-12-10  Matthew Wahab  <matthew.wahab@arm.com>

* gas/aarch64/sysreg-2.d: Update for new tests for AT S1E1RP and
AT S1E1WP.
* gas/aarch64/sysreg-2.s: Add tests for AT S1E1RP and AT S1E1WP.

opcodes/
2015-12-10  Matthew Wahab  <matthew.wahab@arm.com>

* aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
(aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
feature test for "s1e1rp" and "s1e1wp".

Change-Id: I09e1044b629ab0a34b03c423e8d4e71ff92daad4

gas/testsuite/ChangeLog
gas/testsuite/gas/aarch64/sysreg-2.d
gas/testsuite/gas/aarch64/sysreg-2.s
opcodes/ChangeLog
opcodes/aarch64-opc.c

index e7ba8ef978cc9e0a54bcf1b71baa1d9ef067fc63..19bc896879f9feba45f084045563413d32da424e 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-14  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * gas/aarch64/sysreg-2.d: Update for new tests for AT S1E1RP and
+       AT S1E1WP.
+       * gas/aarch64/sysreg-2.s: Add tests for AT S1E1RP and AT S1E1WP.
+
 2015-12-14  Matthew Wahab  <matthew.wahab@arm.com>
 
        * gas/aarch64/sysreg-2.d: Add tests for dc instruction.
index dffe08f83e43526bb5fc59137cbbb878be1d6ce5..f73412f0dd0d7e13440eaa82254f096c55e47918 100644 (file)
@@ -30,3 +30,5 @@ Disassembly of section .text:
   [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
index 62b3a5e8af316a8affb03eb79371ca7bad3a8e08..f89d05796921024e3290f7dc1366e312b081b400 100644 (file)
@@ -36,3 +36,8 @@
        dc cvac, x0
        dc cvau, x1
        dc cvap, x2
+
+       /* AT.  */
+
+       at s1e1rp, x0
+       at s1e1wp, x1
index 79fe6649df5d15b9ad9c654f534c0b28de4742bf..8244cd6a56c6eb6de24e04cfad378f2cbe248984 100644 (file)
@@ -1,3 +1,9 @@
+2015-12-14  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * aarch64-opc.c (aarch64_sys_regs_at): Add "s1e1rp" and "s1e1wp".
+       (aarch64_sys_ins_reg_supported_p): Add ARMv8.2 system register
+       feature test for "s1e1rp" and "s1e1wp".
+
 2015-12-14  Matthew Wahab  <matthew.wahab@arm.com>
 
        * aarch64-opc.c (aarch64_sys_regs_dc): Add "cvap".
index 08d8d5d67a1cd8e787a272838881d16562486076..816e6066121dd9caf8ed38cf6634b72b68733a84 100644 (file)
@@ -3237,6 +3237,12 @@ aarch64_pstatefield_supported_p (const aarch64_feature_set features,
       && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
     return FALSE;
 
+  /* AT S1E1RP, AT S1E1WP.  Values are from aarch64_sys_regs_at.  */
+  if ((reg->value == CPENS (0, C7, C9, 0)
+       || reg->value == CPENS (0, C7, C9, 1))
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_2))
+    return FALSE;
+
   return TRUE;
 }
 
@@ -3276,6 +3282,8 @@ const aarch64_sys_ins_reg aarch64_sys_regs_at[] =
     { "s1e2w",      CPENS (4, C7, C8, 1), F_HASXT },
     { "s1e3r",      CPENS (6, C7, C8, 0), F_HASXT },
     { "s1e3w",      CPENS (6, C7, C8, 1), F_HASXT },
+    { "s1e1rp",     CPENS (0, C7, C9, 0), F_HASXT | F_ARCHEXT },
+    { "s1e1wp",     CPENS (0, C7, C9, 1), F_HASXT | F_ARCHEXT },
     { 0,       CPENS(0,0,0,0), 0 }
 };