aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2023-03-30 11:09:15 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2023-03-30 11:09:15 +0100
commit261f8708dbbb2c0cc1e7be7986083c6a81005b2e (patch)
treebe39b1b930d71d165eed78b343f1febceb49201c /gas
parenta42de2296a069aa3037594585994b2d376b0baff (diff)
downloadbinutils-261f8708dbbb2c0cc1e7be7986083c6a81005b2e.zip
binutils-261f8708dbbb2c0cc1e7be7986083c6a81005b2e.tar.gz
binutils-261f8708dbbb2c0cc1e7be7986083c6a81005b2e.tar.bz2
aarch64: Add the SME2 MOPA and MOPS instructions
[BSU]MOP[AS] share the same format.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21-invalid.d3
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21-invalid.l18
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21-invalid.s12
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21-noarch.d3
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21-noarch.l43
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21.d51
-rw-r--r--gas/testsuite/gas/aarch64/sme2-21.s47
7 files changed, 177 insertions, 0 deletions
diff --git a/gas/testsuite/gas/aarch64/sme2-21-invalid.d b/gas/testsuite/gas/aarch64/sme2-21-invalid.d
new file mode 100644
index 0000000..5d1d1f4
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21-invalid.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a
+#source: sme2-21-invalid.s
+#error_output: sme2-21-invalid.l
diff --git a/gas/testsuite/gas/aarch64/sme2-21-invalid.l b/gas/testsuite/gas/aarch64/sme2-21-invalid.l
new file mode 100644
index 0000000..c148ab2
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21-invalid.l
@@ -0,0 +1,18 @@
+[^ :]+: Assembler messages:
+[^ :]+:[0-9]+: Error: expected a ZA tile at operand 1 -- `bmopa 0,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: expected an SVE predicate register at operand 2 -- `bmopa za0\.s,0,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: expected an SVE predicate register at operand 3 -- `bmopa za0\.s,p0/m,0,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 4 -- `bmopa za0\.s,p0/m,p0/m,0,z0\.s'
+[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 5 -- `bmopa za0\.s,p0/m,p0/m,z0\.s,0'
+[^ :]+:[0-9]+: Error: operand mismatch -- `bmopa za0\.b,p0/m,p0/m,z0\.b,z0\.b'
+[^ :]+:[0-9]+: Info: did you mean this\?
+[^ :]+:[0-9]+: Info: bmopa za0\.s, p0/m, p0/m, z0\.s, z0\.s
+[^ :]+:[0-9]+: Error: operand mismatch -- `bmopa za0\.b,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Info: did you mean this\?
+[^ :]+:[0-9]+: Info: bmopa za0\.s, p0/m, p0/m, z0\.s, z0\.s
+[^ :]+:[0-9]+: Error: operand mismatch -- `bmopa za0\.s,p0/m,p0/m,z0\.b,z0\.b'
+[^ :]+:[0-9]+: Info: did you mean this\?
+[^ :]+:[0-9]+: Info: bmopa za0\.s, p0/m, p0/m, z0\.s, z0\.s
+[^ :]+:[0-9]+: Error: ZA tile number out of range at operand 1 -- `bmopa za4\.s,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: p0-p7 expected at operand 2 -- `bmopa za0\.s,p8/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: ZA tile number out of range at operand 1 -- `bmopa za4\.s,p0/m,p8/m,z0\.s,z0\.s'
diff --git a/gas/testsuite/gas/aarch64/sme2-21-invalid.s b/gas/testsuite/gas/aarch64/sme2-21-invalid.s
new file mode 100644
index 0000000..91a3e8f
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21-invalid.s
@@ -0,0 +1,12 @@
+ bmopa 0, p0/m, p0/m, z0.s, z0.s
+ bmopa za0.s, 0, p0/m, z0.s, z0.s
+ bmopa za0.s, p0/m, 0, z0.s, z0.s
+ bmopa za0.s, p0/m, p0/m, 0, z0.s
+ bmopa za0.s, p0/m, p0/m, z0.s, 0
+
+ bmopa za0.b, p0/m, p0/m, z0.b, z0.b
+ bmopa za0.b, p0/m, p0/m, z0.s, z0.s
+ bmopa za0.s, p0/m, p0/m, z0.b, z0.b
+ bmopa za4.s, p0/m, p0/m, z0.s, z0.s
+ bmopa za0.s, p8/m, p0/m, z0.s, z0.s
+ bmopa za4.s, p0/m, p8/m, z0.s, z0.s
diff --git a/gas/testsuite/gas/aarch64/sme2-21-noarch.d b/gas/testsuite/gas/aarch64/sme2-21-noarch.d
new file mode 100644
index 0000000..830ef05
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21-noarch.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a+sme
+#source: sme2-21.s
+#error_output: sme2-21-noarch.l
diff --git a/gas/testsuite/gas/aarch64/sme2-21-noarch.l b/gas/testsuite/gas/aarch64/sme2-21-noarch.l
new file mode 100644
index 0000000..64842d9
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21-noarch.l
@@ -0,0 +1,43 @@
+[^ :]+: Assembler messages:
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za0\.s,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za3\.s,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za0\.s,p7/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za0\.s,p0/m,p7/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za0\.s,p0/m,p0/m,z31\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za0\.s,p0/m,p0/m,z0\.s,z31\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmopa za2\.s,p6/m,p3/m,z19\.s,z8\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za0\.s,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za3\.s,p0/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za0\.s,p7/m,p0/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za0\.s,p0/m,p7/m,z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za0\.s,p0/m,p0/m,z31\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za0\.s,p0/m,p0/m,z0\.s,z31\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `bmops za1\.s,p3/m,p5/m,z24\.s,z6\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za0\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za3\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za0\.s,p7/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za0\.s,p0/m,p7/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za0\.s,p0/m,p0/m,z31\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za0\.s,p0/m,p0/m,z0\.h,z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smopa za1\.s,p2/m,p3/m,z14\.h,z25\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za0\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za3\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za0\.s,p7/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za0\.s,p0/m,p7/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za0\.s,p0/m,p0/m,z31\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za0\.s,p0/m,p0/m,z0\.h,z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `smops za1\.s,p2/m,p3/m,z14\.h,z25\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za0\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za3\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za0\.s,p7/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za0\.s,p0/m,p7/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za0\.s,p0/m,p0/m,z31\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za0\.s,p0/m,p0/m,z0\.h,z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umopa za1\.s,p2/m,p3/m,z14\.h,z25\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za0\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za3\.s,p0/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za0\.s,p7/m,p0/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za0\.s,p0/m,p7/m,z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za0\.s,p0/m,p0/m,z31\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za0\.s,p0/m,p0/m,z0\.h,z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `umops za1\.s,p2/m,p3/m,z14\.h,z25\.h'
diff --git a/gas/testsuite/gas/aarch64/sme2-21.d b/gas/testsuite/gas/aarch64/sme2-21.d
new file mode 100644
index 0000000..255a56d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21.d
@@ -0,0 +1,51 @@
+#as: -march=armv8-a+sme2
+#objdump: -dr
+
+[^:]+: file format .*
+
+
+[^:]+:
+
+[^:]+:
+[^:]+: 80800008 bmopa za0\.s, p0/m, p0/m, z0\.s, z0\.s
+[^:]+: 8080000b bmopa za3\.s, p0/m, p0/m, z0\.s, z0\.s
+[^:]+: 80801c08 bmopa za0\.s, p7/m, p0/m, z0\.s, z0\.s
+[^:]+: 8080e008 bmopa za0\.s, p0/m, p7/m, z0\.s, z0\.s
+[^:]+: 808003e8 bmopa za0\.s, p0/m, p0/m, z31\.s, z0\.s
+[^:]+: 809f0008 bmopa za0\.s, p0/m, p0/m, z0\.s, z31\.s
+[^:]+: 80887a6a bmopa za2\.s, p6/m, p3/m, z19\.s, z8\.s
+[^:]+: 80800018 bmops za0\.s, p0/m, p0/m, z0\.s, z0\.s
+[^:]+: 8080001b bmops za3\.s, p0/m, p0/m, z0\.s, z0\.s
+[^:]+: 80801c18 bmops za0\.s, p7/m, p0/m, z0\.s, z0\.s
+[^:]+: 8080e018 bmops za0\.s, p0/m, p7/m, z0\.s, z0\.s
+[^:]+: 808003f8 bmops za0\.s, p0/m, p0/m, z31\.s, z0\.s
+[^:]+: 809f0018 bmops za0\.s, p0/m, p0/m, z0\.s, z31\.s
+[^:]+: 8086af19 bmops za1\.s, p3/m, p5/m, z24\.s, z6\.s
+[^:]+: a0800008 smopa za0\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a080000b smopa za3\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a0801c08 smopa za0\.s, p7/m, p0/m, z0\.h, z0\.h
+[^:]+: a080e008 smopa za0\.s, p0/m, p7/m, z0\.h, z0\.h
+[^:]+: a08003e8 smopa za0\.s, p0/m, p0/m, z31\.h, z0\.h
+[^:]+: a09f0008 smopa za0\.s, p0/m, p0/m, z0\.h, z31\.h
+[^:]+: a09969c9 smopa za1\.s, p2/m, p3/m, z14\.h, z25\.h
+[^:]+: a0800018 smops za0\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a080001b smops za3\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a0801c18 smops za0\.s, p7/m, p0/m, z0\.h, z0\.h
+[^:]+: a080e018 smops za0\.s, p0/m, p7/m, z0\.h, z0\.h
+[^:]+: a08003f8 smops za0\.s, p0/m, p0/m, z31\.h, z0\.h
+[^:]+: a09f0018 smops za0\.s, p0/m, p0/m, z0\.h, z31\.h
+[^:]+: a09969d9 smops za1\.s, p2/m, p3/m, z14\.h, z25\.h
+[^:]+: a1800008 umopa za0\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a180000b umopa za3\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a1801c08 umopa za0\.s, p7/m, p0/m, z0\.h, z0\.h
+[^:]+: a180e008 umopa za0\.s, p0/m, p7/m, z0\.h, z0\.h
+[^:]+: a18003e8 umopa za0\.s, p0/m, p0/m, z31\.h, z0\.h
+[^:]+: a19f0008 umopa za0\.s, p0/m, p0/m, z0\.h, z31\.h
+[^:]+: a19969c9 umopa za1\.s, p2/m, p3/m, z14\.h, z25\.h
+[^:]+: a1800018 umops za0\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a180001b umops za3\.s, p0/m, p0/m, z0\.h, z0\.h
+[^:]+: a1801c18 umops za0\.s, p7/m, p0/m, z0\.h, z0\.h
+[^:]+: a180e018 umops za0\.s, p0/m, p7/m, z0\.h, z0\.h
+[^:]+: a18003f8 umops za0\.s, p0/m, p0/m, z31\.h, z0\.h
+[^:]+: a19f0018 umops za0\.s, p0/m, p0/m, z0\.h, z31\.h
+[^:]+: a19969d9 umops za1\.s, p2/m, p3/m, z14\.h, z25\.h
diff --git a/gas/testsuite/gas/aarch64/sme2-21.s b/gas/testsuite/gas/aarch64/sme2-21.s
new file mode 100644
index 0000000..a924b7d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-21.s
@@ -0,0 +1,47 @@
+ bmopa za0.s, p0/m, p0/m, z0.s, z0.s
+ bmopa za3.s, p0/m, p0/m, z0.s, z0.s
+ bmopa za0.s, p7/m, p0/m, z0.s, z0.s
+ bmopa za0.s, p0/m, p7/m, z0.s, z0.s
+ bmopa za0.s, p0/m, p0/m, z31.s, z0.s
+ bmopa za0.s, p0/m, p0/m, z0.s, z31.s
+ bmopa za2.s, p6/m, p3/m, z19.s, z8.s
+
+ bmops za0.s, p0/m, p0/m, z0.s, z0.s
+ bmops za3.s, p0/m, p0/m, z0.s, z0.s
+ bmops za0.s, p7/m, p0/m, z0.s, z0.s
+ bmops za0.s, p0/m, p7/m, z0.s, z0.s
+ bmops za0.s, p0/m, p0/m, z31.s, z0.s
+ bmops za0.s, p0/m, p0/m, z0.s, z31.s
+ bmops za1.s, p3/m, p5/m, z24.s, z6.s
+
+ smopa za0.s, p0/m, p0/m, z0.h, z0.h
+ smopa za3.s, p0/m, p0/m, z0.h, z0.h
+ smopa za0.s, p7/m, p0/m, z0.h, z0.h
+ smopa za0.s, p0/m, p7/m, z0.h, z0.h
+ smopa za0.s, p0/m, p0/m, z31.h, z0.h
+ smopa za0.s, p0/m, p0/m, z0.h, z31.h
+ smopa za1.s, p2/m, p3/m, z14.h, z25.h
+
+ smops za0.s, p0/m, p0/m, z0.h, z0.h
+ smops za3.s, p0/m, p0/m, z0.h, z0.h
+ smops za0.s, p7/m, p0/m, z0.h, z0.h
+ smops za0.s, p0/m, p7/m, z0.h, z0.h
+ smops za0.s, p0/m, p0/m, z31.h, z0.h
+ smops za0.s, p0/m, p0/m, z0.h, z31.h
+ smops za1.s, p2/m, p3/m, z14.h, z25.h
+
+ umopa za0.s, p0/m, p0/m, z0.h, z0.h
+ umopa za3.s, p0/m, p0/m, z0.h, z0.h
+ umopa za0.s, p7/m, p0/m, z0.h, z0.h
+ umopa za0.s, p0/m, p7/m, z0.h, z0.h
+ umopa za0.s, p0/m, p0/m, z31.h, z0.h
+ umopa za0.s, p0/m, p0/m, z0.h, z31.h
+ umopa za1.s, p2/m, p3/m, z14.h, z25.h
+
+ umops za0.s, p0/m, p0/m, z0.h, z0.h
+ umops za3.s, p0/m, p0/m, z0.h, z0.h
+ umops za0.s, p7/m, p0/m, z0.h, z0.h
+ umops za0.s, p0/m, p7/m, z0.h, z0.h
+ umops za0.s, p0/m, p0/m, z31.h, z0.h
+ umops za0.s, p0/m, p0/m, z0.h, z31.h
+ umops za1.s, p2/m, p3/m, z14.h, z25.h