aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2022-01-06 16:22:54 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2022-01-06 16:22:54 +0000
commit27297937e0c648cdf115ecbceb4ba25dfefe7492 (patch)
tree4cf2cea710ecf9e12d951a994f90edbdb03223ec /gas
parent41e321a8973edf99f69eb3f11cc076a69be726af (diff)
downloadgdb-27297937e0c648cdf115ecbceb4ba25dfefe7492.zip
gdb-27297937e0c648cdf115ecbceb4ba25dfefe7492.tar.gz
gdb-27297937e0c648cdf115ecbceb4ba25dfefe7492.tar.bz2
aarch64: Add support for new SME instructions
This patch adds support for three new SME instructions: ADDSPL, ADDSVL and RDSVL. They behave like ADDPL, ADDVL and RDVL, but read the streaming vector length instead of the current vector length. opcodes/ * aarch64-tbl.h (aarch64_opcode_table): Add ADDSPL, ADDSVL and RDSVL. * aarch64-dis-2.c: Regenerate. gas/ * testsuite/gas/aarch64/sme.s, testsuite/gas/aarch64/sme.d: Add tests for ADDSPL, ADDSVL and RDSVL.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/gas/aarch64/sme.d25
-rw-r--r--gas/testsuite/gas/aarch64/sme.s31
2 files changed, 56 insertions, 0 deletions
diff --git a/gas/testsuite/gas/aarch64/sme.d b/gas/testsuite/gas/aarch64/sme.d
index 673ac79..f5cf1f0 100644
--- a/gas/testsuite/gas/aarch64/sme.d
+++ b/gas/testsuite/gas/aarch64/sme.d
@@ -91,3 +91,28 @@ Disassembly of section \.text:
144: a1a1f893 umops za3.s, p6/m, p7/m, z4.b, z1.b
148: a1817083 usmopa za3.s, p4/m, p3/m, z4.b, z1.b
14c: a181f893 usmops za3.s, p6/m, p7/m, z4.b, z1.b
+[^:]+: 04605800 addspl x0, x0, #0
+[^:]+: 04605801 addspl x1, x0, #0
+[^:]+: 0460581f addspl sp, x0, #0
+[^:]+: 04625800 addspl x0, x2, #0
+[^:]+: 047f5800 addspl x0, sp, #0
+[^:]+: 04605be0 addspl x0, x0, #31
+[^:]+: 04605c00 addspl x0, x0, #-32
+[^:]+: 04605c20 addspl x0, x0, #-31
+[^:]+: 04605fe0 addspl x0, x0, #-1
+[^:]+: 04205800 addsvl x0, x0, #0
+[^:]+: 04205801 addsvl x1, x0, #0
+[^:]+: 0420581f addsvl sp, x0, #0
+[^:]+: 04225800 addsvl x0, x2, #0
+[^:]+: 043f5800 addsvl x0, sp, #0
+[^:]+: 04205be0 addsvl x0, x0, #31
+[^:]+: 04205c00 addsvl x0, x0, #-32
+[^:]+: 04205c20 addsvl x0, x0, #-31
+[^:]+: 04205fe0 addsvl x0, x0, #-1
+[^:]+: 04bf5800 rdsvl x0, #0
+[^:]+: 04bf5801 rdsvl x1, #0
+[^:]+: 04bf581f rdsvl xzr, #0
+[^:]+: 04bf5be0 rdsvl x0, #31
+[^:]+: 04bf5c00 rdsvl x0, #-32
+[^:]+: 04bf5c20 rdsvl x0, #-31
+[^:]+: 04bf5fe0 rdsvl x0, #-1
diff --git a/gas/testsuite/gas/aarch64/sme.s b/gas/testsuite/gas/aarch64/sme.s
index ad48fa0..659f141 100644
--- a/gas/testsuite/gas/aarch64/sme.s
+++ b/gas/testsuite/gas/aarch64/sme.s
@@ -121,3 +121,34 @@ umopa foo.s, p6/m, p7/m, z4.b, z1.b
umops foo.s, p6/m, p7/m, z4.b, z1.b
usmopa foo.s, p4/m, p3/m, z4.b, z1.b
usmops foo.s, p6/m, p7/m, z4.b, z1.b
+
+/* ADDSPL. */
+addspl x0, x0, #0
+addspl x1, x0, #0
+addspl sp, x0, #0
+addspl x0, x2, #0
+addspl x0, sp, #0
+addspl x0, x0, #31
+addspl x0, x0, #-32
+addspl x0, x0, #-31
+addspl x0, x0, #-1
+
+/* ADDSVL. */
+addsvl x0, x0, #0
+addsvl x1, x0, #0
+addsvl sp, x0, #0
+addsvl x0, x2, #0
+addsvl x0, sp, #0
+addsvl x0, x0, #31
+addsvl x0, x0, #-32
+addsvl x0, x0, #-31
+addsvl x0, x0, #-1
+
+/* RDSVL. */
+rdsvl x0, #0
+rdsvl x1, #0
+rdsvl xzr, #0
+rdsvl x0, #31
+rdsvl x0, #-32
+rdsvl x0, #-31
+rdsvl x0, #-1