public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] aarch64: Add the SME2 MOPA and MOPS instructions
@ 2023-03-30 10:15 Richard Sandiford
  0 siblings, 0 replies; only message in thread
From: Richard Sandiford @ 2023-03-30 10:15 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=261f8708dbbb2c0cc1e7be7986083c6a81005b2e

commit 261f8708dbbb2c0cc1e7be7986083c6a81005b2e
Author: Richard Sandiford <richard.sandiford@arm.com>
Date:   Thu Mar 30 11:09:15 2023 +0100

    aarch64: Add the SME2 MOPA and MOPS instructions
    
    [BSU]MOP[AS] share the same format.

Diff:
---
 gas/testsuite/gas/aarch64/sme2-21-invalid.d |    3 +
 gas/testsuite/gas/aarch64/sme2-21-invalid.l |   18 +
 gas/testsuite/gas/aarch64/sme2-21-invalid.s |   12 +
 gas/testsuite/gas/aarch64/sme2-21-noarch.d  |    3 +
 gas/testsuite/gas/aarch64/sme2-21-noarch.l  |   43 +
 gas/testsuite/gas/aarch64/sme2-21.d         |   51 +
 gas/testsuite/gas/aarch64/sme2-21.s         |   47 +
 opcodes/aarch64-dis-2.c                     | 1500 ++++++++++++++-------------
 opcodes/aarch64-tbl.h                       |    6 +
 9 files changed, 966 insertions(+), 717 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 00000000000..5d1d1f4091e
--- /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 00000000000..c148ab2ece7
--- /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 00000000000..91a3e8f70c0
--- /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 00000000000..830ef05c601
--- /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 00000000000..64842d9714c
--- /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 00000000000..255a56d9b70
--- /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 00000000000..a924b7d83a6
--- /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
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index ddd0a68970a..672475aee5b 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -54,21 +54,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          if (((word >> 4) & 0x1) == 0)
+                                          if (((word >> 3) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0000000100xxxxxxxxxxxxxxxx0xxxx
-                                                 fmopa.  */
-                                              return 2365;
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000000100xxxxxxxxxxxxxxxx00xxx
+                                                     fmopa.  */
+                                                  return 2365;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000000100xxxxxxxxxxxxxxxx10xxx
+                                                     fmops.  */
+                                                  return 2368;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0000000100xxxxxxxxxxxxxxxx1xxxx
-                                                 fmops.  */
-                                              return 2368;
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000000100xxxxxxxxxxxxxxxx01xxx
+                                                     bmopa.  */
+                                                  return 2459;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000000100xxxxxxxxxxxxxxxx11xxx
+                                                     bmops.  */
+                                                  return 2460;
+                                                }
                                             }
                                         }
                                     }
@@ -166,7 +188,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000x10x100xxxxxxxxxxxxxxxxx
                                                      zero.  */
-                                                  return 2833;
+                                                  return 2839;
                                                 }
                                             }
                                         }
@@ -190,7 +212,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1000000x00x101xx0xxxxxxxxxxxxxx
                                                          luti4.  */
-                                                      return 2585;
+                                                      return 2587;
                                                     }
                                                   else
                                                     {
@@ -198,7 +220,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1000000x00x101xx1xxxxxxxxxxxxxx
                                                          luti4.  */
-                                                      return 2584;
+                                                      return 2586;
                                                     }
                                                 }
                                               else
@@ -207,7 +229,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000x10x101xxxxxxxxxxxxxxxxx
                                                      luti4.  */
-                                                  return 2583;
+                                                  return 2585;
                                                 }
                                             }
                                         }
@@ -226,7 +248,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1000000xx0x010xxxxx00xxxxxxxxxx
                                                          mov.  */
-                                                      return 2592;
+                                                      return 2594;
                                                     }
                                                   else
                                                     {
@@ -234,7 +256,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1000000xx0x011xxxxx00xxxxxxxxxx
                                                          mov.  */
-                                                      return 2588;
+                                                      return 2590;
                                                     }
                                                 }
                                               else
@@ -247,7 +269,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1000000x00x11xxx0xx00xxxxxxxxxx
                                                              luti2.  */
-                                                          return 2582;
+                                                          return 2584;
                                                         }
                                                       else
                                                         {
@@ -255,7 +277,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1000000x00x11xxx1xx00xxxxxxxxxx
                                                              luti2.  */
-                                                          return 2581;
+                                                          return 2583;
                                                         }
                                                     }
                                                   else
