aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorSudakshina Das <sudi.das@arm.com>2019-04-11 10:13:23 +0100
committerSudakshina Das <sudi.das@arm.com>2019-04-11 10:13:23 +0100
commite54010f1aeb050cb9d65862a0afe9095a7a85f27 (patch)
tree9d730c0e01304541dbbd95b4113a60b56c8138c2 /gas
parent68811f8ff84895ef1cad37ac6947f1a340dd2ae2 (diff)
downloadgdb-e54010f1aeb050cb9d65862a0afe9095a7a85f27.zip
gdb-e54010f1aeb050cb9d65862a0afe9095a7a85f27.tar.gz
gdb-e54010f1aeb050cb9d65862a0afe9095a7a85f27.tar.bz2
[BINUTILS, AArch64, 1/2] Add new LDGM/STGM instruction
This patch adds the new LDGM/STGM instructions of the Armv8.5-A Memory Tagging Extension. This is part of the changes that have been introduced recently in the 00bet10 release The instructions are as follows: LDGM Xt, [<Xn|SP>] STGM Xt, [<Xn|SP>] *** gas/ChangeLog *** 2019-04-11 Sudakshina Das <sudi.das@arm.com> * testsuite/gas/aarch64/armv8_5-a-memtag.d: New tests for ldgm and stgm. * testsuite/gas/aarch64/armv8_5-a-memtag.s: Likewise. * testsuite/gas/aarch64/illegal-memtag.l: Likewise. * testsuite/gas/aarch64/illegal-memtag.s: Likewise. *** opcodes/ChangeLog *** 2019-04-11 Sudakshina Das <sudi.das@arm.com> * aarch64-asm-2.c: Regenerated. * aarch64-dis-2.c: Likewise. * aarch64-opc-2.c: Likewise. * aarch64-tbl.h (aarch64_opcode): Add new ldgm and stgm.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/testsuite/gas/aarch64/armv8_5-a-memtag.d12
-rw-r--r--gas/testsuite/gas/aarch64/armv8_5-a-memtag.s2
-rw-r--r--gas/testsuite/gas/aarch64/illegal-memtag.l8
-rw-r--r--gas/testsuite/gas/aarch64/illegal-memtag.s10
5 files changed, 39 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 75f4414..2ae6e05 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2019-04-11 Sudakshina Das <sudi.das@arm.com>
+
+ * testsuite/gas/aarch64/armv8_5-a-memtag.d: New tests for ldgm and stgm.
+ * testsuite/gas/aarch64/armv8_5-a-memtag.s: Likewise.
+ * testsuite/gas/aarch64/illegal-memtag.l: Likewise.
+ * testsuite/gas/aarch64/illegal-memtag.s: Likewise.
+
2019-04-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/tc-i386.c (need_plt32_p) [TE_SOLARIS]: Return FALSE.
diff --git a/gas/testsuite/gas/aarch64/armv8_5-a-memtag.d b/gas/testsuite/gas/aarch64/armv8_5-a-memtag.d
index 53a95fb..1075a12 100644
--- a/gas/testsuite/gas/aarch64/armv8_5-a-memtag.d
+++ b/gas/testsuite/gas/aarch64/armv8_5-a-memtag.d
@@ -143,3 +143,15 @@ Disassembly of section \.text:
.*: d9200379 stzgm x25, \[x27\]
.*: d92003e0 stzgm x0, \[sp\]
.*: d920001f stzgm xzr, \[x0\]
+.*: d9e00000 ldgm x0, \[x0\]
+.*: d9e0001b ldgm x27, \[x0\]
+.*: d9e00360 ldgm x0, \[x27\]
+.*: d9e00379 ldgm x25, \[x27\]
+.*: d9e003e0 ldgm x0, \[sp\]
+.*: d9e0001f ldgm xzr, \[x0\]
+.*: d9a00000 stgm x0, \[x0\]
+.*: d9a0001b stgm x27, \[x0\]
+.*: d9a00360 stgm x0, \[x27\]
+.*: d9a00379 stgm x25, \[x27\]
+.*: d9a003e0 stgm x0, \[sp\]
+.*: d9a0001f stgm xzr, \[x0\]
diff --git a/gas/testsuite/gas/aarch64/armv8_5-a-memtag.s b/gas/testsuite/gas/aarch64/armv8_5-a-memtag.s
index 2ca1a68..50c9962 100644
--- a/gas/testsuite/gas/aarch64/armv8_5-a-memtag.s
+++ b/gas/testsuite/gas/aarch64/armv8_5-a-memtag.s
@@ -113,3 +113,5 @@ func:
ldg x0, [x0, #-4096]
expand_ldg_bulk stzgm
+ expand_ldg_bulk ldgm
+ expand_ldg_bulk stgm
diff --git a/gas/testsuite/gas/aarch64/illegal-memtag.l b/gas/testsuite/gas/aarch64/illegal-memtag.l
index aa79aac..693410b 100644
--- a/gas/testsuite/gas/aarch64/illegal-memtag.l
+++ b/gas/testsuite/gas/aarch64/illegal-memtag.l
@@ -14,6 +14,10 @@
[^:]*:[0-9]+: Error: immediate offset out of range -1024 to 1008 at operand 3 -- `stgp x1,x2,\[x3,#-1025\]'
[^:]*:[0-9]+: Error: the optional immediate offset can only be 0 at operand 2 -- `stzgm x2,\[x3,#16\]'
[^:]*:[0-9]+: Error: invalid addressing mode at operand 2 -- `stzgm x4,\[x5,#16\]!'
+[^:]*:[0-9]+: Error: the optional immediate offset can only be 0 at operand 2 -- `ldgm x2,\[x3,#16\]'
+[^:]*:[0-9]+: Error: invalid addressing mode at operand 2 -- `ldgm x4,\[x5,#16\]!'
+[^:]*:[0-9]+: Error: the optional immediate offset can only be 0 at operand 2 -- `stgm x2,\[x3,#16\]'
+[^:]*:[0-9]+: Error: invalid addressing mode at operand 2 -- `stgm x4,\[x5,#16\]!'
[^:]*:[0-9]+: Error: operand 1 must be an integer or stack pointer register -- `irg xzr,x2,x3'
[^:]*:[0-9]+: Error: operand 2 must be an integer or stack pointer register -- `irg x1,xzr,x3'
[^:]*:[0-9]+: Error: operand 3 must be an integer register -- `irg x1,x2,sp'
@@ -45,3 +49,7 @@
[^:]*:[0-9]+: Error: 64-bit integer or SP register expected at operand 2 -- `ldg x0,\[xzr,#16\]'
[^:]*:[0-9]+: Error: 64-bit integer or SP register expected at operand 2 -- `stzgm x0,\[xzr\]'
[^:]*:[0-9]+: Error: operand 1 must be an integer register -- `stzgm sp,\[x3\]'
+[^:]*:[0-9]+: Error: 64-bit integer or SP register expected at operand 2 -- `ldgm x0,\[xzr\]'
+[^:]*:[0-9]+: Error: operand 1 must be an integer register -- `ldgm sp,\[x3\]'
+[^:]*:[0-9]+: Error: 64-bit integer or SP register expected at operand 2 -- `stgm x0,\[xzr\]'
+[^:]*:[0-9]+: Error: operand 1 must be an integer register -- `stgm sp,\[x3\]'
diff --git a/gas/testsuite/gas/aarch64/illegal-memtag.s b/gas/testsuite/gas/aarch64/illegal-memtag.s
index 9c9c48b..2aaabc1 100644
--- a/gas/testsuite/gas/aarch64/illegal-memtag.s
+++ b/gas/testsuite/gas/aarch64/illegal-memtag.s
@@ -24,6 +24,12 @@ func:
stzgm x2, [x3, #16]
stzgm x4, [x5, #16]!
+ # LDGM/STGM
+ ldgm x2, [x3, #16]
+ ldgm x4, [x5, #16]!
+ stgm x2, [x3, #16]
+ stgm x4, [x5, #16]!
+
# Illegal SP/XZR registers
irg xzr, x2, x3
irg x1, xzr, x3
@@ -59,3 +65,7 @@ func:
# Xt == Xn with writeback should not complain
st2g x2, [x2, #0]!
stzg x2, [x2], #0
+ ldgm x0, [xzr]
+ ldgm sp, [x3]
+ stgm x0, [xzr]
+ stgm sp, [x3]