aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorVictor Do Nascimento <victor.donascimento@arm.com>2023-09-12 13:10:14 +0100
committerVictor Do Nascimento <victor.donascimento@arm.com>2023-11-07 21:54:19 +0000
commitf3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c (patch)
treebefa3e9332d98f77d7168b4b0a11f3a09909e1e1 /gas
parentf0d70d8ee63b6f6a59cf4a10268f546b0bc80777 (diff)
downloadbinutils-f3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c.zip
binutils-f3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c.tar.gz
binutils-f3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c.tar.bz2
aarch64: Add LSE128 instructions
Implement, together with the necessary tests, the following new LSE128 atomic instructions: * Atomic bit clear on quadword in memory (ldclrp{a|l|al}); * Atomic bit set on quadword in memory (ldsetp{a|l|al}); * Swap quadword in memory (swpp{a|l|al}); gas/ChangeLog: * testsuite/gas/aarch64/lse128-atomic.d: New. * testsuite/gas/aarch64/lse128-atomic.s: Likewise. opcodes/ChangeLog: * aarch64-tbl.h (ldclrp): new _LSE128_INSN entry. (ldclrpa): Likewise. (ldclrpal): Likewise. (ldclrpl): Likewise. (ldsetp): Likewise. (ldsetpa): Likewise. (ldsetpal): Likewise. (ldsetpl): Likewise. (swpp): Likewise. (swppa): Likewise. (swppal): Likewise. (swppl): Likewise. * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Likewise. * aarch64-opc-2.c: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/NEWS2
-rw-r--r--gas/testsuite/gas/aarch64/lse128-atomic.d32
-rw-r--r--gas/testsuite/gas/aarch64/lse128-atomic.s33
3 files changed, 67 insertions, 0 deletions
diff --git a/gas/NEWS b/gas/NEWS
index a6ac839..ddf48fc 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,7 @@
-*- text -*-
+* Add support for 128-bit Atomic Instructions (LSE128) for AArch64.
+
* Add support for Guarded Control Stack (GCS) for AArch64.
* Add support for AArch64 Check Feature Status Extension (CHK).
diff --git a/gas/testsuite/gas/aarch64/lse128-atomic.d b/gas/testsuite/gas/aarch64/lse128-atomic.d
new file mode 100644
index 0000000..bea83fe
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/lse128-atomic.d
@@ -0,0 +1,32 @@
+#objdump: -dr
+#as:-march=armv9-a+lse128
+
+.*: file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+ 0: 19211040 ldclrp x0, x1, \[x2\]
+ 4: 192313e2 ldclrp x2, x3, \[sp\]
+ 8: 19a11040 ldclrpa x0, x1, \[x2\]
+ c: 19a313e2 ldclrpa x2, x3, \[sp\]
+ 10: 19e11040 ldclrpal x0, x1, \[x2\]
+ 14: 19e313e2 ldclrpal x2, x3, \[sp\]
+ 18: 19611040 ldclrpl x0, x1, \[x2\]
+ 1c: 196313e2 ldclrpl x2, x3, \[sp\]
+ 20: 19213040 ldsetp x0, x1, \[x2\]
+ 24: 192333e2 ldsetp x2, x3, \[sp\]
+ 28: 19a13040 ldsetpa x0, x1, \[x2\]
+ 2c: 19a333e2 ldsetpa x2, x3, \[sp\]
+ 30: 19e13040 ldsetpal x0, x1, \[x2\]
+ 34: 19e333e2 ldsetpal x2, x3, \[sp\]
+ 38: 19613040 ldsetpl x0, x1, \[x2\]
+ 3c: 196333e2 ldsetpl x2, x3, \[sp\]
+ 40: 19218040 swpp x0, x1, \[x2\]
+ 44: 192383e2 swpp x2, x3, \[sp\]
+ 48: 19a18040 swppa x0, x1, \[x2\]
+ 4c: 19a383e2 swppa x2, x3, \[sp\]
+ 50: 19e18040 swppal x0, x1, \[x2\]
+ 54: 19e383e2 swppal x2, x3, \[sp\]
+ 58: 19618040 swppl x0, x1, \[x2\]
+ 5c: 196383e2 swppl x2, x3, \[sp\] \ No newline at end of file
diff --git a/gas/testsuite/gas/aarch64/lse128-atomic.s b/gas/testsuite/gas/aarch64/lse128-atomic.s
new file mode 100644
index 0000000..802f1b7
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/lse128-atomic.s
@@ -0,0 +1,33 @@
+/* lse128-atomic.s Test file For AArch64 LSE128 atomic instructions
+ encoding.
+
+ Copyright (C) 2014-2023 Free Software Foundation, Inc.
+ Contributed by ARM Ltd.
+
+ This file is part of GAS.
+
+ GAS is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the license, or
+ (at your option) any later version.
+
+ GAS is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING3. If not,
+ see <http://www.gnu.org/licenses/>. */
+
+ .macro format_0 op
+ .irp suffix, , a, al, l
+ \op\suffix x0, x1, [x2]
+ \op\suffix x2, x3, [sp]
+ .endr
+ .endm
+
+func:
+ format_0 ldclrp
+ format_0 ldsetp
+ format_0 swpp