@@ -268,7 +290,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000000010x110xxxxx00xxxxxxxxxx
                                                                  movt.  */
-                                                              return 2603;
+                                                              return 2605;
                                                             }
                                                           else
                                                             {
@@ -276,7 +298,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000000010x111xxxxx00xxxxxxxxxx
                                                                  movt.  */
-                                                              return 2602;
+                                                              return 2604;
                                                             }
                                                         }
                                                       else
@@ -285,7 +307,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1000000110x11xxxxxx00xxxxxxxxxx
                                                              luti2.  */
-                                                          return 2580;
+                                                          return 2582;
                                                         }
                                                     }
                                                 }
@@ -298,7 +320,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000xx0xx10xxxxx10xxxxxxxxxx
                                                      mov.  */
-                                                  return 2590;
+                                                  return 2592;
                                                 }
                                               else
                                                 {
@@ -306,7 +328,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000xx0xx11xxxxx10xxxxxxxxxx
                                                      mov.  */
-                                                  return 2586;
+                                                  return 2588;
                                                 }
                                             }
                                         }
@@ -320,7 +342,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000xx0xx10xxxxx01xxxxxxxxxx
                                                      mov.  */
-                                                  return 2593;
+                                                  return 2595;
                                                 }
                                               else
                                                 {
@@ -328,7 +350,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000xx0xx11xxxxx01xxxxxxxxxx
                                                      mov.  */
-                                                  return 2589;
+                                                  return 2591;
                                                 }
                                             }
                                           else
@@ -339,7 +361,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000xx0xx10xxxxx11xxxxxxxxxx
                                                      mov.  */
-                                                  return 2591;
+                                                  return 2593;
                                                 }
                                               else
                                                 {
@@ -347,7 +369,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000xx0xx11xxxxx11xxxxxxxxxx
                                                      mov.  */
-                                                  return 2587;
+                                                  return 2589;
                                                 }
                                             }
                                         }
@@ -374,7 +396,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx000xxxxxxxxxxxx0
                                                              ld1b.  */
-                                                          return 2519;
+                                                          return 2521;
                                                         }
                                                       else
                                                         {
@@ -382,7 +404,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx100xxxxxxxxxxxx0
                                                              ld1b.  */
-                                                          return 2520;
+                                                          return 2522;
                                                         }
                                                     }
                                                   else
@@ -393,7 +415,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx010xxxxxxxxxxxx0
                                                              ld1w.  */
-                                                          return 2543;
+                                                          return 2545;
                                                         }
                                                       else
                                                         {
@@ -401,7 +423,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx110xxxxxxxxxxxx0
                                                              ld1w.  */
-                                                          return 2544;
+                                                          return 2546;
                                                         }
                                                     }
                                                 }
@@ -415,7 +437,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx001xxxxxxxxxxxx0
                                                              ld1h.  */
-                                                          return 2535;
+                                                          return 2537;
                                                         }
                                                       else
                                                         {
@@ -423,7 +445,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx101xxxxxxxxxxxx0
                                                              ld1h.  */
-                                                          return 2536;
+                                                          return 2538;
                                                         }
                                                     }
                                                   else
@@ -434,7 +456,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx011xxxxxxxxxxxx0
                                                              ld1d.  */
-                                                          return 2527;
+                                                          return 2529;
                                                         }
                                                       else
                                                         {
@@ -442,7 +464,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx111xxxxxxxxxxxx0
                                                              ld1d.  */
-                                                          return 2528;
+                                                          return 2530;
                                                         }
                                                     }
                                                 }
@@ -459,7 +481,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx000xxxxxxxxxxxx1
                                                              ldnt1b.  */
-                                                          return 2551;
+                                                          return 2553;
                                                         }
                                                       else
                                                         {
@@ -467,7 +489,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx100xxxxxxxxxxxx1
                                                              ldnt1b.  */
-                                                          return 2552;
+                                                          return 2554;
                                                         }
                                                     }
                                                   else
@@ -478,7 +500,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx010xxxxxxxxxxxx1
                                                              ldnt1w.  */
-                                                          return 2575;
+                                                          return 2577;
                                                         }
                                                       else
                                                         {
@@ -486,7 +508,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx110xxxxxxxxxxxx1
                                                              ldnt1w.  */
-                                                          return 2576;
+                                                          return 2578;
                                                         }
                                                     }
                                                 }
