* [binutils-gdb] aarch64: Add the SME2 UZP and ZIP instructions
@ 2023-03-30 10:16 Richard Sandiford
0 siblings, 0 replies; only message in thread
From: Richard Sandiford @ 2023-03-30 10:16 UTC (permalink / raw)
To: bfd-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7bd1d20e174fa324e02c334f8bfd1c1614233962
commit 7bd1d20e174fa324e02c334f8bfd1c1614233962
Author: Richard Sandiford <richard.sandiford@arm.com>
Date: Thu Mar 30 11:09:16 2023 +0100
aarch64: Add the SME2 UZP and ZIP instructions
This patch adds UZP and ZIP, which combine UZP{1,2} and ZIP{1,2}
into single instructions.
Diff:
---
gas/testsuite/gas/aarch64/sme2-30-invalid.d | 3 +
gas/testsuite/gas/aarch64/sme2-30-invalid.l | 29 ++
gas/testsuite/gas/aarch64/sme2-30-invalid.s | 18 +
gas/testsuite/gas/aarch64/sme2-30-noarch.d | 3 +
gas/testsuite/gas/aarch64/sme2-30-noarch.l | 91 ++++
gas/testsuite/gas/aarch64/sme2-30.d | 99 ++++
gas/testsuite/gas/aarch64/sme2-30.s | 109 ++++
opcodes/aarch64-dis-2.c | 764 ++++++++++++++++------------
opcodes/aarch64-tbl.h | 12 +
9 files changed, 790 insertions(+), 338 deletions(-)
diff --git a/gas/testsuite/gas/aarch64/sme2-30-invalid.d b/gas/testsuite/gas/aarch64/sme2-30-invalid.d
new file mode 100644
index 00000000000..535abe3f490
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30-invalid.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a
+#source: sme2-30-invalid.s
+#error_output: sme2-30-invalid.l
diff --git a/gas/testsuite/gas/aarch64/sme2-30-invalid.l b/gas/testsuite/gas/aarch64/sme2-30-invalid.l
new file mode 100644
index 00000000000..6805ddba39c
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30-invalid.l
@@ -0,0 +1,29 @@
+[^ :]+: Assembler messages:
+[^ :]+:[0-9]+: Error: expected '{' at operand 1 -- `uzp 0,z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: expected a register or register list at operand 2 -- `uzp {z0\.b-z1\.b},0,z0\.b'
+[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `uzp {z0\.b-z1\.b},z0\.b,0'
+[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z1\.b-z2\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: expected a list of 2 registers at operand 1 -- `uzp {z0\.b-z2\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: expected a list of 2 registers at operand 1 -- `uzp {z0\.b-z3\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: unexpected characters following instruction at operand 2 -- `uzp {z0\.b-z1\.b},{z0\.b-z1\.b},{z0\.b,z1\.b}'
+[^ :]+:[0-9]+: Error: operand mismatch -- `uzp {z0\.h-z1\.h},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Info: did you mean this\?
+[^ :]+:[0-9]+: Info: uzp {z0\.b-z1\.b}, z0\.b, z0\.b
+[^ :]+:[0-9]+: Info: other valid variant\(s\):
+[^ :]+:[0-9]+: Info: uzp {z0\.h-z1\.h}, z0\.h, z0\.h
+[^ :]+:[0-9]+: Info: uzp {z0\.s-z1\.s}, z0\.s, z0\.s
+[^ :]+:[0-9]+: Info: uzp {z0\.d-z1\.d}, z0\.d, z0\.d
+[^ :]+:[0-9]+: Error: operand mismatch -- `uzp {z0\.q-z3\.q},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Info: did you mean this\?
+[^ :]+:[0-9]+: Info: uzp {z0\.b-z3\.b}, z0\.b, z0\.b
+[^ :]+:[0-9]+: Info: other valid variant\(s\):
+[^ :]+:[0-9]+: Info: uzp {z0\.h-z3\.h}, z0\.h, z0\.h
+[^ :]+:[0-9]+: Info: uzp {z0\.s-z3\.s}, z0\.s, z0\.s
+[^ :]+:[0-9]+: Info: uzp {z0\.d-z3\.d}, z0\.d, z0\.d
+[^ :]+:[0-9]+: Error: unexpected characters following instruction at operand 2 -- `uzp {z0\.b-z3\.b},{z0\.b-z1\.b},{z2\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z1\.b-z4\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z2\.b-z5\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z3\.b-z6\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: start register out of range at operand 2 -- `uzp {z0\.b-z3\.b},{z1\.b-z4\.b}'
+[^ :]+:[0-9]+: Error: start register out of range at operand 2 -- `uzp {z0\.b-z3\.b},{z2\.b-z5\.b}'
+[^ :]+:[0-9]+: Error: start register out of range at operand 2 -- `uzp {z0\.b-z3\.b},{z3\.b-z6\.b}'
diff --git a/gas/testsuite/gas/aarch64/sme2-30-invalid.s b/gas/testsuite/gas/aarch64/sme2-30-invalid.s
new file mode 100644
index 00000000000..2d3dd1b2604
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30-invalid.s
@@ -0,0 +1,18 @@
+ uzp 0, z0.b, z0.b
+ uzp { z0.b - z1.b }, 0, z0.b
+ uzp { z0.b - z1.b }, z0.b, 0
+
+ uzp { z1.b - z2.b }, z0.b, z0.b
+ uzp { z0.b - z2.b }, z0.b, z0.b
+ uzp { z0.b - z3.b }, z0.b, z0.b
+ uzp { z0.b - z1.b }, { z0.b - z1.b }, { z0.b, z1.b }
+ uzp { z0.h - z1.h }, z0.b, z0.b
+ uzp { z0.q - z3.q }, z0.b, z0.b
+
+ uzp { z0.b - z3.b }, { z0.b - z1.b }, { z2.b - z3.b }
+ uzp { z1.b - z4.b }, { z0.b - z3.b }
+ uzp { z2.b - z5.b }, { z0.b - z3.b }
+ uzp { z3.b - z6.b }, { z0.b - z3.b }
+ uzp { z0.b - z3.b }, { z1.b - z4.b }
+ uzp { z0.b - z3.b }, { z2.b - z5.b }
+ uzp { z0.b - z3.b }, { z3.b - z6.b }
diff --git a/gas/testsuite/gas/aarch64/sme2-30-noarch.d b/gas/testsuite/gas/aarch64/sme2-30-noarch.d
new file mode 100644
index 00000000000..c58d102b75b
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30-noarch.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a+sme
+#source: sme2-30.s
+#error_output: sme2-30-noarch.l
diff --git a/gas/testsuite/gas/aarch64/sme2-30-noarch.l b/gas/testsuite/gas/aarch64/sme2-30-noarch.l
new file mode 100644
index 00000000000..e3ddd704860
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30-noarch.l
@@ -0,0 +1,91 @@
+[^ :]+: Assembler messages:
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z1\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.b-z31\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z1\.b},z31\.b,z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z1\.b},z0\.b,z31\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z18\.b-z19\.b},z11\.b,z25\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z1\.h},z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.h-z31\.h},z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z1\.h},z31\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z1\.h},z0\.h,z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z6\.h-z7\.h},z8\.h,z22\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z1\.s},z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.s-z31\.s},z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z1\.s},z31\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z1\.s},z0\.s,z31\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z24\.s-z25\.s},z19\.s,z2\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z1\.d},z0\.d,z0\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.d-z31\.d},z0\.d,z0\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z1\.d},z31\.d,z0\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z1\.d},z0\.d,z31\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z2\.d-z3\.d},z29\.d,z5\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z1\.q},z0\.q,z0\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.q-z31\.q},z0\.q,z0\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z1\.q},z31\.q,z0\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z1\.q},z0\.q,z31\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z14\.q-z15\.q},z24\.q,z9\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z3\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.b-z31\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z3\.b},{z28\.b-z31\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z4\.b-z7\.b},{z24\.b-z27\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z3\.h},{z0\.h-z3\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.h-z31\.h},{z0\.h-z3\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z3\.h},{z28\.h-z31\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z16\.h-z19\.h},{z8\.h-z11\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z3\.s},{z0\.s-z3\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.s-z31\.s},{z0\.s-z3\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z3\.s},{z28\.s-z31\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z20\.s-z23\.s},{z12\.s-z15\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z3\.d},{z0\.d-z3\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.d-z31\.d},{z0\.d-z3\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z3\.d},{z28\.d-z31\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z8\.d-z11\.d},{z16\.d-z19\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z3\.q},{z0\.q-z3\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.q-z31\.q},{z0\.q-z3\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z3\.q},{z28\.q-z31\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z12\.q-z15\.q},{z4\.q-z7\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z1\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.b-z31\.b},z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z1\.b},z31\.b,z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z1\.b},z0\.b,z31\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z18\.b-z19\.b},z11\.b,z25\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z1\.h},z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.h-z31\.h},z0\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z1\.h},z31\.h,z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z1\.h},z0\.h,z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z6\.h-z7\.h},z8\.h,z22\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z1\.s},z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.s-z31\.s},z0\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z1\.s},z31\.s,z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z1\.s},z0\.s,z31\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z24\.s-z25\.s},z19\.s,z2\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z1\.d},z0\.d,z0\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.d-z31\.d},z0\.d,z0\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z1\.d},z31\.d,z0\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z1\.d},z0\.d,z31\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z2\.d-z3\.d},z29\.d,z5\.d'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z1\.q},z0\.q,z0\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.q-z31\.q},z0\.q,z0\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z1\.q},z31\.q,z0\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z1\.q},z0\.q,z31\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z14\.q-z15\.q},z24\.q,z9\.q'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z3\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.b-z31\.b},{z0\.b-z3\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z3\.b},{z28\.b-z31\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z4\.b-z7\.b},{z24\.b-z27\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z3\.h},{z0\.h-z3\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.h-z31\.h},{z0\.h-z3\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z3\.h},{z28\.h-z31\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z16\.h-z19\.h},{z8\.h-z11\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z3\.s},{z0\.s-z3\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.s-z31\.s},{z0\.s-z3\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z3\.s},{z28\.s-z31\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z20\.s-z23\.s},{z12\.s-z15\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z3\.d},{z0\.d-z3\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.d-z31\.d},{z0\.d-z3\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z3\.d},{z28\.d-z31\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z8\.d-z11\.d},{z16\.d-z19\.d}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z3\.q},{z0\.q-z3\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.q-z31\.q},{z0\.q-z3\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z3\.q},{z28\.q-z31\.q}'
+[^ :]+:[0-9]+: Error: selected processor does not support `zip {z12\.q-z15\.q},{z4\.q-z7\.q}'
diff --git a/gas/testsuite/gas/aarch64/sme2-30.d b/gas/testsuite/gas/aarch64/sme2-30.d
new file mode 100644
index 00000000000..2db95e0a83a
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30.d
@@ -0,0 +1,99 @@
+#as: -march=armv8-a+sme2
+#objdump: -dr
+
+[^:]+: file format .*
+
+
+[^:]+:
+
+[^:]+:
+[^:]+: c120d001 uzp {z0\.b-z1\.b}, z0\.b, z0\.b
+[^:]+: c120d01f uzp {z30\.b-z31\.b}, z0\.b, z0\.b
+[^:]+: c120d3e1 uzp {z0\.b-z1\.b}, z31\.b, z0\.b
+[^:]+: c13fd001 uzp {z0\.b-z1\.b}, z0\.b, z31\.b
+[^:]+: c139d173 uzp {z18\.b-z19\.b}, z11\.b, z25\.b
+[^:]+: c160d001 uzp {z0\.h-z1\.h}, z0\.h, z0\.h
+[^:]+: c160d01f uzp {z30\.h-z31\.h}, z0\.h, z0\.h
+[^:]+: c160d3e1 uzp {z0\.h-z1\.h}, z31\.h, z0\.h
+[^:]+: c17fd001 uzp {z0\.h-z1\.h}, z0\.h, z31\.h
+[^:]+: c176d107 uzp {z6\.h-z7\.h}, z8\.h, z22\.h
+[^:]+: c1a0d001 uzp {z0\.s-z1\.s}, z0\.s, z0\.s
+[^:]+: c1a0d01f uzp {z30\.s-z31\.s}, z0\.s, z0\.s
+[^:]+: c1a0d3e1 uzp {z0\.s-z1\.s}, z31\.s, z0\.s
+[^:]+: c1bfd001 uzp {z0\.s-z1\.s}, z0\.s, z31\.s
+[^:]+: c1a2d279 uzp {z24\.s-z25\.s}, z19\.s, z2\.s
+[^:]+: c1e0d001 uzp {z0\.d-z1\.d}, z0\.d, z0\.d
+[^:]+: c1e0d01f uzp {z30\.d-z31\.d}, z0\.d, z0\.d
+[^:]+: c1e0d3e1 uzp {z0\.d-z1\.d}, z31\.d, z0\.d
+[^:]+: c1ffd001 uzp {z0\.d-z1\.d}, z0\.d, z31\.d
+[^:]+: c1e5d3a3 uzp {z2\.d-z3\.d}, z29\.d, z5\.d
+[^:]+: c120d401 uzp {z0\.q-z1\.q}, z0\.q, z0\.q
+[^:]+: c120d41f uzp {z30\.q-z31\.q}, z0\.q, z0\.q
+[^:]+: c120d7e1 uzp {z0\.q-z1\.q}, z31\.q, z0\.q
+[^:]+: c13fd401 uzp {z0\.q-z1\.q}, z0\.q, z31\.q
+[^:]+: c129d70f uzp {z14\.q-z15\.q}, z24\.q, z9\.q
+[^:]+: c136e002 uzp {z0\.b-z3\.b}, {z0\.b-z3\.b}
+[^:]+: c136e01e uzp {z28\.b-z31\.b}, {z0\.b-z3\.b}
+[^:]+: c136e382 uzp {z0\.b-z3\.b}, {z28\.b-z31\.b}
+[^:]+: c136e306 uzp {z4\.b-z7\.b}, {z24\.b-z27\.b}
+[^:]+: c176e002 uzp {z0\.h-z3\.h}, {z0\.h-z3\.h}
+[^:]+: c176e01e uzp {z28\.h-z31\.h}, {z0\.h-z3\.h}
+[^:]+: c176e382 uzp {z0\.h-z3\.h}, {z28\.h-z31\.h}
+[^:]+: c176e112 uzp {z16\.h-z19\.h}, {z8\.h-z11\.h}
+[^:]+: c1b6e002 uzp {z0\.s-z3\.s}, {z0\.s-z3\.s}
+[^:]+: c1b6e01e uzp {z28\.s-z31\.s}, {z0\.s-z3\.s}
+[^:]+: c1b6e382 uzp {z0\.s-z3\.s}, {z28\.s-z31\.s}
+[^:]+: c1b6e196 uzp {z20\.s-z23\.s}, {z12\.s-z15\.s}
+[^:]+: c1f6e002 uzp {z0\.d-z3\.d}, {z0\.d-z3\.d}
+[^:]+: c1f6e01e uzp {z28\.d-z31\.d}, {z0\.d-z3\.d}
+[^:]+: c1f6e382 uzp {z0\.d-z3\.d}, {z28\.d-z31\.d}
+[^:]+: c1f6e20a uzp {z8\.d-z11\.d}, {z16\.d-z19\.d}
+[^:]+: c137e002 uzp {z0\.q-z3\.q}, {z0\.q-z3\.q}
+[^:]+: c137e01e uzp {z28\.q-z31\.q}, {z0\.q-z3\.q}
+[^:]+: c137e382 uzp {z0\.q-z3\.q}, {z28\.q-z31\.q}
+[^:]+: c137e08e uzp {z12\.q-z15\.q}, {z4\.q-z7\.q}
+[^:]+: c120d000 zip {z0\.b-z1\.b}, z0\.b, z0\.b
+[^:]+: c120d01e zip {z30\.b-z31\.b}, z0\.b, z0\.b
+[^:]+: c120d3e0 zip {z0\.b-z1\.b}, z31\.b, z0\.b
+[^:]+: c13fd000 zip {z0\.b-z1\.b}, z0\.b, z31\.b
+[^:]+: c139d172 zip {z18\.b-z19\.b}, z11\.b, z25\.b
+[^:]+: c160d000 zip {z0\.h-z1\.h}, z0\.h, z0\.h
+[^:]+: c160d01e zip {z30\.h-z31\.h}, z0\.h, z0\.h
+[^:]+: c160d3e0 zip {z0\.h-z1\.h}, z31\.h, z0\.h
+[^:]+: c17fd000 zip {z0\.h-z1\.h}, z0\.h, z31\.h
+[^:]+: c176d106 zip {z6\.h-z7\.h}, z8\.h, z22\.h
+[^:]+: c1a0d000 zip {z0\.s-z1\.s}, z0\.s, z0\.s
+[^:]+: c1a0d01e zip {z30\.s-z31\.s}, z0\.s, z0\.s
+[^:]+: c1a0d3e0 zip {z0\.s-z1\.s}, z31\.s, z0\.s
+[^:]+: c1bfd000 zip {z0\.s-z1\.s}, z0\.s, z31\.s
+[^:]+: c1a2d278 zip {z24\.s-z25\.s}, z19\.s, z2\.s
+[^:]+: c1e0d000 zip {z0\.d-z1\.d}, z0\.d, z0\.d
+[^:]+: c1e0d01e zip {z30\.d-z31\.d}, z0\.d, z0\.d
+[^:]+: c1e0d3e0 zip {z0\.d-z1\.d}, z31\.d, z0\.d
+[^:]+: c1ffd000 zip {z0\.d-z1\.d}, z0\.d, z31\.d
+[^:]+: c1e5d3a2 zip {z2\.d-z3\.d}, z29\.d, z5\.d
+[^:]+: c120d400 zip {z0\.q-z1\.q}, z0\.q, z0\.q
+[^:]+: c120d41e zip {z30\.q-z31\.q}, z0\.q, z0\.q
+[^:]+: c120d7e0 zip {z0\.q-z1\.q}, z31\.q, z0\.q
+[^:]+: c13fd400 zip {z0\.q-z1\.q}, z0\.q, z31\.q
+[^:]+: c129d70e zip {z14\.q-z15\.q}, z24\.q, z9\.q
+[^:]+: c136e000 zip {z0\.b-z3\.b}, {z0\.b-z3\.b}
+[^:]+: c136e01c zip {z28\.b-z31\.b}, {z0\.b-z3\.b}
+[^:]+: c136e380 zip {z0\.b-z3\.b}, {z28\.b-z31\.b}
+[^:]+: c136e304 zip {z4\.b-z7\.b}, {z24\.b-z27\.b}
+[^:]+: c176e000 zip {z0\.h-z3\.h}, {z0\.h-z3\.h}
+[^:]+: c176e01c zip {z28\.h-z31\.h}, {z0\.h-z3\.h}
+[^:]+: c176e380 zip {z0\.h-z3\.h}, {z28\.h-z31\.h}
+[^:]+: c176e110 zip {z16\.h-z19\.h}, {z8\.h-z11\.h}
+[^:]+: c1b6e000 zip {z0\.s-z3\.s}, {z0\.s-z3\.s}
+[^:]+: c1b6e01c zip {z28\.s-z31\.s}, {z0\.s-z3\.s}
+[^:]+: c1b6e380 zip {z0\.s-z3\.s}, {z28\.s-z31\.s}
+[^:]+: c1b6e194 zip {z20\.s-z23\.s}, {z12\.s-z15\.s}
+[^:]+: c1f6e000 zip {z0\.d-z3\.d}, {z0\.d-z3\.d}
+[^:]+: c1f6e01c zip {z28\.d-z31\.d}, {z0\.d-z3\.d}
+[^:]+: c1f6e380 zip {z0\.d-z3\.d}, {z28\.d-z31\.d}
+[^:]+: c1f6e208 zip {z8\.d-z11\.d}, {z16\.d-z19\.d}
+[^:]+: c137e000 zip {z0\.q-z3\.q}, {z0\.q-z3\.q}
+[^:]+: c137e01c zip {z28\.q-z31\.q}, {z0\.q-z3\.q}
+[^:]+: c137e380 zip {z0\.q-z3\.q}, {z28\.q-z31\.q}
+[^:]+: c137e08c zip {z12\.q-z15\.q}, {z4\.q-z7\.q}
diff --git a/gas/testsuite/gas/aarch64/sme2-30.s b/gas/testsuite/gas/aarch64/sme2-30.s
new file mode 100644
index 00000000000..ade5fc1a0bd
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-30.s
@@ -0,0 +1,109 @@
+ uzp { z0.b - z1.b }, z0.b, z0.b
+ uzp { z30.b - z31.b }, z0.b, z0.b
+ uzp { z0.b - z1.b }, z31.b, z0.b
+ uzp { z0.b - z1.b }, z0.b, z31.b
+ uzp { z18.b - z19.b }, z11.b, z25.b
+
+ uzp { z0.h - z1.h }, z0.h, z0.h
+ uzp { z30.h - z31.h }, z0.h, z0.h
+ uzp { z0.h - z1.h }, z31.h, z0.h
+ uzp { z0.h - z1.h }, z0.h, z31.h
+ uzp { z6.h - z7.h }, z8.h, z22.h
+
+ uzp { z0.s - z1.s }, z0.s, z0.s
+ uzp { z30.s - z31.s }, z0.s, z0.s
+ uzp { z0.s - z1.s }, z31.s, z0.s
+ uzp { z0.s - z1.s }, z0.s, z31.s
+ uzp { z24.s - z25.s }, z19.s, z2.s
+
+ uzp { z0.d - z1.d }, z0.d, z0.d
+ uzp { z30.d - z31.d }, z0.d, z0.d
+ uzp { z0.d - z1.d }, z31.d, z0.d
+ uzp { z0.d - z1.d }, z0.d, z31.d
+ uzp { z2.d - z3.d }, z29.d, z5.d
+
+ uzp { z0.q - z1.q }, z0.q, z0.q
+ uzp { z30.q - z31.q }, z0.q, z0.q
+ uzp { z0.q - z1.q }, z31.q, z0.q
+ uzp { z0.q - z1.q }, z0.q, z31.q
+ uzp { z14.q - z15.q }, z24.q, z9.q
+
+ uzp { z0.b - z3.b }, { z0.b - z3.b }
+ uzp { z28.b - z31.b }, { z0.b - z3.b }
+ uzp { z0.b - z3.b }, { z28.b - z31.b }
+ uzp { z4.b - z7.b }, { z24.b - z27.b }
+
+ uzp { z0.h - z3.h }, { z0.h - z3.h }
+ uzp { z28.h - z31.h }, { z0.h - z3.h }
+ uzp { z0.h - z3.h }, { z28.h - z31.h }
+ uzp { z16.h - z19.h }, { z8.h - z11.h }
+
+ uzp { z0.s - z3.s }, { z0.s - z3.s }
+ uzp { z28.s - z31.s }, { z0.s - z3.s }
+ uzp { z0.s - z3.s }, { z28.s - z31.s }
+ uzp { z20.s - z23.s }, { z12.s - z15.s }
+
+ uzp { z0.d - z3.d }, { z0.d - z3.d }
+ uzp { z28.d - z31.d }, { z0.d - z3.d }
+ uzp { z0.d - z3.d }, { z28.d - z31.d }
+ uzp { z8.d - z11.d }, { z16.d - z19.d }
+
+ uzp { z0.q - z3.q }, { z0.q - z3.q }
+ uzp { z28.q - z31.q }, { z0.q - z3.q }
+ uzp { z0.q - z3.q }, { z28.q - z31.q }
+ uzp { z12.q - z15.q }, { z4.q - z7.q }
+
+ zip { z0.b - z1.b }, z0.b, z0.b
+ zip { z30.b - z31.b }, z0.b, z0.b
+ zip { z0.b - z1.b }, z31.b, z0.b
+ zip { z0.b - z1.b }, z0.b, z31.b
+ zip { z18.b - z19.b }, z11.b, z25.b
+
+ zip { z0.h - z1.h }, z0.h, z0.h
+ zip { z30.h - z31.h }, z0.h, z0.h
+ zip { z0.h - z1.h }, z31.h, z0.h
+ zip { z0.h - z1.h }, z0.h, z31.h
+ zip { z6.h - z7.h }, z8.h, z22.h
+
+ zip { z0.s - z1.s }, z0.s, z0.s
+ zip { z30.s - z31.s }, z0.s, z0.s
+ zip { z0.s - z1.s }, z31.s, z0.s
+ zip { z0.s - z1.s }, z0.s, z31.s
+ zip { z24.s - z25.s }, z19.s, z2.s
+
+ zip { z0.d - z1.d }, z0.d, z0.d
+ zip { z30.d - z31.d }, z0.d, z0.d
+ zip { z0.d - z1.d }, z31.d, z0.d
+ zip { z0.d - z1.d }, z0.d, z31.d
+ zip { z2.d - z3.d }, z29.d, z5.d
+
+ zip { z0.q - z1.q }, z0.q, z0.q
+ zip { z30.q - z31.q }, z0.q, z0.q
+ zip { z0.q - z1.q }, z31.q, z0.q
+ zip { z0.q - z1.q }, z0.q, z31.q
+ zip { z14.q - z15.q }, z24.q, z9.q
+
+ zip { z0.b - z3.b }, { z0.b - z3.b }
+ zip { z28.b - z31.b }, { z0.b - z3.b }
+ zip { z0.b - z3.b }, { z28.b - z31.b }
+ zip { z4.b - z7.b }, { z24.b - z27.b }
+
+ zip { z0.h - z3.h }, { z0.h - z3.h }
+ zip { z28.h - z31.h }, { z0.h - z3.h }
+ zip { z0.h - z3.h }, { z28.h - z31.h }
+ zip { z16.h - z19.h }, { z8.h - z11.h }
+
+ zip { z0.s - z3.s }, { z0.s - z3.s }
+ zip { z28.s - z31.s }, { z0.s - z3.s }
+ zip { z0.s - z3.s }, { z28.s - z31.s }
+ zip { z20.s - z23.s }, { z12.s - z15.s }
+
+ zip { z0.d - z3.d }, { z0.d - z3.d }
+ zip { z28.d - z31.d }, { z0.d - z3.d }
+ zip { z0.d - z3.d }, { z28.d - z31.d }
+ zip { z8.d - z11.d }, { z16.d - z19.d }
+
+ zip { z0.q - z3.q }, { z0.q - z3.q }
+ zip { z28.q - z31.q }, { z0.q - z3.q }
+ zip { z0.q - z3.q }, { z28.q - z31.q }
+ zip { z12.q - z15.q }, { z4.q - z7.q }
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index e514becb5fd..bf04e3fcb0b 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -188,7 +188,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x1000000x10x100xxxxxxxxxxxxxxxxx
zero. */
- return 2887;
+ return 2891;
}
}
}
@@ -1721,7 +1721,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x10000011000xxxxxxx0xxxxxxx00xxx
smlall. */
- return 2890;
+ return 2898;
}
else
{
@@ -1731,7 +1731,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x10000011001xxxx0xx0xxxxxxx00xxx
smlall. */
- return 2891;
+ return 2899;
}
else
{
@@ -1739,7 +1739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x10000011001xxxx1xx0xxxxxxx00xxx
smlall. */
- return 2892;
+ return 2900;
}
}
}
@@ -1806,7 +1806,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x10000011000xxxxxxx0xxxxxxx10xxx
umlall. */
- return 2899;
+ return 2907;
}
else
{
@@ -1816,7 +1816,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x10000011001xxxx0xx0xxxxxxx10xxx
umlall. */
- return 2900;
+ return 2908;
}
else
{
@@ -1824,7 +1824,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x10000011001xxxx1xx0xxxxxxx10xxx
umlall. */
- return 2901;
+ return 2909;
}
}
}
@@ -1884,7 +1884,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0000011000xxxxxxx0xxxxxxx01xxx
smlsll. */
- return 2893;
+ return 2901;
}
else
{
@@ -1894,7 +1894,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0000011001xxxx0xx0xxxxxxx01xxx
smlsll. */
- return 2894;
+ return 2902;
}
else
{
@@ -1902,7 +1902,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0000011001xxxx1xx0xxxxxxx01xxx
smlsll. */
- return 2895;
+ return 2903;
}
}
}
@@ -1958,7 +1958,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0000011000xxxxxxx0xxxxxxx11xxx
umlsll. */
- return 2902;
+ return 2910;
}
else
{
@@ -1968,7 +1968,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0000011001xxxx0xx0xxxxxxx11xxx
umlsll. */
- return 2903;
+ return 2911;
}
else
{
@@ -1976,7 +1976,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0000011001xxxx1xx0xxxxxxx11xxx
umlsll. */
- return 2904;
+ return 2912;
}
}
}
@@ -2522,7 +2522,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxx0xx0xxxxxxx00xxx
fmla. */
- return 2906;
+ return 2914;
}
else
{
@@ -2530,7 +2530,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxx1xx0xxxxxxx00xxx
fmla. */
- return 2907;
+ return 2915;
}
}
else
@@ -2576,7 +2576,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxx0xx00xxxxxx01xxx
sdot. */
- return 2888;
+ return 2896;
}
else
{
@@ -2584,7 +2584,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxx1xx00xxxxxx01xxx
sdot. */
- return 2889;
+ return 2897;
}
}
else
@@ -2593,7 +2593,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxxxxx01xxxxxx01xxx
svdot. */
- return 2896;
+ return 2904;
}
}
else
@@ -2662,7 +2662,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxx0xx0xxxxxxx10xxx
fmls. */
- return 2908;
+ return 2916;
}
else
{
@@ -2670,7 +2670,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx000001110xxxxx1xx0xxxxxxx10xxx
fmls. */
- return 2909;
+ return 2917;
}
}
else
@@ -2725,7 +2725,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xxx00001110xxxxx0xx00xxxxxx11xxx
udot. */
- return 2897;
+ return 2905;
}
else
{
@@ -2733,7 +2733,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xxx00001110xxxxx1xx00xxxxxx11xxx
udot. */
- return 2898;
+ return 2906;
}
}
else
@@ -2742,7 +2742,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xxx00001110xxxxxxxx01xxxxxx11xxx
uvdot. */
- return 2905;
+ return 2913;
}
}
else
@@ -4162,11 +4162,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 11) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx110x00xxxxxxxxxx
- fclamp. */
- return 2466;
+ if (((word >> 0) & 0x1) == 0)
+ {
+ if (((word >> 12) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx110000xxxxxxxxx0
+ fclamp. */
+ return 2466;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx110100xxxxxxxxx0
+ zip. */
+ return 2892;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx110x00xxxxxxxxx1
+ uzp. */
+ return 2879;
+ }
}
else
{
@@ -4235,32 +4257,54 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 5) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 0) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx10xxxx110101xxxx0xxxxx
- sqrshr. */
- return 2697;
+ x1000001x01xxxxx110101xxxxxxxxx0
+ zip. */
+ return 2893;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx11xxxx110101xxxx0xxxxx
- sqrshru. */
- return 2700;
+ x1000001x01xxxxx110101xxxxxxxxx1
+ uzp. */
+ return 2880;
}
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx110101xxxx1xxxxx
- uqrshr. */
- return 2853;
+ if (((word >> 5) & 0x1) == 0)
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x110xxxx110101xxxx0xxxxx
+ sqrshr. */
+ return 2697;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x111xxxx110101xxxx0xxxxx
+ sqrshru. */
+ return 2700;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x11xxxxx110101xxxx1xxxxx
+ uqrshr. */
+ return 2853;
+ }
}
}
}
@@ -4516,42 +4560,64 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 19) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 19) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx100x10111000xxxx0xxxxx
- scvtf. */
- return 2629;
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx100010111000xxxx0xxxxx
+ scvtf. */
+ return 2629;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx110010111000xxxx0xxxxx
+ scvtf. */
+ return 2630;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx110x10111000xxxx0xxxxx
- scvtf. */
- return 2630;
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx101010111000xxxx0xxxxx
+ frintm. */
+ return 2526;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx111010111000xxxx0xxxxx
+ frintm. */
+ return 2527;
+ }
}
}
else
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 1) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx101x10111000xxxx0xxxxx
- frintm. */
- return 2526;
+ x1000001xx1xx110111000xxxx0xxx0x
+ zip. */
+ return 2894;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx111x10111000xxxx0xxxxx
- frintm. */
- return 2527;
+ x1000001xx1xx110111000xxxx0xxx1x
+ uzp. */
+ return 2881;
}
}
}
@@ -4711,66 +4777,88 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 5) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
- {
- if (((word >> 22) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001x010xx11111000xxxx0xxxxx
- sqcvt. */
- return 2687;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001x110xx11111000xxxx0xxxxx
- sqcvtu. */
- return 2690;
- }
- }
- else
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 6) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
if (((word >> 22) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001x011xx11111000xxx00xxxxx
+ x1000001x010x011111000xxxx0xxxxx
sqcvt. */
- return 2688;
+ return 2687;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001x111xx11111000xxx00xxxxx
+ x1000001x110x011111000xxxx0xxxxx
sqcvtu. */
- return 2691;
+ return 2690;
}
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 6) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001x011xx11111000xxx10xxxxx
- sqcvtn. */
- return 2689;
+ if (((word >> 22) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x011x011111000xxx00xxxxx
+ sqcvt. */
+ return 2688;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x111x011111000xxx00xxxxx
+ sqcvtu. */
+ return 2691;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001x111xx11111000xxx10xxxxx
- sqcvtun. */
- return 2692;
+ if (((word >> 22) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x011x011111000xxx10xxxxx
+ sqcvtn. */
+ return 2689;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x111x011111000xxx10xxxxx
+ sqcvtun. */
+ return 2692;
+ }
}
}
}
+ else
+ {
+ if (((word >> 1) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xx111111000xxxx0xxx0x
+ zip. */
+ return 2895;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xx111111000xxxx0xxx1x
+ uzp. */
+ return 2882;
+ }
+ }
}
else
{
@@ -7978,7 +8066,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
00011001000xxxxxxxxx00xxxxxxxxxx
stlurb. */
- return 2950;
+ return 2958;
}
else
{
@@ -7986,7 +8074,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
10011001000xxxxxxxxx00xxxxxxxxxx
stlur. */
- return 2958;
+ return 2966;
}
}
else
@@ -7997,7 +8085,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
01011001000xxxxxxxxx00xxxxxxxxxx
stlurh. */
- return 2954;
+ return 2962;
}
else
{
@@ -8005,7 +8093,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
11011001000xxxxxxxxx00xxxxxxxxxx
stlur. */
- return 2961;
+ return 2969;
}
}
}
@@ -8043,7 +8131,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0000x1xxxxxxxxxx
cpyfp. */
- return 3010;
+ return 3018;
}
else
{
@@ -8051,7 +8139,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1000x1xxxxxxxxxx
cpyfprn. */
- return 3016;
+ return 3024;
}
}
else
@@ -8062,7 +8150,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0100x1xxxxxxxxxx
cpyfpwn. */
- return 3013;
+ return 3021;
}
else
{
@@ -8070,7 +8158,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1100x1xxxxxxxxxx
cpyfpn. */
- return 3019;
+ return 3027;
}
}
}
@@ -8084,7 +8172,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0010x1xxxxxxxxxx
cpyfprt. */
- return 3034;
+ return 3042;
}
else
{
@@ -8092,7 +8180,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1010x1xxxxxxxxxx
cpyfprtrn. */
- return 3040;
+ return 3048;
}
}
else
@@ -8103,7 +8191,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0110x1xxxxxxxxxx
cpyfprtwn. */
- return 3037;
+ return 3045;
}
else
{
@@ -8111,7 +8199,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1110x1xxxxxxxxxx
cpyfprtn. */
- return 3043;
+ return 3051;
}
}
}
@@ -8128,7 +8216,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0001x1xxxxxxxxxx
cpyfpwt. */
- return 3022;
+ return 3030;
}
else
{
@@ -8136,7 +8224,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1001x1xxxxxxxxxx
cpyfpwtrn. */
- return 3028;
+ return 3036;
}
}
else
@@ -8147,7 +8235,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0101x1xxxxxxxxxx
cpyfpwtwn. */
- return 3025;
+ return 3033;
}
else
{
@@ -8155,7 +8243,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1101x1xxxxxxxxxx
cpyfpwtn. */
- return 3031;
+ return 3039;
}
}
}
@@ -8169,7 +8257,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0011x1xxxxxxxxxx
cpyfpt. */
- return 3046;
+ return 3054;
}
else
{
@@ -8177,7 +8265,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1011x1xxxxxxxxxx
cpyfptrn. */
- return 3052;
+ return 3060;
}
}
else
@@ -8188,7 +8276,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx0111x1xxxxxxxxxx
cpyfptwn. */
- return 3049;
+ return 3057;
}
else
{
@@ -8196,7 +8284,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001000xxxxx1111x1xxxxxxxxxx
cpyfptn. */
- return 3055;
+ return 3063;
}
}
}
@@ -8261,7 +8349,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
00011001010xxxxxxxxx00xxxxxxxxxx
ldapurb. */
- return 2951;
+ return 2959;
}
else
{
@@ -8269,7 +8357,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
10011001010xxxxxxxxx00xxxxxxxxxx
ldapur. */
- return 2959;
+ return 2967;
}
}
else
@@ -8280,7 +8368,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
01011001010xxxxxxxxx00xxxxxxxxxx
ldapurh. */
- return 2955;
+ return 2963;
}
else
{
@@ -8288,7 +8376,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
11011001010xxxxxxxxx00xxxxxxxxxx
ldapur. */
- return 2962;
+ return 2970;
}
}
}
@@ -8326,7 +8414,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0000x1xxxxxxxxxx
cpyfm. */
- return 3011;
+ return 3019;
}
else
{
@@ -8334,7 +8422,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1000x1xxxxxxxxxx
cpyfmrn. */
- return 3017;
+ return 3025;
}
}
else
@@ -8345,7 +8433,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0100x1xxxxxxxxxx
cpyfmwn. */
- return 3014;
+ return 3022;
}
else
{
@@ -8353,7 +8441,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1100x1xxxxxxxxxx
cpyfmn. */
- return 3020;
+ return 3028;
}
}
}
@@ -8367,7 +8455,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0010x1xxxxxxxxxx
cpyfmrt. */
- return 3035;
+ return 3043;
}
else
{
@@ -8375,7 +8463,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1010x1xxxxxxxxxx
cpyfmrtrn. */
- return 3041;
+ return 3049;
}
}
else
@@ -8386,7 +8474,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0110x1xxxxxxxxxx
cpyfmrtwn. */
- return 3038;
+ return 3046;
}
else
{
@@ -8394,7 +8482,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1110x1xxxxxxxxxx
cpyfmrtn. */
- return 3044;
+ return 3052;
}
}
}
@@ -8411,7 +8499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0001x1xxxxxxxxxx
cpyfmwt. */
- return 3023;
+ return 3031;
}
else
{
@@ -8419,7 +8507,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1001x1xxxxxxxxxx
cpyfmwtrn. */
- return 3029;
+ return 3037;
}
}
else
@@ -8430,7 +8518,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0101x1xxxxxxxxxx
cpyfmwtwn. */
- return 3026;
+ return 3034;
}
else
{
@@ -8438,7 +8526,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1101x1xxxxxxxxxx
cpyfmwtn. */
- return 3032;
+ return 3040;
}
}
}
@@ -8452,7 +8540,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0011x1xxxxxxxxxx
cpyfmt. */
- return 3047;
+ return 3055;
}
else
{
@@ -8460,7 +8548,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1011x1xxxxxxxxxx
cpyfmtrn. */
- return 3053;
+ return 3061;
}
}
else
@@ -8471,7 +8559,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx0111x1xxxxxxxxxx
cpyfmtwn. */
- return 3050;
+ return 3058;
}
else
{
@@ -8479,7 +8567,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001010xxxxx1111x1xxxxxxxxxx
cpyfmtn. */
- return 3056;
+ return 3064;
}
}
}
@@ -8547,7 +8635,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
00011001100xxxxxxxxx00xxxxxxxxxx
ldapursb. */
- return 2953;
+ return 2961;
}
else
{
@@ -8555,7 +8643,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
10011001100xxxxxxxxx00xxxxxxxxxx
ldapursw. */
- return 2960;
+ return 2968;
}
}
else
@@ -8564,7 +8652,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x1011001100xxxxxxxxx00xxxxxxxxxx
ldapursh. */
- return 2957;
+ return 2965;
}
}
else
@@ -8575,7 +8663,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x0011001110xxxxxxxxx00xxxxxxxxxx
ldapursb. */
- return 2952;
+ return 2960;
}
else
{
@@ -8583,7 +8671,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x1011001110xxxxxxxxx00xxxxxxxxxx
ldapursh. */
- return 2956;
+ return 2964;
}
}
}
@@ -8645,7 +8733,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001100xxxxx0000x1xxxxxxxxxx
cpyfe. */
- return 3012;
+ return 3020;
}
else
{
@@ -8653,7 +8741,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001110xxxxx0000x1xxxxxxxxxx
setp. */
- return 3106;
+ return 3114;
}
}
else
@@ -8664,7 +8752,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001100xxxxx1000x1xxxxxxxxxx
cpyfern. */
- return 3018;
+ return 3026;
}
else
{
@@ -8672,7 +8760,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001110xxxxx1000x1xxxxxxxxxx
sete. */
- return 3108;
+ return 3116;
}
}
}
@@ -8686,7 +8774,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001100xxxxx0100x1xxxxxxxxxx
cpyfewn. */
- return 3015;
+ return 3023;
}
else
{
@@ -8694,7 +8782,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001110xxxxx0100x1xxxxxxxxxx
setm. */
- return 3107;
+ return 3115;
}
}
else
@@ -8703,7 +8791,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx0110011x0xxxxx1100x1xxxxxxxxxx
cpyfen. */
- return 3021;
+ return 3029;
}
}
}
@@ -8719,7 +8807,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001100xxxxx0010x1xxxxxxxxxx
cpyfert. */
- return 3036;
+ return 3044;
}
else
{
@@ -8727,7 +8815,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001110xxxxx0010x1xxxxxxxxxx
setpn. */
- return 3112;
+ return 3120;
}
}
else
@@ -8738,7 +8826,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xx011001100xxxxx1010x1xxxxxxxxxx
cpyfertrn. */
- return [...]
[diff truncated at 100000 bytes]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-03-30 10:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-30 10:16 [binutils-gdb] aarch64: Add the SME2 UZP and ZIP instructions Richard Sandiford
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).