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

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

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

    aarch64: Add the SME2 UNPK instructions
    
    This patch adds SUNPK and UUNPK, which unpack one register's
    worth of elements to two registers' worth, or two registers'
    worth to four registers' worth.

Diff:
---
 gas/testsuite/gas/aarch64/sme2-29-invalid.d |    3 +
 gas/testsuite/gas/aarch64/sme2-29-invalid.l |   39 +
 gas/testsuite/gas/aarch64/sme2-29-invalid.s |   14 +
 gas/testsuite/gas/aarch64/sme2-29-noarch.d  |    3 +
 gas/testsuite/gas/aarch64/sme2-29-noarch.l  |   37 +
 gas/testsuite/gas/aarch64/sme2-29.d         |   45 +
 gas/testsuite/gas/aarch64/sme2-29.s         |   47 +
 opcodes/aarch64-dis-2.c                     | 1466 ++++++++++++++-------------
 opcodes/aarch64-tbl.h                       |    4 +
 9 files changed, 947 insertions(+), 711 deletions(-)

diff --git a/gas/testsuite/gas/aarch64/sme2-29-invalid.d b/gas/testsuite/gas/aarch64/sme2-29-invalid.d
new file mode 100644
index 00000000000..ad85e2d6ffa
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29-invalid.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a
+#source: sme2-29-invalid.s
+#error_output: sme2-29-invalid.l
diff --git a/gas/testsuite/gas/aarch64/sme2-29-invalid.l b/gas/testsuite/gas/aarch64/sme2-29-invalid.l
new file mode 100644
index 00000000000..893866c114f
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29-invalid.l
@@ -0,0 +1,39 @@
+[^ :]+: Assembler messages:
+[^ :]+:[0-9]+: Error: expected '{' at operand 1 -- `sunpk 0,z0\.b'
+[^ :]+:[0-9]+: Error: expected a register or register list at operand 2 -- `sunpk {z0\.h,z1\.h},0'
+[^ :]+:[0-9]+: Error: missing braces at operand 1 -- `sunpk z0\.b,z0\.b'
+[^ :]+:[0-9]+: Error: operand mismatch -- `sunpk {z0\.b,z1\.b},z0\.b'
+[^ :]+:[0-9]+: Info:    did you mean this\?
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.h-z1\.h}, z0\.b
+[^ :]+:[0-9]+: Info:    other valid variant\(s\):
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.s-z1\.s}, z0\.h
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.d-z1\.d}, z0\.s
+[^ :]+:[0-9]+: Error: operand mismatch -- `sunpk {z0\.h,z1\.h},z0\.h'
+[^ :]+:[0-9]+: Info:    did you mean this\?
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.h-z1\.h}, z0\.b
+[^ :]+:[0-9]+: Info:    other valid variant\(s\):
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.s-z1\.s}, z0\.h
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.d-z1\.d}, z0\.s
+[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `sunpk {z1\.h,z2\.h},z0\.b'
+[^ :]+:[0-9]+: Error: operand mismatch -- `sunpk {z0\.b,z2\.b},z0\.b'
+[^ :]+:[0-9]+: Info:    did you mean this\?
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.h, z2\.h}, z0\.b
+[^ :]+:[0-9]+: Info:    other valid variant\(s\):
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.s, z2\.s}, z0\.h
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.d, z2\.d}, z0\.s
+[^ :]+:[0-9]+: Error: expected a list of 4 registers at operand 1 -- `sunpk {z1\.h-z3\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: expected a list of 4 registers at operand 1 -- `sunpk {z2\.h-z4\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: expected a list of 4 registers at operand 1 -- `sunpk {z3\.h-z5\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: operand mismatch -- `sunpk {z0\.s-z3\.s},z0\.b'
+[^ :]+:[0-9]+: Info:    did you mean this\?
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.h-z3\.h}, z0\.b
+[^ :]+:[0-9]+: Info:    other valid variant\(s\):
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.s-z3\.s}, z0\.h
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.d-z3\.d}, z0\.s
+[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 2 -- `sunpk {z0\.s-z3\.s},{x0\.s-x1\.s}'
+[^ :]+:[0-9]+: Error: operand mismatch -- `sunpk {z0\.s-z3\.s},{z0\.s-z3\.s}'
+[^ :]+:[0-9]+: Info:    did you mean this\?
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.s-z3\.s}, {z0\.h-z3\.h}
+[^ :]+:[0-9]+: Info:    other valid variant\(s\):
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.h-z3\.h}, {z0\.b-z3\.b}
+[^ :]+:[0-9]+: Info:    	sunpk {z0\.d-z3\.d}, {z0\.s-z3\.s}
diff --git a/gas/testsuite/gas/aarch64/sme2-29-invalid.s b/gas/testsuite/gas/aarch64/sme2-29-invalid.s
new file mode 100644
index 00000000000..2282dd214f4
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29-invalid.s
@@ -0,0 +1,14 @@
+	sunpk	0, z0.b
+	sunpk	{ z0.h, z1.h }, 0
+
+	sunpk	z0.b, z0.b
+	sunpk	{ z0.b, z1.b }, z0.b
+	sunpk	{ z0.h, z1.h }, z0.h
+	sunpk	{ z1.h, z2.h }, z0.b
+	sunpk	{ z0.b, z2.b }, z0.b
+	sunpk	{ z1.h - z3.h }, { z0.b - z1.b }
+	sunpk	{ z2.h - z4.h }, { z0.b - z1.b }
+	sunpk	{ z3.h - z5.h }, { z0.b - z1.b }
+	sunpk	{ z0.s - z3.s }, z0.b
+	sunpk	{ z0.s - z3.s }, { x0.s - x1.s }
+	sunpk	{ z0.s - z3.s }, { z0.s - z3.s }
diff --git a/gas/testsuite/gas/aarch64/sme2-29-noarch.d b/gas/testsuite/gas/aarch64/sme2-29-noarch.d
new file mode 100644
index 00000000000..73c02c50997
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29-noarch.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a+sme
+#source: sme2-29.s
+#error_output: sme2-29-noarch.l
diff --git a/gas/testsuite/gas/aarch64/sme2-29-noarch.l b/gas/testsuite/gas/aarch64/sme2-29-noarch.l
new file mode 100644
index 00000000000..2777e1672b3
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29-noarch.l
@@ -0,0 +1,37 @@
+[^ :]+: Assembler messages:
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.h,z1\.h},z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z30\.h,z31\.h},z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.h,z1\.h},z31\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.h-z3\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z28\.h-z31\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.h-z3\.h},{z30\.b-z31\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.s,z1\.s},z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z30\.s,z31\.s},z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.s,z1\.s},z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.s-z3\.s},{z0\.h-z1\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z28\.s-z31\.s},{z0\.h-z1\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.s-z3\.s},{z30\.h-z31\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.d,z1\.d},z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z30\.d,z31\.d},z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.d,z1\.d},z31\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.d-z3\.d},{z0\.s-z1\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z28\.d-z31\.d},{z0\.s-z1\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `sunpk {z0\.d-z3\.d},{z30\.s-z31\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.h,z1\.h},z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z30\.h,z31\.h},z0\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.h,z1\.h},z31\.b'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.h-z3\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z28\.h-z31\.h},{z0\.b-z1\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.h-z3\.h},{z30\.b-z31\.b}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.s,z1\.s},z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z30\.s,z31\.s},z0\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.s,z1\.s},z31\.h'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.s-z3\.s},{z0\.h-z1\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z28\.s-z31\.s},{z0\.h-z1\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.s-z3\.s},{z30\.h-z31\.h}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.d,z1\.d},z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z30\.d,z31\.d},z0\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.d,z1\.d},z31\.s'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.d-z3\.d},{z0\.s-z1\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z28\.d-z31\.d},{z0\.s-z1\.s}'
+[^ :]+:[0-9]+: Error: selected processor does not support `uunpk {z0\.d-z3\.d},{z30\.s-z31\.s}'
diff --git a/gas/testsuite/gas/aarch64/sme2-29.d b/gas/testsuite/gas/aarch64/sme2-29.d
new file mode 100644
index 00000000000..235b0554b8f
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29.d
@@ -0,0 +1,45 @@
+#as: -march=armv8-a+sme2
+#objdump: -dr
+
+[^:]+:     file format .*
+
+
+[^:]+:
+
+[^:]+:
+[^:]+:	c165e000 	sunpk	{z0\.h-z1\.h}, z0\.b
+[^:]+:	c165e01e 	sunpk	{z30\.h-z31\.h}, z0\.b
+[^:]+:	c165e3e0 	sunpk	{z0\.h-z1\.h}, z31\.b
+[^:]+:	c175e000 	sunpk	{z0\.h-z3\.h}, {z0\.b-z1\.b}
+[^:]+:	c175e01c 	sunpk	{z28\.h-z31\.h}, {z0\.b-z1\.b}
+[^:]+:	c175e3c0 	sunpk	{z0\.h-z3\.h}, {z30\.b-z31\.b}
+[^:]+:	c1a5e000 	sunpk	{z0\.s-z1\.s}, z0\.h
+[^:]+:	c1a5e01e 	sunpk	{z30\.s-z31\.s}, z0\.h
+[^:]+:	c1a5e3e0 	sunpk	{z0\.s-z1\.s}, z31\.h
+[^:]+:	c1b5e000 	sunpk	{z0\.s-z3\.s}, {z0\.h-z1\.h}
+[^:]+:	c1b5e01c 	sunpk	{z28\.s-z31\.s}, {z0\.h-z1\.h}
+[^:]+:	c1b5e3c0 	sunpk	{z0\.s-z3\.s}, {z30\.h-z31\.h}
+[^:]+:	c1e5e000 	sunpk	{z0\.d-z1\.d}, z0\.s
+[^:]+:	c1e5e01e 	sunpk	{z30\.d-z31\.d}, z0\.s
+[^:]+:	c1e5e3e0 	sunpk	{z0\.d-z1\.d}, z31\.s
+[^:]+:	c1f5e000 	sunpk	{z0\.d-z3\.d}, {z0\.s-z1\.s}
+[^:]+:	c1f5e01c 	sunpk	{z28\.d-z31\.d}, {z0\.s-z1\.s}
+[^:]+:	c1f5e3c0 	sunpk	{z0\.d-z3\.d}, {z30\.s-z31\.s}
+[^:]+:	c165e001 	uunpk	{z0\.h-z1\.h}, z0\.b
+[^:]+:	c165e01f 	uunpk	{z30\.h-z31\.h}, z0\.b
+[^:]+:	c165e3e1 	uunpk	{z0\.h-z1\.h}, z31\.b
+[^:]+:	c175e001 	uunpk	{z0\.h-z3\.h}, {z0\.b-z1\.b}
+[^:]+:	c175e01d 	uunpk	{z28\.h-z31\.h}, {z0\.b-z1\.b}
+[^:]+:	c175e3c1 	uunpk	{z0\.h-z3\.h}, {z30\.b-z31\.b}
+[^:]+:	c1a5e001 	uunpk	{z0\.s-z1\.s}, z0\.h
+[^:]+:	c1a5e01f 	uunpk	{z30\.s-z31\.s}, z0\.h
+[^:]+:	c1a5e3e1 	uunpk	{z0\.s-z1\.s}, z31\.h
+[^:]+:	c1b5e001 	uunpk	{z0\.s-z3\.s}, {z0\.h-z1\.h}
+[^:]+:	c1b5e01d 	uunpk	{z28\.s-z31\.s}, {z0\.h-z1\.h}
+[^:]+:	c1b5e3c1 	uunpk	{z0\.s-z3\.s}, {z30\.h-z31\.h}
+[^:]+:	c1e5e001 	uunpk	{z0\.d-z1\.d}, z0\.s
+[^:]+:	c1e5e01f 	uunpk	{z30\.d-z31\.d}, z0\.s
+[^:]+:	c1e5e3e1 	uunpk	{z0\.d-z1\.d}, z31\.s
+[^:]+:	c1f5e001 	uunpk	{z0\.d-z3\.d}, {z0\.s-z1\.s}
+[^:]+:	c1f5e01d 	uunpk	{z28\.d-z31\.d}, {z0\.s-z1\.s}
+[^:]+:	c1f5e3c1 	uunpk	{z0\.d-z3\.d}, {z30\.s-z31\.s}
diff --git a/gas/testsuite/gas/aarch64/sme2-29.s b/gas/testsuite/gas/aarch64/sme2-29.s
new file mode 100644
index 00000000000..1cf1a3f239b
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/sme2-29.s
@@ -0,0 +1,47 @@
+	sunpk	{ z0.h, z1.h }, z0.b
+	sunpk	{ z30.h, z31.h }, z0.b
+	sunpk	{ z0.h, z1.h }, z31.b
+
+	sunpk	{ z0.h - z3.h }, { z0.b - z1.b }
+	sunpk	{ z28.h - z31.h }, { z0.b - z1.b }
+	sunpk	{ z0.h - z3.h }, { z30.b - z31.b }
+
+	sunpk	{ z0.s, z1.s }, z0.h
+	sunpk	{ z30.s, z31.s }, z0.h
+	sunpk	{ z0.s, z1.s }, z31.h
+
+	sunpk	{ z0.s - z3.s }, { z0.h - z1.h }
+	sunpk	{ z28.s - z31.s }, { z0.h - z1.h }
+	sunpk	{ z0.s - z3.s }, { z30.h - z31.h }
+
+	sunpk	{ z0.d, z1.d }, z0.s
+	sunpk	{ z30.d, z31.d }, z0.s
+	sunpk	{ z0.d, z1.d }, z31.s
+
+	sunpk	{ z0.d - z3.d }, { z0.s - z1.s }
+	sunpk	{ z28.d - z31.d }, { z0.s - z1.s }
+	sunpk	{ z0.d - z3.d }, { z30.s - z31.s }
+
+	uunpk	{ z0.h, z1.h }, z0.b
+	uunpk	{ z30.h, z31.h }, z0.b
+	uunpk	{ z0.h, z1.h }, z31.b
+
+	uunpk	{ z0.h - z3.h }, { z0.b - z1.b }
+	uunpk	{ z28.h - z31.h }, { z0.b - z1.b }
+	uunpk	{ z0.h - z3.h }, { z30.b - z31.b }
+
+	uunpk	{ z0.s, z1.s }, z0.h
+	uunpk	{ z30.s, z31.s }, z0.h
+	uunpk	{ z0.s, z1.s }, z31.h
+
+	uunpk	{ z0.s - z3.s }, { z0.h - z1.h }
+	uunpk	{ z28.s - z31.s }, { z0.h - z1.h }
+	uunpk	{ z0.s - z3.s }, { z30.h - z31.h }
+
+	uunpk	{ z0.d, z1.d }, z0.s
+	uunpk	{ z30.d, z31.d }, z0.s
+	uunpk	{ z0.d, z1.d }, z31.s
+
+	uunpk	{ z0.d - z3.d }, { z0.s - z1.s }
+	uunpk	{ z28.d - z31.d }, { z0.s - z1.s }
+	uunpk	{ z0.d - z3.d }, { z30.s - z31.s }
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index d82c37498e7..e514becb5fd 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -188,7 +188,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1000000x10x100xxxxxxxxxxxxxxxxx
                                                      zero.  */
-                                                  return 2883;
+                                                  return 2887;
                                                 }
                                             }
                                         }
@@ -1326,7 +1326,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010000xxxxxxxxxxxxxxx001xx
                                                          usmlall.  */
-                                                      return 2864;
+                                                      return 2866;
                                                     }
                                                 }
                                               else
@@ -1358,7 +1358,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx0xxxxxxxxx100xxx
                                                              usmlall.  */
-                                                          return 2865;
+                                                          return 2867;
                                                         }
                                                       else
                                                         {
@@ -1366,7 +1366,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx1xxxxxxxxx100xxx
                                                              usmlall.  */
-                                                          return 2866;
+                                                          return 2868;
                                                         }
                                                     }
                                                 }
@@ -1381,7 +1381,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010000xxxxxxxxxxxxxxx100xx
                                                          umlall.  */
-                                                      return 2822;
+                                                      return 2824;
                                                     }
                                                   else
                                                     {
@@ -1402,7 +1402,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx0xxxxxxxxx010xxx
                                                              umlall.  */
-                                                          return 2823;
+                                                          return 2825;
                                                         }
                                                       else
                                                         {
@@ -1410,7 +1410,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000010001xxxx1xxxxxxxxx010xxx
                                                              umlall.  */
-                                                          return 2824;
+                                                          return 2826;
                                                         }
                                                     }
                                                   else
@@ -1475,7 +1475,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0000010000xxxxxxxxxxxxxxx11xxx
                                                      umlsll.  */
-                                                  return 2838;
+                                                  return 2840;
                                                 }
                                               else
                                                 {
@@ -1485,7 +1485,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxx0xxxxxxxxxx11xxx
                                                          umlsll.  */
-                                                      return 2839;
+                                                      return 2841;
                                                     }
                                                   else
                                                     {
@@ -1493,7 +1493,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxx1xxxxxxxxxx11xxx
                                                          umlsll.  */
-                                                      return 2840;
+                                                      return 2842;
                                                     }
                                                 }
                                             }
@@ -1721,7 +1721,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011000xxxxxxx0xxxxxxx00xxx
                                                              smlall.  */
-                                                          return 2886;
+                                                          return 2890;
                                                         }
                                                       else
                                                         {
@@ -1731,7 +1731,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx0xx0xxxxxxx00xxx
                                                                  smlall.  */
-                                                              return 2887;
+                                                              return 2891;
                                                             }
                                                           else
                                                             {
@@ -1739,7 +1739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx1xx0xxxxxxx00xxx
                                                                  smlall.  */
-                                                              return 2888;
+                                                              return 2892;
                                                             }
                                                         }
                                                     }
@@ -1806,7 +1806,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011000xxxxxxx0xxxxxxx10xxx
                                                              umlall.  */
-                                                          return 2895;
+                                                          return 2899;
                                                         }
                                                       else
                                                         {
@@ -1816,7 +1816,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx0xx0xxxxxxx10xxx
                                                                  umlall.  */
-                                                              return 2896;
+                                                              return 2900;
                                                             }
                                                           else
                                                             {
@@ -1824,7 +1824,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxx1xx0xxxxxxx10xxx
                                                                  umlall.  */
-                                                              return 2897;
+                                                              return 2901;
                                                             }
                                                         }
                                                     }
@@ -1884,7 +1884,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011000xxxxxxx0xxxxxxx01xxx
                                                          smlsll.  */
-                                                      return 2889;
+                                                      return 2893;
                                                     }
                                                   else
                                                     {
@@ -1894,7 +1894,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000011001xxxx0xx0xxxxxxx01xxx
                                                              smlsll.  */
-                                                          return 2890;
+                                                          return 2894;
                                                         }
                                                       else
                                                         {
@@ -1902,7 +1902,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000011001xxxx1xx0xxxxxxx01xxx
                                                              smlsll.  */
-                                                          return 2891;
+                                                          return 2895;
                                                         }
                                                     }
                                                 }
@@ -1943,7 +1943,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx100001100xxxxxxxxxxxxxxxx01xxx
                                                  umopa.  */
-                                              return 2846;
+                                              return 2848;
                                             }
                                         }
                                       else
@@ -1958,7 +1958,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011000xxxxxxx0xxxxxxx11xxx
                                                          umlsll.  */
-                                                      return 2898;
+                                                      return 2902;
                                                     }
                                                   else
                                                     {
@@ -1968,7 +1968,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000011001xxxx0xx0xxxxxxx11xxx
                                                              umlsll.  */
-                                                          return 2899;
+                                                          return 2903;
                                                         }
                                                       else
                                                         {
@@ -1976,7 +1976,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000011001xxxx1xx0xxxxxxx11xxx
                                                              umlsll.  */
-                                                          return 2900;
+                                                          return 2904;
                                                         }
                                                     }
                                                 }
@@ -2017,7 +2017,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx100001100xxxxxxxxxxxxxxxx11xxx
                                                  umops.  */
-                                              return 2847;
+                                              return 2849;
                                             }
                                         }
                                     }
@@ -2103,7 +2103,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx0xx0xxxxxx100xxx
                                                              svdot.  */
-                                                          return 2788;
+                                                          return 2790;
                                                         }
                                                       else
                                                         {
@@ -2133,7 +2133,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx0xx1xxxxxx010xxx
                                                              udot.  */
-                                                          return 2794;
+                                                          return 2796;
                                                         }
                                                     }
                                                   else
@@ -2144,7 +2144,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx0xx0xxxxxx110xxx
                                                              uvdot.  */
-                                                          return 2873;
+                                                          return 2877;
                                                         }
                                                       else
                                                         {
@@ -2152,7 +2152,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx0xx1xxxxxx110xxx
                                                              udot.  */
-                                                          return 2800;
+                                                          return 2802;
                                                         }
                                                     }
                                                 }
@@ -2232,7 +2232,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx0xxxxxx100xxx
                                                              svdot.  */
-                                                          return 2789;
+                                                          return 2791;
                                                         }
                                                       else
                                                         {
@@ -2262,7 +2262,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx1xxxxxx010xxx
                                                              udot.  */
-                                                          return 2795;
+                                                          return 2797;
                                                         }
                                                     }
                                                   else
@@ -2273,7 +2273,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx0xxxxxx110xxx
                                                              uvdot.  */
-                                                          return 2874;
+                                                          return 2878;
                                                         }
                                                       else
                                                         {
@@ -2281,7 +2281,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx1xxxxxx110xxx
                                                              udot.  */
-                                                          return 2801;
+                                                          return 2803;
                                                         }
                                                     }
                                                 }
@@ -2362,7 +2362,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx000010101xxxx0xxxxxxxxx101xxx
                                                          usdot.  */
-                                                      return 2858;
+                                                      return 2860;
                                                     }
                                                 }
                                               else
@@ -2460,7 +2460,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx0xxxxxx101xxx
                                                              usvdot.  */
-                                                          return 2872;
+                                                          return 2874;
                                                         }
                                                       else
                                                         {
@@ -2468,7 +2468,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx1xxxxxx101xxx
                                                              usdot.  */
-                                                          return 2859;
+                                                          return 2861;
                                                         }
                                                     }
                                                 }
@@ -2490,7 +2490,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx0xxxxxx111xxx
                                                              suvdot.  */
-                                                          return 2787;
+                                                          return 2789;
                                                         }
                                                       else
                                                         {
@@ -2522,7 +2522,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxx0xx0xxxxxxx00xxx
                                                          fmla.  */
-                                                      return 2902;
+                                                      return 2906;
                                                     }
                                                   else
                                                     {
@@ -2530,7 +2530,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxx1xx0xxxxxxx00xxx
                                                          fmla.  */
-                                                      return 2903;
+                                                      return 2907;
                                                     }
                                                 }
                                               else
@@ -2576,7 +2576,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx000001110xxxxx0xx00xxxxxx01xxx
                                                              sdot.  */
-                                                          return 2884;
+                                                          return 2888;
                                                         }
                                                       else
                                                         {
@@ -2584,7 +2584,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx000001110xxxxx1xx00xxxxxx01xxx
                                                              sdot.  */
-                                                          return 2885;
+                                                          return 2889;
                                                         }
                                                     }
                                                   else
@@ -2593,7 +2593,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxxxxx01xxxxxx01xxx
                                                          svdot.  */
-                                                      return 2892;
+                                                      return 2896;
                                                     }
                                                 }
                                               else
@@ -2662,7 +2662,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxx0xx0xxxxxxx10xxx
                                                          fmls.  */
-                                                      return 2904;
+                                                      return 2908;
                                                     }
                                                   else
                                                     {
@@ -2670,7 +2670,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxx1xx0xxxxxxx10xxx
                                                          fmls.  */
-                                                      return 2905;
+                                                      return 2909;
                                                     }
                                                 }
                                               else
@@ -2681,7 +2681,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011100xxxxxxx1xxxxxxx10xxx
                                                          umlal.  */
-                                                      return 2814;
+                                                      return 2816;
                                                     }
                                                   else
                                                     {
@@ -2691,7 +2691,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000011101xxxx0xx1xxxxxxx10xxx
                                                              umlal.  */
-                                                          return 2815;
+                                                          return 2817;
                                                         }
                                                       else
                                                         {
@@ -2699,7 +2699,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0000011101xxxx1xx1xxxxxxx10xxx
                                                              umlal.  */
-                                                          return 2816;
+                                                          return 2818;
                                                         }
                                                     }
                                                 }
@@ -2725,7 +2725,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx00001110xxxxx0xx00xxxxxx11xxx
                                                          udot.  */
-                                                      return 2893;
+                                                      return 2897;
                                                     }
                                                   else
                                                     {
@@ -2733,7 +2733,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx00001110xxxxx1xx00xxxxxx11xxx
                                                          udot.  */
-                                                      return 2894;
+                                                      return 2898;
                                                     }
                                                 }
                                               else
@@ -2742,7 +2742,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx00001110xxxxxxxx01xxxxxx11xxx
                                                      uvdot.  */
-                                                  return 2901;
+                                                  return 2905;
                                                 }
                                             }
                                           else
@@ -2753,7 +2753,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx000011100xxxxxxx1xxxxxxx11xxx
                                                      umlsl.  */
-                                                  return 2830;
+                                                  return 2832;
                                                 }
                                               else
                                                 {
@@ -2763,7 +2763,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx000011101xxxx0xx1xxxxxxx11xxx
                                                          umlsl.  */
-                                                      return 2831;
+                                                      return 2833;
                                                     }
                                                   else
                                                     {
@@ -2771,7 +2771,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx000011101xxxx1xx1xxxxxxx11xxx
                                                          umlsl.  */
-                                                      return 2832;
+                                                      return 2834;
                                                     }
                                                 }
                                             }
@@ -2868,7 +2868,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010x10xxxx0xx000xxxxx001xx
                                                                          usmlall.  */
-                                                                      return 2868;
+                                                                      return 2870;
                                                                     }
                                                                   else
                                                                     {
@@ -2876,7 +2876,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010x11xxxx0xx000xxxxx001xx
                                                                          usmlall.  */
-                                                                      return 2869;
+                                                                      return 2871;
                                                                     }
                                                                 }
                                                               else
@@ -2887,7 +2887,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx00xx000xxxxx001xx
                                                                          usmlall.  */
-                                                                      return 2870;
+                                                                      return 2872;
                                                                     }
                                                                   else
                                                                     {
@@ -2895,7 +2895,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx10xx000xxxxx001xx
                                                                          usmlall.  */
-                                                                      return 2871;
+                                                                      return 2873;
                                                                     }
                                                                 }
                                                             }
@@ -3092,7 +3092,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx1xxxxx0xx001xxxxx001xx
                                                                  usmlall.  */
-                                                              return 2867;
+                                                              return 2869;
                                                             }
                                                         }
                                                       else
@@ -3198,7 +3198,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010x10xxxx0xx000xxxxx100xx
                                                                          umlall.  */
-                                                                      return 2826;
+                                                                      return 2828;
                                                                     }
                                                                   else
                                                                     {
@@ -3206,7 +3206,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010x11xxxx0xx000xxxxx100xx
                                                                          umlall.  */
-                                                                      return 2827;
+                                                                      return 2829;
                                                                     }
                                                                 }
                                                               else
@@ -3217,7 +3217,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx00xx000xxxxx100xx
                                                                          umlall.  */
-                                                                      return 2828;
+                                                                      return 2830;
                                                                     }
                                                                   else
                                                                     {
@@ -3225,7 +3225,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx10xx000xxxxx100xx
                                                                          umlall.  */
-                                                                      return 2829;
+                                                                      return 2831;
                                                                     }
                                                                 }
                                                             }
@@ -3346,7 +3346,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010110xxxx0xx010xxxxx10xxx
                                                                          umlal.  */
-                                                                      return 2818;
+                                                                      return 2820;
                                                                     }
                                                                   else
                                                                     {
@@ -3354,7 +3354,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010111xxxx0xx010xxxxx10xxx
                                                                          umlal.  */
-                                                                      return 2819;
+                                                                      return 2821;
                                                                     }
                                                                 }
                                                               else
@@ -3365,7 +3365,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001111xxxx00xx010xxxxx10xxx
                                                                          umlal.  */
-                                                                      return 2820;
+                                                                      return 2822;
                                                                     }
                                                                   else
                                                                     {
@@ -3373,7 +3373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001111xxxx10xx010xxxxx10xxx
                                                                          umlal.  */
-                                                                      return 2821;
+                                                                      return 2823;
                                                                     }
                                                                 }
                                                             }
@@ -3431,7 +3431,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1000001xx1xxxxx0xx001xxxxx10xxx
                                                              umlall.  */
-                                                          return 2825;
+                                                          return 2827;
                                                         }
                                                       else
                                                         {
@@ -3443,7 +3443,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x10000010x10xxxx0xx101xxxxx10xxx
                                                                      udot.  */
-                                                                  return 2802;
+                                                                  return 2804;
                                                                 }
                                                               else
                                                                 {
@@ -3451,7 +3451,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x10000010x11xxxx0xx101xxxxx10xxx
                                                                      udot.  */
-                                                                  return 2803;
+                                                                  return 2805;
                                                                 }
                                                             }
                                                           else
@@ -3462,7 +3462,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x10000011x1xxxx00xx101xxxxx10xxx
                                                                      udot.  */
-                                                                  return 2804;
+                                                                  return 2806;
                                                                 }
                                                               else
                                                                 {
@@ -3470,7 +3470,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x10000011x1xxxx10xx101xxxxx10xxx
                                                                      udot.  */
-                                                                  return 2805;
+                                                                  return 2807;
                                                                 }
                                                             }
                                                         }
@@ -3493,7 +3493,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001x11xxxxx0xx011xxxxx10xxx
                                                                  umlal.  */
-                                                              return 2817;
+                                                              return 2819;
                                                             }
                                                         }
                                                       else
@@ -3720,7 +3720,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010010xxxx0xx101xxxxx01xxx
                                                                          usdot.  */
-                                                                      return 2860;
+                                                                      return 2862;
                                                                     }
                                                                   else
                                                                     {
@@ -3728,7 +3728,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010011xxxx0xx101xxxxx01xxx
                                                                          usdot.  */
-                                                                      return 2861;
+                                                                      return 2863;
                                                                     }
                                                                 }
                                                               else
@@ -3739,7 +3739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001101xxxx00xx101xxxxx01xxx
                                                                          usdot.  */
-                                                                      return 2862;
+                                                                      return 2864;
                                                                     }
                                                                   else
                                                                     {
@@ -3747,7 +3747,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001101xxxx10xx101xxxxx01xxx
                                                                          usdot.  */
-                                                                      return 2863;
+                                                                      return 2865;
                                                                     }
                                                                 }
                                                             }
@@ -3851,7 +3851,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000010x10xxxx0xxx00xxxxx11xxx
                                                                  umlsll.  */
-                                                              return 2842;
+                                                              return 2844;
                                                             }
                                                           else
                                                             {
@@ -3859,7 +3859,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000010x11xxxx0xxx00xxxxx11xxx
                                                                  umlsll.  */
-                                                              return 2843;
+                                                              return 2845;
                                                             }
                                                         }
                                                       else
@@ -3870,7 +3870,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011x1xxxx00xxx00xxxxx11xxx
                                                                  umlsll.  */
-                                                              return 2844;
+                                                              return 2846;
                                                             }
                                                           else
                                                             {
@@ -3878,7 +3878,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011x1xxxx10xxx00xxxxx11xxx
                                                                  umlsll.  */
-                                                              return 2845;
+                                                              return 2847;
                                                             }
                                                         }
                                                     }
@@ -3937,7 +3937,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010110xxxx0xx010xxxxx11xxx
                                                                          umlsl.  */
-                                                                      return 2834;
+                                                                      return 2836;
                                                                     }
                                                                   else
                                                                     {
@@ -3945,7 +3945,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010111xxxx0xx010xxxxx11xxx
                                                                          umlsl.  */
-                                                                      return 2835;
+                                                                      return 2837;
                                                                     }
                                                                 }
                                                               else
@@ -3956,7 +3956,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001111xxxx00xx010xxxxx11xxx
                                                                          umlsl.  */
-                                                                      return 2836;
+                                                                      return 2838;
                                                                     }
                                                                   else
                                                                     {
@@ -3964,7 +3964,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001111xxxx10xx010xxxxx11xxx
                                                                          umlsl.  */
-                                                                      return 2837;
+                                                                      return 2839;
                                                                     }
                                                                 }
                                                             }
@@ -4022,7 +4022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1000001xx1xxxxx0xx001xxxxx11xxx
                                                              umlsll.  */
-                                                          return 2841;
+                                                          return 2843;
                                                         }
                                                       else
                                                         {
@@ -4055,7 +4055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010110xxxx0xx101xxxxx11xxx
                                                                          udot.  */
-                                                                      return 2796;
+                                                                      return 2798;
                                                                     }
                                                                   else
                                                                     {
@@ -4063,7 +4063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000010111xxxx0xx101xxxxx11xxx
                                                                          udot.  */
-                                                                      return 2797;
+                                                                      return 2799;
                                                                     }
                                                                 }
                                                               else
@@ -4074,7 +4074,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001111xxxx00xx101xxxxx11xxx
                                                                          udot.  */
-                                                                      return 2798;
+                                                                      return 2800;
                                                                     }
                                                                   else
                                                                     {
@@ -4082,7 +4082,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001111xxxx10xx101xxxxx11xxx
                                                                          udot.  */
-                                                                      return 2799;
+                                                                      return 2801;
                                                                     }
                                                                 }
                                                             }
@@ -4106,7 +4106,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001x11xxxxx0xx011xxxxx11xxx
                                                                  umlsl.  */
-                                                              return 2833;
+                                                              return 2835;
                                                             }
                                                         }
                                                       else
@@ -4205,7 +4205,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx1xxxxx110110xxxx1xxxxx
                                                                  uqrshr.  */
-                                                              return 2852;
+                                                              return 2854;
                                                             }
                                                         }
                                                     }
@@ -4230,7 +4230,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx1xxxxx110001xxxxxxxxx1
                                                                  uclamp.  */
-                                                              return 2790;
+                                                              return 2792;
                                                             }
                                                         }
                                                       else
@@ -4260,7 +4260,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx1xxxxx110101xxxx1xxxxx
                                                                  uqrshr.  */
-                                                              return 2851;
+                                                              return 2853;
                                                             }
                                                         }
                                                     }
@@ -4282,7 +4282,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx1xxxxx110011xxxxxxxxx1
                                                                  uclamp.  */
-                                                              return 2791;
+                                                              return 2793;
                                                             }
                                                         }
                                                       else
@@ -4312,7 +4312,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx1xxxxx110111xxxx1xxxxx
                                                                  uqrshrn.  */
-                                                              return 2853;
+                                                              return 2855;
                                                             }
                                                         }
                                                     }
@@ -4321,17 +4321,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          if (((word >> 5) & 0x1) == 0)
+                                          if (((word >> 10) & 0x1) == 0)
                                             {
-                                              if (((word >> 10) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 11) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 12) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 14) & 0x1) == 0)
+                                                          if (((word >> 0) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 0) & 0x1) == 0)
+                                                              if (((word >> 5) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 8) & 0x1) == 0)
                                                                     {
@@ -4362,6 +4362,39 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     }
                                                                 }
                                                               else
+                                                                {
+                                                                  if (((word >> 8) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 9) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx1xxxxx10100000xx1xxxx0
+                                                                             smin.  */
+                                                                          return 2649;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx1xxxxx10100010xx1xxxx0
+                                                                             srshl.  */
+                                                                          return 2703;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         x1000001xx1xxxxx101000x1xx1xxxx0
+                                                                         fmaxnm.  */
+                                                                      return 2484;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 5) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 8) & 0x1) == 0)
                                                                     {
@@ -4369,7 +4402,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx101000x0xx0xxxx1
                                                                          umax.  */
-                                                                      return 2806;
+                                                                      return 2808;
                                                                     }
                                                                   else
                                                                     {
@@ -4380,10 +4413,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                       return 2488;
                                                                     }
                                                                 }
+                                                              else
+                                                                {
+                                                                  if (((word >> 8) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 9) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx1xxxxx10100000xx1xxxx1
+                                                                             umin.  */
+                                                                          return 2812;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx1xxxxx10100010xx1xxxx1
+                                                                             urshl.  */
+                                                                          return 2856;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         x1000001xx1xxxxx101000x1xx1xxxx1
+                                                                         fminnm.  */
+                                                                      return 2492;
+                                                                    }
+                                                                }
                                                             }
-                                                          else
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 16) & 0x1) == 0)
+                                                              if (((word >> 5) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 17) & 0x1) == 0)
                                                                     {
@@ -4494,23 +4560,111 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   if (((word >> 17) & 0x1) == 0)
                                                                     {
-                                                                      if (((word >> 19) & 0x1) == 0)
+                                                                      if (((word >> 22) & 0x1) == 0)
                                                                         {
-                                                                          if (((word >> 20) & 0x1) == 0)
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001x01xxx00111000xxxx1xxxxx
+                                                                             fcvtn.  */
+                                                                          return 2469;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001x11xxx00111000xxxx1xxxxx
+                                                                             bfcvtn.  */
+                                                                          return 2437;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 20) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx10xx10111000xxxx1xxxxx
+                                                                             ucvtf.  */
+                                                                          return 2794;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx11xx10111000xxxx1xxxxx
+                                                                             ucvtf.  */
+                                                                          return 2795;
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 17) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 0) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 18) & 0x1) == 0)
+                                                                        {
+                                                                          if (((word >> 5) & 0x1) == 0)
                                                                             {
-                                                                              /* 33222222222211111111110000000000
-                                                                                 10987654321098765432109876543210
-                                                                                 x1000001xx100x01111000xxxx0xxxxx
-                                                                                 fcvtzs.  */
-                                                                              return 2470;
+                                                                              if (((word >> 19) & 0x1) == 0)
+                                                                                {
+                                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                                    {
+                                                                                      /* 33222222222211111111110000000000
+                                                                                         10987654321098765432109876543210
+                                                                                         x1000001xx100001111000xxxx0xxxx0
+                                                                                         fcvtzs.  */
+                                                                                      return 2470;
+                                                                                    }
+                                                                                  else
+                                                                                    {
+                                                                                      /* 33222222222211111111110000000000
+                                                                                         10987654321098765432109876543210
+                                                                                         x1000001xx110001111000xxxx0xxxx0
+                                                                                         fcvtzs.  */
+                                                                                      return 2471;
+                                                                                    }
+                                                                                }
+                                                                              else
+                                                                                {
+                                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                                    {
+                                                                                      /* 33222222222211111111110000000000
+                                                                                         10987654321098765432109876543210
+                                                                                         x1000001xx101001111000xxxx0xxxx0
+                                                                                         frintp.  */
+                                                                                      return 2530;
+                                                                                    }
+                                                                                  else
+                                                                                    {
+                                                                                      /* 33222222222211111111110000000000
+                                                                                         10987654321098765432109876543210
+                                                                                         x1000001xx111001111000xxxx0xxxx0
+                                                                                         frintp.  */
+                                                                                      return 2531;
+                                                                                    }
+                                                                                }
                                                                             }
                                                                           else
                                                                             {
-                                                                              /* 33222222222211111111110000000000
-                                                                                 10987654321098765432109876543210
-                                                                                 x1000001xx110x01111000xxxx0xxxxx
-                                                                                 fcvtzs.  */
-                                                                              return 2471;
+                                                                              if (((word >> 20) & 0x1) == 0)
+                                                                                {
+                                                                                  /* 33222222222211111111110000000000
+                                                                                     10987654321098765432109876543210
+                                                                                     x1000001xx10x001111000xxxx1xxxx0
+                                                                                     fcvtzu.  */
+                                                                                  return 2472;
+                                                                                }
+                                                                              else
+                                                                                {
+                                                                                  /* 33222222222211111111110000000000
+                                                                                     10987654321098765432109876543210
+                                                                                     x1000001xx11x001111000xxxx1xxxx0
+                                                                                     fcvtzu.  */
+                                                                                  return 2473;
+                                                                                }
                                                                             }
                                                                         }
                                                                       else
@@ -4519,21 +4673,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                             {
                                                                               /* 33222222222211111111110000000000
                                                                                  10987654321098765432109876543210
-                                                                                 x1000001xx101x01111000xxxx0xxxxx
-                                                                                 frintp.  */
-                                                                              return 2530;
+                                                                                 x1000001xx10x101111000xxxxxxxxx0
+                                                                                 sunpk.  */
+                                                                              return 2787;
                                                                             }
                                                                           else
                                                                             {
                                                                               /* 33222222222211111111110000000000
                                                                                  10987654321098765432109876543210
-                                                                                 x1000001xx111x01111000xxxx0xxxxx
-                                                                                 frintp.  */
-                                                                              return 2531;
+                                                                                 x1000001xx11x101111000xxxxxxxxx0
+                                                                                 sunpk.  */
+                                                                              return 2788;
                                                                             }
                                                                         }
                                                                     }
                                                                   else
+                                                                    {
+                                                                      if (((word >> 20) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx10xx01111000xxxxxxxxx1
+                                                                             uunpk.  */
+                                                                          return 2875;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             x1000001xx11xx01111000xxxxxxxxx1
+                                                                             uunpk.  */
+                                                                          return 2876;
+                                                                        }
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                [...]

[diff truncated at 100000 bytes]

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

only message in thread, other threads:[~2023-03-30 10:16 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-30 10:16 [binutils-gdb] aarch64: Add the SME2 UNPK 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).