@@ -500,7 +522,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx001xxxxxxxxxxxx1
                                                              ldnt1h.  */
-                                                          return 2567;
+                                                          return 2569;
                                                         }
                                                       else
                                                         {
@@ -508,7 +530,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx101xxxxxxxxxxxx1
                                                              ldnt1h.  */
-                                                          return 2568;
+                                                          return 2570;
                                                         }
                                                     }
                                                   else
@@ -519,7 +541,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx011xxxxxxxxxxxx1
                                                              ldnt1d.  */
-                                                          return 2559;
+                                                          return 2561;
                                                         }
                                                       else
                                                         {
@@ -527,7 +549,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000000xxxxx111xxxxxxxxxxxx1
                                                              ldnt1d.  */
-                                                          return 2560;
+                                                          return 2562;
                                                         }
                                                     }
                                                 }
@@ -548,11 +570,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 30) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0100000100xxxxxxxxxxxxxxxx0xxxx
-                                                 smopa.  */
-                                              return 2372;
+                                              if (((word >> 3) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0100000100xxxxxxxxxxxxxxxx00xxx
+                                                     smopa.  */
+                                                  return 2372;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0100000100xxxxxxxxxxxxxxxx01xxx
+                                                     smopa.  */
+                                                  return 2663;
+                                                }
                                             }
                                           else
                                             {
@@ -565,11 +598,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx100000100xxxxxxxxxxxxxxxx1xxxx
-                                             smops.  */
-                                          return 2374;
+                                          if (((word >> 3) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx100000100xxxxxxxxxxxxxxxx10xxx
+                                                 smops.  */
+                                              return 2374;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx100000100xxxxxxxxxxxxxxxx11xxx
+                                                 smops.  */
+                                              return 2664;
+                                            }
                                         }
                                     }
                                 }
@@ -591,7 +635,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx000xxxxxxxxxxxx0
                                                              ld1b.  */
-                                                          return 2515;
+                                                          return 2517;
                                                         }
                                                       else
                                                         {
@@ -599,7 +643,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx100xxxxxxxxxxxx0
                                                              ld1b.  */
-                                                          return 2516;
+                                                          return 2518;
                                                         }
                                                     }
                                                   else
@@ -610,7 +654,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx010xxxxxxxxxxxx0
                                                              ld1w.  */
-                                                          return 2539;
+                                                          return 2541;
                                                         }
                                                       else
                                                         {
@@ -618,7 +662,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx110xxxxxxxxxxxx0
                                                              ld1w.  */
-                                                          return 2540;
+                                                          return 2542;
                                                         }
                                                     }
                                                 }
@@ -632,7 +676,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx001xxxxxxxxxxxx0
                                                              ld1h.  */
-                                                          return 2531;
+                                                          return 2533;
                                                         }
                                                       else
                                                         {
@@ -640,7 +684,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx101xxxxxxxxxxxx0
                                                              ld1h.  */
-                                                          return 2532;
+                                                          return 2534;
                                                         }
                                                     }
                                                   else
@@ -651,7 +695,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx011xxxxxxxxxxxx0
                                                              ld1d.  */
-                                                          return 2523;
+                                                          return 2525;
                                                         }
                                                       else
                                                         {
@@ -659,7 +703,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx111xxxxxxxxxxxx0
                                                              ld1d.  */
-                                                          return 2524;
+                                                          return 2526;
                                                         }
                                                     }
                                                 }
@@ -676,7 +720,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx000xxxxxxxxxxxx1
                                                              ldnt1b.  */
-                                                          return 2547;
+                                                          return 2549;
                                                         }
                                                       else
                                                         {
@@ -684,7 +728,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx100xxxxxxxxxxxx1
                                                              ldnt1b.  */
-                                                          return 2548;
+                                                          return 2550;
                                                         }
                                                     }
                                                   else
@@ -695,7 +739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx010xxxxxxxxxxxx1
                                                              ldnt1w.  */
-                                                          return 2571;
+                                                          return 2573;
                                                         }
                                                       else
                                                         {
@@ -703,7 +747,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx110xxxxxxxxxxxx1
                                                              ldnt1w.  */
-                                                          return 2572;
+                                                          return 2574;
                                                         }
                                                     }
                                                 }
@@ -717,7 +761,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx001xxxxxxxxxxxx1
                                                              ldnt1h.  */
