diff options
author | Victor Do Nascimento <victor.donascimento@arm.com> | 2023-09-12 13:10:14 +0100 |
---|---|---|
committer | Victor Do Nascimento <victor.donascimento@arm.com> | 2023-11-07 21:54:19 +0000 |
commit | f3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c (patch) | |
tree | befa3e9332d98f77d7168b4b0a11f3a09909e1e1 /gas | |
parent | f0d70d8ee63b6f6a59cf4a10268f546b0bc80777 (diff) | |
download | gdb-f3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c.zip gdb-f3f6c0df60c4e8a6c3409db4f23f2cdec5a9d41c.tar.gz gdb-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/NEWS | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/lse128-atomic.d | 32 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/lse128-atomic.s | 33 |
3 files changed, 67 insertions, 0 deletions
@@ -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 |