-                                                          return 2563;
+                                                          return 2565;
                                                         }
                                                       else
                                                         {
@@ -725,7 +769,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx101xxxxxxxxxxxx1
                                                              ldnt1h.  */
-                                                          return 2564;
+                                                          return 2566;
                                                         }
                                                     }
                                                   else
@@ -736,7 +780,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx011xxxxxxxxxxxx1
                                                              ldnt1d.  */
-                                                          return 2555;
+                                                          return 2557;
                                                         }
                                                       else
                                                         {
@@ -744,7 +788,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100000010xxxxx111xxxxxxxxxxxx1
                                                              ldnt1d.  */
-                                                          return 2556;
+                                                          return 2558;
                                                         }
                                                     }
                                                 }
@@ -812,7 +856,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx000xxxxxxxxxxxx0
                                                          st1b.  */
-                                                      return 2673;
+                                                      return 2677;
                                                     }
                                                   else
                                                     {
@@ -820,7 +864,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx100xxxxxxxxxxxx0
                                                          st1b.  */
-                                                      return 2674;
+                                                      return 2678;
                                                     }
                                                 }
                                               else
@@ -831,7 +875,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx010xxxxxxxxxxxx0
                                                          st1w.  */
-                                                      return 2697;
+                                                      return 2701;
                                                     }
                                                   else
                                                     {
@@ -839,7 +883,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx110xxxxxxxxxxxx0
                                                          st1w.  */
-                                                      return 2698;
+                                                      return 2702;
                                                     }
                                                 }
                                             }
@@ -853,7 +897,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx001xxxxxxxxxxxx0
                                                          st1h.  */
-                                                      return 2689;
+                                                      return 2693;
                                                     }
                                                   else
                                                     {
@@ -861,7 +905,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx101xxxxxxxxxxxx0
                                                          st1h.  */
-                                                      return 2690;
+                                                      return 2694;
                                                     }
                                                 }
                                               else
@@ -872,7 +916,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx011xxxxxxxxxxxx0
                                                          st1d.  */
-                                                      return 2681;
+                                                      return 2685;
                                                     }
                                                   else
                                                     {
@@ -880,7 +924,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx111xxxxxxxxxxxx0
                                                          st1d.  */
-                                                      return 2682;
+                                                      return 2686;
                                                     }
                                                 }
                                             }
@@ -897,7 +941,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx000xxxxxxxxxxxx1
                                                          stnt1b.  */
-                                                      return 2705;
+                                                      return 2709;
                                                     }
                                                   else
                                                     {
@@ -905,7 +949,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx100xxxxxxxxxxxx1
                                                          stnt1b.  */
-                                                      return 2706;
+                                                      return 2710;
                                                     }
                                                 }
                                               else
@@ -916,7 +960,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx010xxxxxxxxxxxx1
                                                          stnt1w.  */
-                                                      return 2729;
+                                                      return 2733;
                                                     }
                                                   else
                                                     {
@@ -924,7 +968,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx110xxxxxxxxxxxx1
                                                          stnt1w.  */
-                                                      return 2730;
+                                                      return 2734;
                                                     }
                                                 }
                                             }
@@ -938,7 +982,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx001xxxxxxxxxxxx1
                                                          stnt1h.  */
-                                                      return 2721;
+                                                      return 2725;
                                                     }
                                                   else
                                                     {
@@ -946,7 +990,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx101xxxxxxxxxxxx1
                                                          stnt1h.  */
-                                                      return 2722;
+                                                      return 2726;
                                                     }
                                                 }
                                               else
@@ -957,7 +1001,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx011xxxxxxxxxxxx1
                                                          stnt1d.  */
-                                                      return 2713;
+                                                      return 2717;
                                                     }
                                                   else
                                                     {
@@ -965,7 +1009,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000001xxxxx111xxxxxxxxxxxx1
                                                          stnt1d.  */
-                                                      return 2714;
+                                                      return 2718;
                                                     }
                                                 }
                                             }
@@ -1029,7 +1073,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx000xxxxxxxxxxxx0
                                                          st1b.  */
-                                                      return 2669;
+                                                      return 2673;
                                                     }
                                                   else
                                                     {
@@ -1037,7 +1081,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx100xxxxxxxxxxxx0
                                                          st1b.  */
-                                                      return 2670;
+                                                      return 2674;
                                                     }
                                                 }
                                               else
@@ -1048,7 +1092,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx010xxxxxxxxxxxx0
                                                          st1w.  */
-                                                      return 2693;
+                                                      return 2697;
                                                     }
                                                   else
                                                     {
@@ -1056,7 +1100,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx110xxxxxxxxxxxx0
                                                          st1w.  */
-                                                      return 2694;
+                                                      return 2698;
                                                     }
                                                 }
                                             }
@@ -1070,7 +1114,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx001xxxxxxxxxxxx0
                                                          st1h.  */
-                                                      return 2685;
+                                                      return 2689;
                                                     }
                                                   else
                                                     {
@@ -1078,7 +1122,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx101xxxxxxxxxxxx0
                                                          st1h.  */
-                                                      return 2686;
+                                                      return 2690;
                                                     }
                                                 }
                                               else
@@ -1089,7 +1133,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx011xxxxxxxxxxxx0
                                                          st1d.  */
-                                                      return 2677;
+                                                      return 2681;
                                                     }
                                                   else
                                                     {
@@ -1097,7 +1141,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx111xxxxxxxxxxxx0
                                                          st1d.  */
-                                                      return 2678;
+                                                      return 2682;
                                                     }
                                                 }
                                             }
@@ -1114,7 +1158,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx000xxxxxxxxxxxx1
                                                          stnt1b.  */
-                                                      return 2701;
+                                                      return 2705;
                                                     }
                                                   else
                                                     {
@@ -1122,7 +1166,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx100xxxxxxxxxxxx1
                                                          stnt1b.  */
-                                                      return 2702;
+                                                      return 2706;
                                                     }
                                                 }
                                               else
@@ -1133,7 +1177,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx010xxxxxxxxxxxx1
                                                          stnt1w.  */
-                                                      return 2725;
+                                                      return 2729;
                                                     }
                                                   else
                                                     {
@@ -1141,7 +1185,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx110xxxxxxxxxxxx1
                                                          stnt1w.  */
-                                                      return 2726;
+                                                      return 2730;
                                                     }
                                                 }
                                             }
@@ -1155,7 +1199,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx001xxxxxxxxxxxx1
                                                          stnt1h.  */
-                                                      return 2717;
+                                                      return 2721;
                                                     }
                                                   else
                                                     {
@@ -1163,7 +1207,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx101xxxxxxxxxxxx1
                                                          stnt1h.  */
-                                                      return 2718;
+                                                      return 2722;
                                                     }
                                                 }
                                               else
@@ -1174,7 +1218,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx011xxxxxxxxxxxx1
                                                          stnt1d.  */
-                                                      return 2709;
+                                                      return 2713;
                                                     }
                                                   else
                                                     {
@@ -1182,7 +1226,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x00000011xxxxx111xxxxxxxxxxxx1
                                                          stnt1d.  */
-                                                      return 2710;
+                                                      return 2714;
                                                     }
                                                 }
                                             }
@@ -1274,7 +1318,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010000xxxxxxxxxxxxxxx000xx
                                                          smlall.  */
-                                                      return 2637;
+                                                      return 2639;
                                                     }
                                                   else
                                                     {
@@ -1282,7 +1326,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010000xxxxxxxxxxxxxxx001xx
                                                          usmlall.  */
-                                                      return 2814;
+                                                      return 2820;
                                                     }
                                                 }
                                               else
@@ -1295,7 +1339,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx0xxxxxxxxx000xxx
                                                              smlall.  */
-                                                          return 2638;
+                                                          return 2640;
                                                         }
                                                       else
                                                         {
@@ -1303,7 +1347,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx1xxxxxxxxx000xxx
                                                              smlall.  */
-                                                          return 2639;
+                                                          return 2641;
                                                         }
                                                     }
                                                   else
@@ -1314,7 +1358,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx0xxxxxxxxx100xxx
                                                              usmlall.  */
-                                                          return 2815;
+                                                          return 2821;
                                                         }
                                                       else
                                                         {
@@ -1322,7 +1366,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx1xxxxxxxxx100xxx
                                                              usmlall.  */
-                                                          return 2816;
+                                                          return 2822;
                                                         }
                                                     }
                                                 }
@@ -1337,7 +1381,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010000xxxxxxxxxxxxxxx100xx
                                                          umlall.  */
-                                                      return 2780;
+                                                      return 2784;
                                                     }
                                                   else
                                                     {
@@ -1345,7 +1389,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010000xxxxxxxxxxxxxxx101xx
                                                          sumlall.  */
-                                                      return 2744;
+                                                      return 2748;
                                                     }
                                                 }
                                               else
@@ -1358,7 +1402,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx0xxxxxxxxx010xxx
                                                              umlall.  */
-                                                          return 2781;
+                                                          return 2785;
                                                         }
                                                       else
                                                         {
@@ -1366,7 +1410,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx1xxxxxxxxx010xxx
                                                              umlall.  */
-                                                          return 2782;
+                                                          return 2786;
                                                         }
                                                     }
                                                   else
@@ -1377,7 +1421,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx0xxxxxxxxx110xxx
                                                              sumlall.  */
-                                                          return 2745;
+                                                          return 2749;
                                                         }
                                                       else
                                                         {
@@ -1385,7 +1429,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx1xxxxxxxxx110xxx
                                                              sumlall.  */
-                                                          return 2746;
+                                                          return 2750;
                                                         }
                                                     }
                                                 }
@@ -1401,7 +1445,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0000010000xxxxxxxxxxxxxxx01xxx
                                                      smlsll.  */
-                                                  return 2653;
+                                                  return 2655;
                                                 }
                                               else
                                                 {
@@ -1411,7 +1455,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxx0xxxxxxxxxx01xxx
                                                          smlsll.  */
-                                                      return 2654;
+                                                      return 2656;
                                                     }
                                                   else
                                                     {
@@ -1419,7 +1463,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxx1xxxxxxxxxx01xxx
                                                          smlsll.  */
-                                                      return 2655;
+                                                      return 2657;
                                                     }
                                                 }
                                             }
@@ -1431,7 +1475,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0000010000xxxxxxxxxxxxxxx11xxx
                                                      umlsll.  */
-                                                  return 2796;
+                                                  return 2800;
                                                 }
                                               else
                                                 {
@@ -1441,7 +1485,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxx0xxxxxxxxxx11xxx
                                                          umlsll.  */
-                                                      return 2797;
+                                                      return 2801;
                                                     }
                                                   else
                                                     {
@@ -1449,7 +1493,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxx1xxxxxxxxxx11xxx
                                                          umlsll.  */
-                                                      return 2798;
+                                                      return 2802;
                                                     }
                                                 }
                                             }
@@ -1471,7 +1515,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx000xxxxxxxxx0xxx
                                                              ld1b.  */
-                                                          return 2521;
+                                                          return 2523;
                                                         }
                                                       else
                                                         {
@@ -1479,7 +1523,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx010xxxxxxxxx0xxx
                                                              ld1w.  */
-                                                          return 2545;
+                                                          return 2547;
                                                         }
                                                     }
                                                   else
@@ -1490,7 +1534,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx001xxxxxxxxx0xxx
                                                              ld1h.  */
-                                                          return 2537;
+                                                          return 2539;
                                                         }
                                                       else
                                                         {
@@ -1498,7 +1542,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx011xxxxxxxxx0xxx
                                                              ld1d.  */
-                                                          return 2529;
+                                                          return 2531;
                                                         }
                                                     }
                                                 }
@@ -1512,7 +1556,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx000xxxxxxxxx1xxx
                                                              ldnt1b.  */
-                                                          return 2553;
+                                                          return 2555;
                                                         }
                                                       else
                                                         {
@@ -1520,7 +1564,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx010xxxxxxxxx1xxx
                                                              ldnt1w.  */
-                                                          return 2577;
+                                                          return 2579;
                                                         }
                                                     }
                                                   else
@@ -1531,7 +1575,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx001xxxxxxxxx1xxx
                                                              ldnt1h.  */
-                                                          return 2569;
+                                                          return 2571;
                                                         }
                                                       else
                                                         {
@@ -1539,7 +1583,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx011xxxxxxxxx1xxx
                                                              ldnt1d.  */
-                                                          return 2561;
+                                                          return 2563;
                                                         }
                                                     }
                                                 }
@@ -1567,7 +1611,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0100001000xxxxx100xxxxxxxxx0xxx
                                                              ld1b.  */
-                                                          return 2522;
+                                                          return 2524;
                                                         }
                                                       else
                                                         {
@@ -1575,7 +1619,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1100001000xxxxx100xxxxxxxxx0xxx
                                                              ldr.  */
-                                                          return 2579;
+                                                          return 2581;
                                                         }
                                                     }
                                                   else
@@ -1584,7 +1628,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx110xxxxxxxxx0xxx
                                                          ld1w.  */
-                                                      return 2546;
+                                                      return 2548;
                                                     }
                                                 }
                                               else
@@ -1595,7 +1639,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx101xxxxxxxxx0xxx
                                                          ld1h.  */
-                                                      return 2538;
+                                                      return 2540;
                                                     }
                                                   else
                                                     {
@@ -1603,7 +1647,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx111xxxxxxxxx0xxx
                                                          ld1d.  */
-                                                      return 2530;
+                                                      return 2532;
                                                     }
                                                 }
                                             }
@@ -1617,7 +1661,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx100xxxxxxxxx1xxx
                                                          ldnt1b.  */
-                                                      return 2554;
+                                                      return 2556;
                                                     }
                                                   else
                                                     {
@@ -1625,7 +1669,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx110xxxxxxxxx1xxx
                                                          ldnt1w.  */
-                                                      return 2578;
+                                                      return 2580;
                                                     }
                                                 }
                                               else
@@ -1636,7 +1680,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx101xxxxxxxxx1xxx
                                                          ldnt1h.  */
-                                                      return 2570;
+                                                      return 2572;
                                                     }
                                                   else
                                                     {
@@ -1644,7 +1688,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx100001000xxxxx111xxxxxxxxx1xxx
                                                          ldnt1d.  */
-                                                      return 2562;
+                                                      return 2564;
                                                     }
                                                 }
                                             }
@@ -1677,7 +1721,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011000xxxxxxx0xxxxxxx00xxx
                                                              smlall.  */
-                                                          return 2836;
+                                                          return 2842;
                                                         }
                                                       else
                                                         {
@@ -1687,7 +1731,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx0xx0xxxxxxx00xxx
                                                                  smlall.  */
-                                                              return 2837;
+                                                              return 2843;
                                                             }
                                                           else
                                                             {
@@ -1695,7 +1739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx1xx0xxxxxxx00xxx
                                                                  smlall.  */
-                                                              return 2838;
+                                                              return 2844;
                                                             }
                                                         }
                                                     }
@@ -1707,7 +1751,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011000xxxxxxx1xxxxxxx00xxx
                                                              fmlal.  */
-                                                          return 2490;
+                                                          return 2492;
                                                         }
                                                       else
                                                         {
@@ -1717,7 +1761,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx0xx1xxxxxxx00xxx
                                                                  fmlal.  */
-                                                              return 2491;
+                                                              return 2493;
                                                             }
                                                           else
                                                             {
@@ -1725,7 +1769,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx1xx1xxxxxxx00xxx
                                                                  fmlal.  */
-                                                              return 2492;
+                                                              return 2494;
                                                             }
                                                         }
                                                     }
@@ -1762,7 +1806,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011000xxxxxxx0xxxxxxx10xxx
                                                              umlall.  */
-                                                          return 2845;
+                                                          return 2851;
                                                         }
                                                       else
                                                         {
@@ -1772,7 +1816,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx0xx0xxxxxxx10xxx
                                                                  umlall.  */
-                                                              return 2846;
+                                                              return 2852;
                                                             }
                                                           else
                                                             {
@@ -1780,7 +1824,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx1xx0xxxxxxx10xxx
                                                                  umlall.  */
-                                                              return 2847;
+                                                              return 2853;
                                                             }
                                                         }
                                                     }
@@ -1830,129 +1874,151 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 4) & 0x1) == 0)
                                         {
-                                          if (((word >> 12) & 0x1) == 0)
+                                          if (((word >> 29) & 0x1) == 0)
                                             {
-                                              if (((word >> 20) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxx000011000xxxxxxx0xxxxxxx01xxx
-                                                     smlsll.  */
-                                                  return 2839;
-                                                }
-                                              else
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 15) & 0x1) == 0)
+                                                  if (((word >> 20) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx000011001xxxx0xx0xxxxxxx01xxx
+                                                         xx0000011000xxxxxxx0xxxxxxx01xxx
                                                          smlsll.  */
-                                                      return 2840;
+                                                      return 2845;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-  [...]

[diff truncated at 100000 bytes]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-03-30 10:15 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:15 [binutils-gdb] aarch64: Add the SME2 MOPA and MOPS 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).