]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Add support for sme2.1 luti2 and luti4 instructions.
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Mon, 8 Jul 2024 15:36:40 +0000 (16:36 +0100)
committerRichard Earnshaw <rearnsha@arm.com>
Fri, 12 Jul 2024 14:39:15 +0000 (15:39 +0100)
This patch adds support for following sme2.1 luti2 and luti4 instructions, spec is
available here [1]

1. LUTI2 (two registers) strided.
2. LUTI2 (four registers) strided.
3. LUTI4 (two registers) strided.
4. LUTI4 (four registers) strided.

[1]: https://developer.arm.com/documentation/ddi0602/2024-03/SME-Instructions?lang=en

gas/testsuite/gas/aarch64/sme2p1-2-bad.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2p1-2-bad.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2p1-2-bad.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2p1-2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sme2p1-2.s [new file with mode: 0644]
include/opcode/aarch64.h
opcodes/aarch64-asm.c
opcodes/aarch64-dis-2.c
opcodes/aarch64-dis.c
opcodes/aarch64-tbl.h

diff --git a/gas/testsuite/gas/aarch64/sme2p1-2-bad.d b/gas/testsuite/gas/aarch64/sme2p1-2-bad.d
new file mode 100644 (file)
index 0000000..f165f1f
--- /dev/null
@@ -0,0 +1,4 @@
+#name: Negative test of SME2.1 luti2 and luti4 instructions.
+#as: -march=armv9.4-a+sme2p1
+#source: sme2p1-2-bad.s
+#error_output: sme2p1-2-bad.l
diff --git a/gas/testsuite/gas/aarch64/sme2p1-2-bad.l b/gas/testsuite/gas/aarch64/sme2p1-2-bad.l
new file mode 100644 (file)
index 0000000..8fd4039
--- /dev/null
@@ -0,0 +1,62 @@
+.*: Assembler messages:
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti2 {z0.b,z7.b},zt0,z0\[0\]`
+.*: Error: the register list must have a stride of 1 at operand 1 -- `luti2 {Z0.s,Z8.s},ZT0,Z0\[0\]'
+.*: Error: operand mismatch -- `luti2 {z7.d,z15.d},zt0,z0\[0\]'
+.*: Info:    did you mean this\?
+.*: Info:      luti2 {z7.b, z15.b}, zt0, z0\[0\]
+.*: Info:    other valid variant\(s\):
+.*: Info:      luti2 {z7.h, z15.h}, zt0, z0\[0\]
+.*: Info:      luti2 {z7.s, z15.s}, zt0, z0\[0\]
+.*: Error: operand 3 must be an indexed SVE vector register -- `luti2 {z16.b,z24.b},zt0,z0'
+.*: Error: register element index out of range 0 to 7 at operand 3 -- `luti2 {z23.b,z31.b},zt0,z0\[8\]'
+.*: Error: register element index out of range 0 to 7 at operand 3 -- `luti2 {z0.b,z8.b},zt0,z31\[15\]'
+.*: Error: unexpected register type at operand 2 -- `luti2 {z0.b,z8.b},z0\[7\]'
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti2 {z8.b,z24.b},zt0,z31\[0\]`
+.*: Error: invalid register list at operand 1 -- `luti2 {z24.b,z24.b},zt0,z0\[7\]'
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti2 {z4.h,z16.h},zt0,z20\[4\]`
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti2 {z20.h,z22.h},zt0,z12\[2\]`
+.*: Error: invalid register list at operand 1 -- `luti2 {z0.b,z3.b,z18.b,z1.b},zt0,z0\[0\]'
+.*: Error: the register list must have a stride of 1 at operand 1 -- `luti2 {Z0.s,Z4.s,Z8.s,Z12.s},ZT0,Z0\[0\]'
+.*: Error: operand mismatch -- `luti2 {z3.d,z7.d,z11.d,z15.d},zt0,z0\[0\]'
+.*: Info:    did you mean this\?
+.*: Info:      luti2 {z3.b, z7.b, z11.b, z15.b}, zt0, z0\[0\]
+.*: Info:    other valid variant\(s\):
+.*: Info:      luti2 {z3.h, z7.h, z11.h, z15.h}, zt0, z0\[0\]
+.*: Info:      luti2 {z3.s, z7.s, z11.s, z15.s}, zt0, z0\[0\]
+.*: Error: operand 3 must be an indexed SVE vector register -- `luti2 {z16.h,z20.h,z24.h,z28.h},zt0,z0'
+.*: Error: register element index out of range 0 to 3 at operand 3 -- `luti2 {z19.h,z23.h,z27.h,z31.h},zt0,z0\[5\]'
+.*: Error: start register out of range at operand 1 -- `luti2 {z10.b,z14.b,z18.b,z22.b},zt0,z31\[0\]'
+.*: Error: invalid register list at operand 1 -- `luti2 {z20.b,z24.b,z28.b,z30.b},z0\[3\]'
+.*: Error: invalid register list at operand 1 -- `luti2 {z4.b,z7.b,z11.b,z18.b},zt0,z31\[0\]'
+.*: Error: type mismatch in vector register list at operand 1 -- `luti2 {z6.b,z0.s,z2.d,z28.h},zt0,z0\[7\]'
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti4 {z0.b,z7.b},zt0,z0\[0\]`
+.*: Error: the register list must have a stride of 1 at operand 1 -- `luti2 {Z0.s,Z8.s},ZT0,Z0\[0\]'
+.*: Error: operand mismatch -- `luti4 {z7.d,z15.d},zt0,z0\[0\]'
+.*: Info:    did you mean this\?
+.*: Info:      luti4 {z7.b, z15.b}, zt0, z0\[0\]
+.*: Info:    other valid variant\(s\):
+.*: Info:      luti4 {z7.h, z15.h}, zt0, z0\[0\]
+.*: Info:      luti4 {z7.s, z15.s}, zt0, z0\[0\]
+.*: Error: missing braces at operand 3 -- `luti4 {z16.b,z24.b},zt0,z0'
+.*: Error: register element index out of range 0 to 3 at operand 3 -- `luti4 {z23.b,z31.b},zt0,z0\[8\]'
+.*: Error: register element index out of range 0 to 3 at operand 3 -- `luti4 {z0.b,z8.b},zt0,z31\[15\]'
+.*: Error: unexpected register type at operand 2 -- `luti4 {z0.b,z8.b},z0\[7\]'
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti4 {z8.b,z24.b},zt0,z31\[0\]`
+.*: Error: invalid register list at operand 1 -- `luti4 {z24.b,z24.b},zt0,z0\[7\]'
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti4 {z4.h,z16.h},zt0,z20\[4\]`
+.*: Error: the register list must have a stride of 1 or 8 at operand 1 -- `luti4 {z20.h,z22.h},zt0,z12\[2\]`
+.*: Error: the register list must have a stride of 1 at operand 1 -- `luti4 {z0.s,z4.s,z8.s,z12.s},zt0,z0\[0\]'
+.*: Error: invalid register list at operand 1 -- `luti4 {z0.b,z3.b,z18.b,z1.b},zt0,z0\[0\]'
+.*: Error: the register list must have a stride of 1 at operand 1 -- `luti2 {Z0.s,Z4.s,Z8.s,Z12.s},ZT0,Z0\[0\]'
+.*: Error: operand mismatch -- `luti4 {z3.d,z7.d,z11.d,z15.d},zt0,z0\[0\]'
+.*: Info:    did you mean this\?
+.*: Info:      luti4 {z3.b, z7.b, z11.b, z15.b}, zt0, z0\[0\]
+.*: Info:    other valid variant\(s\):
+.*: Info:      luti4 {z3.h, z7.h, z11.h, z15.h}, zt0, z0\[0\]
+.*: Info:      luti4 {z3.s, z7.s, z11.s, z15.s}, zt0, z0\[0\]
+.*: Error: missing braces at operand 3 -- `luti4 {z16.h,z20.h,z24.h,z28.h},zt0,z0'
+.*: Error: register element index out of range 0 to 1 at operand 3 -- `luti4 {z19.h,z23.h,z27.h,z31.h},zt0,z0\[5\]'
+.*: Error: expected a list of 2 registers at operand 1 -- `luti4 {z10.b,z14.b,z18.b,z22.b},zt0,z31\[0\]'
+.*: Error: invalid register list at operand 1 -- `luti4 {z20.b,z24.b,z28.b,z30.b},z0\[3\]'
+.*: Error: invalid register list at operand 1 -- `luti4 {z4.b,z7.b,z11.b,z18.b},zt0,z31\[0\]'
+.*: Error: type mismatch in vector register list at operand 1 -- `luti4 {z6.b,z0.s,z2.d,z28.h},zt0,z0\[7\]'
diff --git a/gas/testsuite/gas/aarch64/sme2p1-2-bad.s b/gas/testsuite/gas/aarch64/sme2p1-2-bad.s
new file mode 100644 (file)
index 0000000..52af11f
--- /dev/null
@@ -0,0 +1,48 @@
+/* LUTI2 (two registers) strided.  */
+luti2  { z0.b , z7.b }, zt0, z0[0]
+LUTI2  { Z0.s , Z8.s }, ZT0, Z0[0]
+luti2  { z7.d , z15.d }, zt0, z0[0]
+luti2  { z16.b , z24.b }, zt0, z0
+luti2  { z23.b , z31.b }, zt0, z0[8]
+luti2  { z0.b , z8.b }, zt0, z31[15]
+luti2  { z0.b , z8.b }, z0[7]
+luti2  { z8.b , z24.b }, zt0, z31[0]
+luti2  { z24.b , z24.b }, zt0, z0[7]
+luti2  { z4.h , z16.h }, zt0, z20[4]
+luti2  { z20.h , z22.h }, zt0, z12[2]
+
+/* LUTI2 (four registers) strided.  */
+luti2  { z0.b , z3.b , z18.b , z1.b }, zt0, z0[0]
+LUTI2  { Z0.s , Z4.s, Z8.s , Z12.s }, ZT0, Z0[0]
+luti2  { z3.d , z7.d, z11.d, z15.d }, zt0, z0[0]
+luti2  { z16.h , z20.h , z24.h , z28.h }, zt0, z0
+luti2  { z19.h , z23.h , z27.h , z31.h }, zt0, z0[5]
+luti2  { z10.b , z14.b , z18.b , z22.b }, zt0, z31[0]
+luti2  { z20.b , z24.b , z28.b , z30.b }, z0[3]
+luti2  { z4.b , z7.b , z11.b , z18.b }, zt0, z31[0]
+luti2  { z6.b , z0.s , z2.d , z28.h }, zt0, z0[7]
+
+/* LUTI4 (two registers) strided.  */
+luti4  { z0.b , z7.b }, zt0, z0[0]
+LUTI2  { Z0.s , Z8.s }, ZT0, Z0[0]
+luti4  { z7.d , z15.d }, zt0, z0[0]
+luti4  { z16.b , z24.b }, zt0, z0
+luti4  { z23.b , z31.b }, zt0, z0[8]
+luti4  { z0.b , z8.b }, zt0, z31[15]
+luti4  { z0.b , z8.b }, z0[7]
+luti4  { z8.b , z24.b }, zt0, z31[0]
+luti4  { z24.b , z24.b }, zt0, z0[7]
+luti4  { z4.h , z16.h }, zt0, z20[4]
+luti4  { z20.h , z22.h }, zt0, z12[2]
+
+/* LUTI4 (four registers) strided.  */
+luti4  { z0.s , z4.s , z8.s , z12.s }, zt0, z0[0]
+luti4  { z0.b , z3.b , z18.b , z1.b }, zt0, z0[0]
+LUTI2  { Z0.s , Z4.s, Z8.s , Z12.s }, ZT0, Z0[0]
+luti4  { z3.d , z7.d, z11.d, z15.d }, zt0, z0[0]
+luti4  { z16.h , z20.h , z24.h , z28.h }, zt0, z0
+luti4  { z19.h , z23.h , z27.h , z31.h }, zt0, z0[5]
+luti4  { z10.b , z14.b , z18.b , z22.b }, zt0, z31[0]
+luti4  { z20.b , z24.b , z28.b , z30.b }, z0[3]
+luti4  { z4.b , z7.b , z11.b , z18.b }, zt0, z31[0]
+luti4  { z6.b , z0.s , z2.d , z28.h }, zt0, z0[7]
diff --git a/gas/testsuite/gas/aarch64/sme2p1-2.d b/gas/testsuite/gas/aarch64/sme2p1-2.d
new file mode 100644 (file)
index 0000000..8be6db0
--- /dev/null
@@ -0,0 +1,87 @@
+#name: Test of SME2.1 luti2 and luti4 instructions.
+#as: -march=armv9.4-a+sme2p1
+#objdump: -dr
+
+[^:]+:     file format .*
+
+
+[^:]+:
+
+[^:]+:
+.*:    c09c4000        luti2   {z0.b, z8.b}, zt0, z0\[0\]
+.*:    c09c4000        luti2   {z0.b, z8.b}, zt0, z0\[0\]
+.*:    c09c4007        luti2   {z7.b, z15.b}, zt0, z0\[0\]
+.*:    c09c4010        luti2   {z16.b, z24.b}, zt0, z0\[0\]
+.*:    c09c4017        luti2   {z23.b, z31.b}, zt0, z0\[0\]
+.*:    c09c43e0        luti2   {z0.b, z8.b}, zt0, z31\[0\]
+.*:    c09fc000        luti2   {z0.b, z8.b}, zt0, z0\[7\]
+.*:    c09c43f0        luti2   {z16.b, z24.b}, zt0, z31\[0\]
+.*:    c09fc010        luti2   {z16.b, z24.b}, zt0, z0\[7\]
+.*:    c09e4284        luti2   {z4.b, z12.b}, zt0, z20\[4\]
+.*:    c09d4194        luti2   {z20.b, z28.b}, zt0, z12\[2\]
+.*:    c09c5000        luti2   {z0.h, z8.h}, zt0, z0\[0\]
+.*:    c09c5000        luti2   {z0.h, z8.h}, zt0, z0\[0\]
+.*:    c09c5007        luti2   {z7.h, z15.h}, zt0, z0\[0\]
+.*:    c09c5010        luti2   {z16.h, z24.h}, zt0, z0\[0\]
+.*:    c09c5017        luti2   {z23.h, z31.h}, zt0, z0\[0\]
+.*:    c09c53e0        luti2   {z0.h, z8.h}, zt0, z31\[0\]
+.*:    c09fd000        luti2   {z0.h, z8.h}, zt0, z0\[7\]
+.*:    c09c53f0        luti2   {z16.h, z24.h}, zt0, z31\[0\]
+.*:    c09fd010        luti2   {z16.h, z24.h}, zt0, z0\[7\]
+.*:    c09e5284        luti2   {z4.h, z12.h}, zt0, z20\[4\]
+.*:    c09d5194        luti2   {z20.h, z28.h}, zt0, z12\[2\]
+.*:    c09c8000        luti2   {z0.b, z4.b, z8.b, z12.b}, zt0, z0\[0\]
+.*:    c09c8000        luti2   {z0.b, z4.b, z8.b, z12.b}, zt0, z0\[0\]
+.*:    c09c8003        luti2   {z3.b, z7.b, z11.b, z15.b}, zt0, z0\[0\]
+.*:    c09c8010        luti2   {z16.b, z20.b, z24.b, z28.b}, zt0, z0\[0\]
+.*:    c09c8013        luti2   {z19.b, z23.b, z27.b, z31.b}, zt0, z0\[0\]
+.*:    c09c83e0        luti2   {z0.b, z4.b, z8.b, z12.b}, zt0, z31\[0\]
+.*:    c09f8000        luti2   {z0.b, z4.b, z8.b, z12.b}, zt0, z0\[3\]
+.*:    c09c83f0        luti2   {z16.b, z20.b, z24.b, z28.b}, zt0, z31\[0\]
+.*:    c09f8010        luti2   {z16.b, z20.b, z24.b, z28.b}, zt0, z0\[3\]
+.*:    c09d8282        luti2   {z2.b, z6.b, z10.b, z14.b}, zt0, z20\[1\]
+.*:    c09e8151        luti2   {z17.b, z21.b, z25.b, z29.b}, zt0, z10\[2\]
+.*:    c09c9000        luti2   {z0.h, z4.h, z8.h, z12.h}, zt0, z0\[0\]
+.*:    c09c9000        luti2   {z0.h, z4.h, z8.h, z12.h}, zt0, z0\[0\]
+.*:    c09c9003        luti2   {z3.h, z7.h, z11.h, z15.h}, zt0, z0\[0\]
+.*:    c09c9010        luti2   {z16.h, z20.h, z24.h, z28.h}, zt0, z0\[0\]
+.*:    c09c9013        luti2   {z19.h, z23.h, z27.h, z31.h}, zt0, z0\[0\]
+.*:    c09c93e0        luti2   {z0.h, z4.h, z8.h, z12.h}, zt0, z31\[0\]
+.*:    c09f9000        luti2   {z0.h, z4.h, z8.h, z12.h}, zt0, z0\[3\]
+.*:    c09c93f0        luti2   {z16.h, z20.h, z24.h, z28.h}, zt0, z31\[0\]
+.*:    c09f9010        luti2   {z16.h, z20.h, z24.h, z28.h}, zt0, z0\[3\]
+.*:    c09d9282        luti2   {z2.h, z6.h, z10.h, z14.h}, zt0, z20\[1\]
+.*:    c09e9151        luti2   {z17.h, z21.h, z25.h, z29.h}, zt0, z10\[2\]
+.*:    c09a4000        luti4   {z0.b, z8.b}, zt0, z0\[0\]
+.*:    c09a4000        luti4   {z0.b, z8.b}, zt0, z0\[0\]
+.*:    c09a4007        luti4   {z7.b, z15.b}, zt0, z0\[0\]
+.*:    c09a4010        luti4   {z16.b, z24.b}, zt0, z0\[0\]
+.*:    c09a4017        luti4   {z23.b, z31.b}, zt0, z0\[0\]
+.*:    c09a43e0        luti4   {z0.b, z8.b}, zt0, z31\[0\]
+.*:    c09bc000        luti4   {z0.b, z8.b}, zt0, z0\[3\]
+.*:    c09a43f0        luti4   {z16.b, z24.b}, zt0, z31\[0\]
+.*:    c09bc010        luti4   {z16.b, z24.b}, zt0, z0\[3\]
+.*:    c09ac284        luti4   {z4.b, z12.b}, zt0, z20\[1\]
+.*:    c09b4194        luti4   {z20.b, z28.b}, zt0, z12\[2\]
+.*:    c09a5000        luti4   {z0.h, z8.h}, zt0, z0\[0\]
+.*:    c09a5000        luti4   {z0.h, z8.h}, zt0, z0\[0\]
+.*:    c09a5007        luti4   {z7.h, z15.h}, zt0, z0\[0\]
+.*:    c09a5010        luti4   {z16.h, z24.h}, zt0, z0\[0\]
+.*:    c09a5017        luti4   {z23.h, z31.h}, zt0, z0\[0\]
+.*:    c09a53e0        luti4   {z0.h, z8.h}, zt0, z31\[0\]
+.*:    c09bd000        luti4   {z0.h, z8.h}, zt0, z0\[3\]
+.*:    c09a53f0        luti4   {z16.h, z24.h}, zt0, z31\[0\]
+.*:    c09bd010        luti4   {z16.h, z24.h}, zt0, z0\[3\]
+.*:    c09ad284        luti4   {z4.h, z12.h}, zt0, z20\[1\]
+.*:    c09b5194        luti4   {z20.h, z28.h}, zt0, z12\[2\]
+.*:    c09a9000        luti4   {z0.h, z4.h, z8.h, z12.h}, zt0, z0\[0\]
+.*:    c09a9000        luti4   {z0.h, z4.h, z8.h, z12.h}, zt0, z0\[0\]
+.*:    c09a9003        luti4   {z3.h, z7.h, z11.h, z15.h}, zt0, z0\[0\]
+.*:    c09a9010        luti4   {z16.h, z20.h, z24.h, z28.h}, zt0, z0\[0\]
+.*:    c09a9013        luti4   {z19.h, z23.h, z27.h, z31.h}, zt0, z0\[0\]
+.*:    c09a93e0        luti4   {z0.h, z4.h, z8.h, z12.h}, zt0, z31\[0\]
+.*:    c09b9000        luti4   {z0.h, z4.h, z8.h, z12.h}, zt0, z0\[1\]
+.*:    c09a93f0        luti4   {z16.h, z20.h, z24.h, z28.h}, zt0, z31\[0\]
+.*:    c09b9010        luti4   {z16.h, z20.h, z24.h, z28.h}, zt0, z0\[1\]
+.*:    c09b9282        luti4   {z2.h, z6.h, z10.h, z14.h}, zt0, z20\[1\]
+.*:    c09a9151        luti4   {z17.h, z21.h, z25.h, z29.h}, zt0, z10\[0\]
diff --git a/gas/testsuite/gas/aarch64/sme2p1-2.s b/gas/testsuite/gas/aarch64/sme2p1-2.s
new file mode 100644 (file)
index 0000000..a57baad
--- /dev/null
@@ -0,0 +1,87 @@
+/* LUTI2 (two registers) strided.  */
+luti2  { z0.b , z8.b }, zt0, z0[0]
+LUTI2  { Z0.B , Z8.B }, ZT0, Z0[0]
+luti2  { z7.b , z15.b }, zt0, z0[0]
+luti2  { z16.b , z24.b }, zt0, z0[0]
+luti2  { z23.b , z31.b }, zt0, z0[0]
+luti2  { z0.b , z8.b }, zt0, z31[0]
+luti2  { z0.b , z8.b }, zt0, z0[7]
+luti2  { z16.b , z24.b }, zt0, z31[0]
+luti2  { z16.b , z24.b }, zt0, z0[7]
+luti2  { z4.b , z12.b }, zt0, z20[4]
+luti2  { z20.b , z28.b }, zt0, z12[2]
+
+luti2  { z0.h , z8.h }, zt0, z0[0]
+LUTI2  { Z0.H , Z8.H }, ZT0, Z0[0]
+luti2  { z7.h , z15.h }, zt0, z0[0]
+luti2  { z16.h , z24.h }, zt0, z0[0]
+luti2  { z23.h , z31.h }, zt0, z0[0]
+luti2  { z0.h , z8.h }, zt0, z31[0]
+luti2  { z0.h , z8.h }, zt0, z0[7]
+luti2  { z16.h , z24.h }, zt0, z31[0]
+luti2  { z16.h , z24.h }, zt0, z0[7]
+luti2  { z4.h , z12.h }, zt0, z20[4]
+luti2  { z20.h , z28.h }, zt0, z12[2]
+
+/* LUTI2 (four registers) strided.  */
+luti2  { z0.b , z4.b , z8.b , z12.b }, zt0, z0[0]
+LUTI2  { Z0.B , Z4.B, Z8.B , Z12.B }, ZT0, Z0[0]
+luti2  { z3.b , z7.b, z11.b, z15.b }, zt0, z0[0]
+luti2  { z16.b , z20.b , z24.b , z28.b }, zt0, z0[0]
+luti2  { z19.b , z23.b , z27.b , z31.b }, zt0, z0[0]
+luti2  { z0.b , z4.b , z8.b , z12.b }, zt0, z31[0]
+luti2  { z0.b , z4.b , z8.b , z12.b }, zt0, z0[3]
+luti2  { z16.b , z20.b , z24.b , z28.b }, zt0, z31[0]
+luti2  { z16.b , z20.b , z24.b , z28.b }, zt0, z0[3]
+luti2  { z2.b , z6.b, z10.b , z14.b }, zt0, z20[1]
+luti2  { z17.b , z21.b, z25.b , z29.b }, zt0, z10[2]
+
+luti2  { z0.h , z4.h , z8.h , z12.h }, zt0, z0[0]
+LUTI2  { Z0.H , Z4.H, Z8.H , Z12.H }, ZT0, Z0[0]
+luti2  { z3.h , z7.h, z11.h, z15.h }, zt0, z0[0]
+luti2  { z16.h , z20.h , z24.h , z28.h }, zt0, z0[0]
+luti2  { z19.h , z23.h , z27.h , z31.h }, zt0, z0[0]
+luti2  { z0.h , z4.h , z8.h , z12.h }, zt0, z31[0]
+luti2  { z0.h , z4.h , z8.h , z12.h }, zt0, z0[3]
+luti2  { z16.h , z20.h , z24.h , z28.h }, zt0, z31[0]
+luti2  { z16.h , z20.h , z24.h , z28.h }, zt0, z0[3]
+luti2  { z2.h , z6.h, z10.h , z14.h }, zt0, z20[1]
+luti2  { z17.h , z21.h, z25.h , z29.h }, zt0, z10[2]
+
+/* LUTI4 (two registers) strided.  */
+luti4  { z0.b , z8.b }, zt0, z0[0]
+LUTI4  { Z0.B , Z8.B }, ZT0, Z0[0]
+luti4  { z7.b , z15.b }, zt0, z0[0]
+luti4  { z16.b , z24.b }, zt0, z0[0]
+luti4  { z23.b , z31.b }, zt0, z0[0]
+luti4  { z0.b , z8.b }, zt0, z31[0]
+luti4  { z0.b , z8.b }, zt0, z0[3]
+luti4  { z16.b , z24.b }, zt0, z31[0]
+luti4  { z16.b , z24.b }, zt0, z0[3]
+luti4  { z4.b , z12.b }, zt0, z20[1]
+luti4  { z20.b , z28.b }, zt0, z12[2]
+
+luti4  { z0.h , z8.h }, zt0, z0[0]
+LUTI4  { Z0.H , Z8.H }, ZT0, Z0[0]
+luti4  { z7.h , z15.h }, zt0, z0[0]
+luti4  { z16.h , z24.h }, zt0, z0[0]
+luti4  { z23.h , z31.h }, zt0, z0[0]
+luti4  { z0.h , z8.h }, zt0, z31[0]
+luti4  { z0.h , z8.h }, zt0, z0[3]
+luti4  { z16.h , z24.h }, zt0, z31[0]
+luti4  { z16.h , z24.h }, zt0, z0[3]
+luti4  { z4.h , z12.h }, zt0, z20[1]
+luti4  { z20.h , z28.h }, zt0, z12[2]
+
+/* LUTI4 (four registers) strided.  */
+luti4  { z0.h , z4.h , z8.h , z12.h }, zt0, z0[0]
+LUTI4  { Z0.H , Z4.H, Z8.H , Z12.H }, ZT0, Z0[0]
+luti4  { z3.h , z7.h, z11.h, z15.h }, zt0, z0[0]
+luti4  { z16.h , z20.h , z24.h , z28.h }, zt0, z0[0]
+luti4  { z19.h , z23.h , z27.h , z31.h }, zt0, z0[0]
+luti4  { z0.h , z4.h , z8.h , z12.h }, zt0, z31[0]
+luti4  { z0.h , z4.h , z8.h , z12.h }, zt0, z0[1]
+luti4  { z16.h , z20.h , z24.h , z28.h }, zt0, z31[0]
+luti4  { z16.h , z20.h , z24.h , z28.h }, zt0, z0[1]
+luti4  { z2.h , z6.h, z10.h , z14.h }, zt0, z20[1]
+luti4  { z17.h , z21.h, z25.h , z29.h }, zt0, z10[0]
index fc749fa280d2d4fa323078b5857c43655d16a895..64959a8c50e0677f06a79fc3b54761fa31766c29 100644 (file)
@@ -1067,6 +1067,7 @@ enum aarch64_insn_class
   sme_ldr,
   sme_psel,
   sme_shift,
+  sme_size_12_bh,
   sme_size_12_bhs,
   sme_size_12_hs,
   sme_size_12_b,
index 0867c08940c180076691682a1e591d5bc40235be..e621bd86e8742a65451d7ca1fa910f3a3aa279a8 100644 (file)
@@ -2139,6 +2139,10 @@ aarch64_encode_variant_using_iclass (struct aarch64_inst *inst)
       /* The variant is encoded as part of the immediate.  */
       break;
 
+    case sme_size_12_bh:
+      insert_field (FLD_S, &inst->value, aarch64_get_variant (inst), 0);
+      break;
+
     case sme_size_12_bhs:
     case sme_size_12_b:
       insert_field (FLD_SME_size_12, &inst->value,
index 64407afaca4c9ebb6902857600051abb7781c2df..36542af2dc416d8ab13325c0ff02f2320c122767 100644 (file)
@@ -216,7 +216,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000000x000101x00xxxxxxxxxxxxxx
                                                                  luti4.  */
-                                                              return 3409;
+                                                              return 3413;
                                                             }
                                                           else
                                                             {
@@ -247,11 +247,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1000000xx01101xxxxxxxxxxxxxxxxx
-                                                     luti4.  */
-                                                  return 3410;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 15) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1000000xx01101x00xxxxxxxxxxxxxx
+                                                             luti4.  */
+                                                          return 3414;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1000000xx01101x10xxxxxxxxxxxxxx
+                                                             luti4.  */
+                                                          return 3309;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1000000xx01101xx1xxxxxxxxxxxxxx
+                                                         luti4.  */
+                                                      return 3308;
+                                                    }
                                                 }
                                             }
                                         }
@@ -327,64 +349,86 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 20) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 14) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1000000x00x11xxx0xx00xxxxxxxxxx
-                                                             luti2.  */
-                                                          return 2668;
+                                                          if (((word >> 14) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1000000x00011xxx0xx00xxxxxxxxxx
+                                                                 luti2.  */
+                                                              return 2668;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1000000x00011xxx1xx00xxxxxxxxxx
+                                                                 luti2.  */
+                                                              return 2667;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x1000000x00x11xxx1xx00xxxxxxxxxx
-                                                             luti2.  */
-                                                          return 2667;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 16) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 17) & 0x1) == 0)
+                                                              if (((word >> 16) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     x1000000010x1100xxxx00xxxxxxxxxx
-                                                                     movt.  */
-                                                                  return 2689;
+                                                                  if (((word >> 17) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         x100000001001100xxxx00xxxxxxxxxx
+                                                                         movt.  */
+                                                                      return 2689;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         x100000001001110xxxx00xxxxxxxxxx
+                                                                         movt.  */
+                                                                      return 2688;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     x1000000010x1110xxxx00xxxxxxxxxx
+                                                                     x1000000010011x1xxxx00xxxxxxxxxx
                                                                      movt.  */
-                                                                  return 2688;
+                                                                  return 3415;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 x1000000010x11x1xxxx00xxxxxxxxxx
-                                                                 movt.  */
-                                                              return 3411;
+                                                                 x1000000110011xxxxxx00xxxxxxxxxx
+                                                                 luti2.  */
+                                                              return 2666;
                                                             }
                                                         }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 14) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1000000xx0111xxx0xx00xxxxxxxxxx
+                                                             luti2.  */
+                                                          return 3307;
+                                                        }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x1000000110x11xxxxxx00xxxxxxxxxx
+                                                             x1000000xx0111xxx1xx00xxxxxxxxxx
                                                              luti2.  */
-                                                          return 2666;
+                                                          return 3306;
                                                         }
                                                     }
                                                 }
@@ -1157,7 +1201,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx000000101xxxxxxxxxxxxxxxx00xxx
                                                  fmopa.  */
-                                              return 3477;
+                                              return 3481;
                                             }
                                           else
                                             {
@@ -1165,7 +1209,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx000000101xxxxxxxxxxxxxxxx01xxx
                                                  fmopa.  */
-                                              return 3476;
+                                              return 3480;
                                             }
                                         }
                                       else
@@ -1513,7 +1557,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0000010001xxxx1xx0xxxxx1000xxx
                                                                      fmlall.  */
-                                                                  return 3470;
+                                                                  return 3474;
                                                                 }
                                                             }
                                                         }
@@ -1543,7 +1587,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxxxxx1xxxxxx00xxxx
                                                          fdot.  */
-                                                      return 3455;
+                                                      return 3459;
                                                     }
                                                 }
                                               else
@@ -1915,7 +1959,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxxxxx0xxxxxx100xxx
                                                                  fmlall.  */
-                                                              return 3469;
+                                                              return 3473;
                                                             }
                                                         }
                                                     }
@@ -2020,7 +2064,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011001xxxxxxx1xxxxxx10xxxx
                                                              fmlal.  */
-                                                          return 3462;
+                                                          return 3466;
                                                         }
                                                     }
                                                 }
@@ -2193,7 +2237,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011001xxxxxxx1xxxxxx11xxxx
                                                              fmlal.  */
-                                                          return 3461;
+                                                          return 3465;
                                                         }
                                                     }
                                                 }
@@ -2235,7 +2279,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx0000010100xxxxxxxxxxxxxxxx0xxx
                                                  fmlall.  */
-                                              return 3468;
+                                              return 3472;
                                             }
                                           else
                                             {
@@ -2603,7 +2647,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx0xx0xxxxxx111xxx
                                                              fdot.  */
-                                                          return 3448;
+                                                          return 3452;
                                                         }
                                                       else
                                                         {
@@ -2672,7 +2716,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx0xxxxxx001xxx
                                                              fdot.  */
-                                                          return 3449;
+                                                          return 3453;
                                                         }
                                                       else
                                                         {
@@ -2751,7 +2795,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0000011100xxxxxxx0xxxxxxx0xxxx
                                                      fmlal.  */
-                                                  return 3460;
+                                                  return 3464;
                                                 }
                                               else
                                                 {
@@ -2806,7 +2850,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx0000011101xxxx0xx01xxxxx00xxxx
                                                                  fvdotb.  */
-                                                              return 3479;
+                                                              return 3483;
                                                             }
                                                           else
                                                             {
@@ -2824,7 +2868,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011101xxxxxxx0xxxxxx10xxxx
                                                          fdot.  */
-                                                      return 3454;
+                                                      return 3458;
                                                     }
                                                 }
                                             }
@@ -2898,7 +2942,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011101xxxxxxx1xxxxxx10xxxx
                                                          fvdot.  */
-                                                      return 3478;
+                                                      return 3482;
                                                     }
                                                 }
                                             }
@@ -2978,7 +3022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxx0xx01xxxxxx1xxxx
                                                          fvdott.  */
-                                                      return 3480;
+                                                      return 3484;
                                                     }
                                                   else
                                                     {
@@ -3155,7 +3199,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x10000011x1xxxx00xx000xxxx10000x
                                                                                  fmlall.  */
-                                                                              return 3474;
+                                                                              return 3478;
                                                                             }
                                                                           else
                                                                             {
@@ -3163,7 +3207,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x10000011x1xxxx10xx000xxxx10000x
                                                                                  fmlall.  */
-                                                                              return 3475;
+                                                                              return 3479;
                                                                             }
                                                                         }
                                                                     }
@@ -3218,7 +3262,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx10xxxx0xx000xxxxx00x1x
                                                                      fmlall.  */
-                                                                  return 3472;
+                                                                  return 3476;
                                                                 }
                                                               else
                                                                 {
@@ -3226,7 +3270,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx11xxxx0xx000xxxxx00x1x
                                                                      fmlall.  */
-                                                                  return 3473;
+                                                                  return 3477;
                                                                 }
                                                             }
                                                         }
@@ -3280,7 +3324,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx00xx100xxxx100xxx
                                                                          fdot.  */
-                                                                      return 3458;
+                                                                      return 3462;
                                                                     }
                                                                   else
                                                                     {
@@ -3288,7 +3332,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx10xx100xxxx100xxx
                                                                          fdot.  */
-                                                                      return 3459;
+                                                                      return 3463;
                                                                     }
                                                                 }
                                                             }
@@ -3350,7 +3394,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001101xxxx00xx010xxxx1000xx
                                                                                  fmlal.  */
-                                                                              return 3466;
+                                                                              return 3470;
                                                                             }
                                                                           else
                                                                             {
@@ -3358,7 +3402,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001101xxxx10xx010xxxx1000xx
                                                                                  fmlal.  */
-                                                                              return 3467;
+                                                                              return 3471;
                                                                             }
                                                                         }
                                                                     }
@@ -3413,7 +3457,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx10xxxx0xx010xxxxx001xx
                                                                      fmlal.  */
-                                                                  return 3464;
+                                                                  return 3468;
                                                                 }
                                                               else
                                                                 {
@@ -3421,7 +3465,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx11xxxx0xx010xxxxx001xx
                                                                      fmlal.  */
-                                                                  return 3465;
+                                                                  return 3469;
                                                                 }
                                                             }
                                                         }
@@ -3490,7 +3534,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx11xxxx0xx001xxxxx000xx
                                                                      fmlall.  */
-                                                                  return 3471;
+                                                                  return 3475;
                                                                 }
                                                             }
                                                           else
@@ -3573,7 +3617,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx11xxxx0xx011xxxxx00xxx
                                                                  fmlal.  */
-                                                              return 3463;
+                                                              return 3467;
                                                             }
                                                         }
                                                       else
@@ -3594,7 +3638,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x00xx111xxxxx00xxx
                                                                      fadd.  */
-                                                                  return 3412;
+                                                                  return 3416;
                                                                 }
                                                             }
                                                           else
@@ -3613,7 +3657,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x10xx111xxxxx00xxx
                                                                      fadd.  */
-                                                                  return 3413;
+                                                                  return 3417;
                                                                 }
                                                             }
                                                         }
@@ -3739,7 +3783,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx00xx100xxxx110xxx
                                                                          fdot.  */
-                                                                      return 3452;
+                                                                      return 3456;
                                                                     }
                                                                   else
                                                                     {
@@ -3747,7 +3791,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx10xx100xxxx110xxx
                                                                          fdot.  */
-                                                                      return 3453;
+                                                                      return 3457;
                                                                     }
                                                                 }
                                                             }
@@ -4038,7 +4082,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx10xxxx0xx100xxxxx01xxx
                                                                  fdot.  */
-                                                              return 3456;
+                                                              return 3460;
                                                             }
                                                           else
                                                             {
@@ -4046,7 +4090,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx11xxxx0xx100xxxxx01xxx
                                                                  fdot.  */
-                                                              return 3457;
+                                                              return 3461;
                                                             }
                                                         }
                                                     }
@@ -4317,7 +4361,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x00xx111xxxxx01xxx
                                                                      fsub.  */
-                                                                  return 3414;
+                                                                  return 3418;
                                                                 }
                                                             }
                                                           else
@@ -4336,7 +4380,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x10xx111xxxxx01xxx
                                                                      fsub.  */
-                                                                  return 3415;
+                                                                  return 3419;
                                                                 }
                                                             }
                                                         }
@@ -4398,7 +4442,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx10xxxx0xx100xxxxx11xxx
                                                                  fdot.  */
-                                                              return 3450;
+                                                              return 3454;
                                                             }
                                                           else
                                                             {
@@ -4406,7 +4450,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx11xxxx0xx100xxxxx11xxx
                                                                  fdot.  */
-                                                              return 3451;
+                                                              return 3455;
                                                             }
                                                         }
                                                     }
@@ -4941,7 +4985,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx101000xx1x0xxxx0
                                                                          fscale.  */
-                                                                      return 3386;
+                                                                      return 3390;
                                                                     }
                                                                 }
                                                               else
@@ -5089,7 +5133,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x1000001x0100100111000xxxx0xxxxx
                                                                                          fcvt.  */
-                                                                                      return 3383;
+                                                                                      return 3387;
                                                                                     }
                                                                                   else
                                                                                     {
@@ -5097,7 +5141,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x1000001x1100100111000xxxx0xxxxx
                                                                                          bfcvt.  */
-                                                                                      return 3378;
+                                                                                      return 3382;
                                                                                     }
                                                                                 }
                                                                               else
@@ -5106,7 +5150,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                      10987654321098765432109876543210
                                                                                      x1000001xx110100111000xxxx0xxxxx
                                                                                      fcvt.  */
-                                                                                  return 3384;
+                                                                                  return 3388;
                                                                                 }
                                                                             }
                                                                           else
@@ -5157,7 +5201,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              x1000001xx1xx100111000xxxx1xxxxx
                                                                              fcvtn.  */
-                                                                          return 3385;
+                                                                          return 3389;
                                                                         }
                                                                     }
                                                                 }
@@ -5240,7 +5284,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000010010x110111000xxxxxxxxx0
                                                                                          f1cvt.  */
-                                                                                      return 3379;
+                                                                                      return 3383;
                                                                                     }
                                                                                   else
                                                                                     {
@@ -5248,7 +5292,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000011010x110111000xxxxxxxxx0
                                                                                          f2cvt.  */
-                                                                                      return 3380;
+                                                                                      return 3384;
                                                                                     }
                                                                                 }
                                                                               else
@@ -5259,7 +5303,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000010110x110111000xxxxxxxxx0
                                                                                          bf1cvt.  */
-                                                                                      return 3374;
+                                                                                      return 3378;
                                                                                     }
                                                                                   else
                                                                                     {
@@ -5267,7 +5311,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000011110x110111000xxxxxxxxx0
                                                                                          bf2cvt.  */
-                                                                                      return 3375;
+                                                                                      return 3379;
                                                                                     }
                                                                                 }
                                                                             }
@@ -5302,7 +5346,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001001xxx10111000xxxxxxxxx1
                                                                                  f1cvtl.  */
-                                                                              return 3381;
+                                                                              return 3385;
                                                                             }
                                                                           else
                                                                             {
@@ -5310,7 +5354,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001101xxx10111000xxxxxxxxx1
                                                                                  f2cvtl.  */
-                                                                              return 3382;
+                                                                              return 3386;
                                                                             }
                                                                         }
                                                                       else
@@ -5321,7 +5365,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001011xxx10111000xxxxxxxxx1
                                                                                  bf1cvtl.  */
-                                                                              return 3376;
+                                                                              return 3380;
                                                                             }
                                                                           else
                                                                             {
@@ -5329,7 +5373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001111xxx10111000xxxxxxxxx1
                                                                                  bf2cvtl.  */
-                                                                              return 3377;
+                                                                              return 3381;
                                                                             }
                                                                         }
                                                                     }
@@ -5598,7 +5642,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx1x1100xx100xxxx0
                                                                          fscale.  */
-                                                                      return 3388;
+                                                                      return 3392;
                                                                     }
                                                                 }
                                                               else
@@ -5774,7 +5818,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx1x1010xx100xxxx0
                                                                          fscale.  */
-                                                                      return 3387;
+                                                                      return 3391;
                                                                     }
                                                                   else
                                                                     {
@@ -5782,7 +5826,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx1x1110xx100xxxx0
                                                                          fscale.  */
-                                                                      return 3389;
+                                                                      return 3393;
                                                                     }
                                                                 }
                                                             }
@@ -10950,7 +10994,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0x11010000xxxxxxx1xxxxxxxxxxxxx
                                              addpt.  */
-                                          return 3390;
+                                          return 3394;
                                         }
                                       else
                                         {
@@ -10958,7 +11002,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x1x11010000xxxxxxx1xxxxxxxxxxxxx
                                              subpt.  */
-                                          return 3391;
+                                          return 3395;
                                         }
                                     }
                                 }
@@ -11876,7 +11920,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxx1011x11xxxxx0xxxxxxxxxxxxxxx
                                  maddpt.  */
-                              return 3392;
+                              return 3396;
                             }
                           else
                             {
@@ -11884,7 +11928,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxx1011x11xxxxx1xxxxxxxxxxxxxxx
                                  msubpt.  */
-                              return 3393;
+                              return 3397;
                             }
                         }
                     }
@@ -11969,7 +12013,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx000100000xxxxxxxxxxxxx
                                                                      addpt.  */
-                                                                  return 3394;
+                                                                  return 3398;
                                                                 }
                                                               else
                                                                 {
@@ -12076,7 +12120,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx000101000xxxxxxxxxxxxx
                                                                      subpt.  */
-                                                                  return 3396;
+                                                                  return 3400;
                                                                 }
                                                               else
                                                                 {
@@ -12281,7 +12325,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000010xxxxxxxxxx
                                                              addpt.  */
-                                                          return 3395;
+                                                          return 3399;
                                                         }
                                                       else
                                                         {
@@ -12322,7 +12366,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000011xxxxxxxxxx
                                                              subpt.  */
-                                                          return 3397;
+                                                          return 3401;
                                                         }
                                                       else
                                                         {
@@ -13980,7 +14024,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx110100xxxxxxxxxx
                                                              mlapt.  */
-                                                          return 3399;
+                                                          return 3403;
                                                         }
                                                     }
                                                   else
@@ -14010,7 +14054,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx110110xxxxxxxxxx
                                                              madpt.  */
-                                                          return 3398;
+                                                          return 3402;
                                                         }
                                                     }
                                                 }
@@ -14318,7 +14362,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx00x100001xxxxxxxxxxxxx
                                                                  smaxqv.  */
-                                                              return 3308;
+                                                              return 3312;
                                                             }
                                                           else
                                                             {
@@ -14326,7 +14370,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx01x100001xxxxxxxxxxxxx
                                                                  orqv.  */
-                                                              return 3319;
+                                                              return 3323;
                                                             }
                                                         }
                                                       else
@@ -14337,7 +14381,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x0101001xxxxxxxxxxxxx
                                                                  addqv.  */
-                                                              return 3306;
+                                                              return 3310;
                                                             }
                                                           else
                                                             {
@@ -14347,7 +14391,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx001101001xxxxxxxxxxxxx
                                                                      umaxqv.  */
-                                                                  return 3310;
+                                                                  return 3314;
                                                                 }
                                                               else
                                                                 {
@@ -14355,7 +14399,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx011101001xxxxxxxxxxxxx
                                                                      eorqv.  */
-                                                                  return 3312;
+                                                                  return 3316;
                                                                 }
                                                             }
                                                         }
@@ -14392,7 +14436,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx00x110001xxxxxxxxxxxxx
                                                                  sminqv.  */
-                                                              return 3309;
+                                                              return 3313;
                                                             }
                                                           else
                                                             {
@@ -14400,7 +14444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx01x110001xxxxxxxxxxxxx
                                                                  andqv.  */
-                                                              return 3307;
+                                                              return 3311;
                                                             }
                                                         }
                                                     }
@@ -14420,7 +14464,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx0xx111001xxxxxxxxxxxxx
                                                              uminqv.  */
-                                                          return 3311;
+                                                          return 3315;
                                                         }
                                                     }
                                                 }
@@ -15164,7 +15208,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      110001x0x00xxxxx101xxxxxxxxxxxxx
                                                      ld1q.  */
-                                                  return 3335;
+                                                  return 3339;
                                                 }
                                               else
                                                 {
@@ -16178,7 +16222,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x0xx0xxxxx111x00xxxxxxxxxx
                                                          zipq1.  */
-                                                      return 3325;
+                                                      return 3329;
                                                     }
                                                   else
                                                     {
@@ -16188,7 +16232,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx111010xxxxxxxxxx
                                                              uzpq1.  */
-                                                          return 3323;
+                                                          return 3327;
                                                         }
                                                       else
                                                         {
@@ -16196,7 +16240,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx111110xxxxxxxxxx
                                                              tblq.  */
-                                                          return 3320;
+                                                          return 3324;
                                                         }
                                                     }
                                                 }
@@ -16208,7 +16252,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x0xx0xxxxx111x01xxxxxxxxxx
                                                          zipq2.  */
-                                                      return 3326;
+                                                      return 3330;
                                                     }
                                                   else
                                                     {
@@ -16216,7 +16260,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x0xx0xxxxx111x11xxxxxxxxxx
                                                          uzpq2.  */
-                                                      return 3324;
+                                                      return 3328;
                                                     }
                                                 }
                                             }
@@ -16696,7 +16740,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x0x00xxxxx000xxxxxxxxxxxxx
                                                      st3q.  */
-                                                  return 3344;
+                                                  return 3348;
                                                 }
                                               else
                                                 {
@@ -16706,7 +16750,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0010xxxxx000xxxxxxxxxxxxx
                                                          st2q.  */
-                                                      return 3343;
+                                                      return 3347;
                                                     }
                                                   else
                                                     {
@@ -16714,7 +16758,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0110xxxxx000xxxxxxxxxxxxx
                                                          st4q.  */
-                                                      return 3345;
+                                                      return 3349;
                                                     }
                                                 }
                                             }
@@ -17161,7 +17205,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x0xx0x0000101xxxxxxxxxxxxx
                                                                  faddqv.  */
-                                                              return 3313;
+                                                              return 3317;
                                                             }
                                                           else
                                                             {
@@ -17178,7 +17222,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx100101xxxxxxxxxxxxx
                                                              fmaxnmqv.  */
-                                                          return 3314;
+                                                          return 3318;
                                                         }
                                                     }
                                                   else
@@ -17219,7 +17263,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx110101xxxxxxxxxxxxx
                                                              fmaxqv.  */
-                                                          return 3315;
+                                                          return 3319;
                                                         }
                                                     }
                                                 }
@@ -17241,7 +17285,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx101101xxxxxxxxxxxxx
                                                              fminnmqv.  */
-                                                          return 3316;
+                                                          return 3320;
                                                         }
                                                     }
                                                   else
@@ -17260,7 +17304,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx111101xxxxxxxxxxxxx
                                                              fminqv.  */
-                                                          return 3317;
+                                                          return 3321;
                                                         }
                                                     }
                                                 }
@@ -17380,7 +17424,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x0xx01xxxx111xxxxxxxxxxxxx
                                                      ld2q.  */
-                                                  return 3336;
+                                                  return 3340;
                                                 }
                                             }
                                         }
@@ -17516,7 +17560,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  101001x0xx1xxxxx100xxxxxxxxxxxxx
                                                  ld2q.  */
-                                              return 3339;
+                                              return 3343;
                                             }
                                         }
                                       else
@@ -17661,7 +17705,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x00x1xxxxx000xxxxxxxxxxxxx
                                                      st2q.  */
-                                                  return 3346;
+                                                  return 3350;
                                                 }
                                             }
                                           else
@@ -17704,7 +17748,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0101xxxxx000xxxxxxxxxxxxx
                                                          st3q.  */
-                                                      return 3347;
+                                                      return 3351;
                                                     }
                                                 }
                                               else
@@ -17745,7 +17789,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0111xxxxx000xxxxxxxxxxxxx
                                                          st4q.  */
-                                                      return 3348;
+                                                      return 3352;
                                                     }
                                                 }
                                             }
@@ -17774,7 +17818,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x0001xxxxx0100x1xxxxxxxxxx
                                                                  fdot.  */
-                                                              return 3435;
+                                                              return 3439;
                                                             }
                                                         }
                                                       else
@@ -17783,7 +17827,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0001xxxxx0101xxxxxxxxxxxx
                                                              fmlalb.  */
-                                                          return 3437;
+                                                          return 3441;
                                                         }
                                                     }
                                                   else
@@ -17824,7 +17868,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0101xxxxx0101xxxxxxxxxxxx
                                                              fmlalt.  */
-                                                          return 3447;
+                                                          return 3451;
                                                         }
                                                     }
                                                   else
@@ -17857,7 +17901,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0011xxxxx010xx1xxxxxxxxxx
                                                              fdot.  */
-                                                          return 3433;
+                                                          return 3437;
                                                         }
                                                     }
                                                   else
@@ -17928,7 +17972,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x11001x0001xxxxx100010xxxxxxxxxx
                                                                  fmlallbb.  */
-                                                              return 3438;
+                                                              return 3442;
                                                             }
                                                         }
                                                       else
@@ -17937,7 +17981,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x11001x0001xxxxx1000x1xxxxxxxxxx
                                                              fdot.  */
-                                                          return 3434;
+                                                          return 3438;
                                                         }
                                                     }
                                                   else
@@ -17946,7 +17990,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0001xxxxx1100xxxxxxxxxxxx
                                                          fmlallbb.  */
-                                                      return 3439;
+                                                      return 3443;
                                                     }
                                                 }
                                               else
@@ -17955,7 +17999,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x11001x0001xxxxx1x01xxxxxxxxxxxx
                                                      fmlallbt.  */
-                                                  return 3440;
+                                                  return 3444;
                                                 }
                                             }
                                           else
@@ -17982,7 +18026,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x0101xxxxx100010xxxxxxxxxx
                                                                      fmlalb.  */
-                                                                  return 3436;
+                                                                  return 3440;
                                                                 }
                                                             }
                                                           else
@@ -18000,7 +18044,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0101xxxxx1100xxxxxxxxxxxx
                                                              fmlalltb.  */
-                                                          return 3443;
+                                                          return 3447;
                                                         }
                                                     }
                                                   else
@@ -18009,7 +18053,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x0101xxxxx1x01xxxxxxxxxxxx
                                                          fmlalt.  */
-                                                      return 3446;
+                                                      return 3450;
                                                     }
                                                 }
                                               else
@@ -18042,7 +18086,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0011xxxxx100xx1xxxxxxxxxx
                                                          fdot.  */
-                                                      return 3432;
+                                                      return 3436;
                                                     }
                                                 }
                                               else
@@ -18051,7 +18095,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x11001x0011xxxxx110xxxxxxxxxxxxx
                                                      fmlallbt.  */
-                                                  return 3441;
+                                                  return 3445;
                                                 }
                                             }
                                           else
@@ -18083,7 +18127,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x0111xxxxx110xxxxxxxxxxxxx
                                                          fmlalltt.  */
-                                                      return 3445;
+                                                      return 3449;
                                                     }
                                                 }
                                               else
@@ -18382,7 +18426,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  111001x0xx1xxxxx001xxxxxxxxxxxxx
                                                  st1q.  */
-                                              return 3342;
+                                              return 3346;
                                             }
                                         }
                                       else
@@ -18397,7 +18441,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0001xxxxx1010xxxxxxxxxxxx
                                                          fmlalltb.  */
-                                                      return 3442;
+                                                      return 3446;
                                                     }
                                                   else
                                                     {
@@ -18405,7 +18449,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0001xxxxx1011xxxxxxxxxxxx
                                                          fmlalltt.  */
-                                                      return 3444;
+                                                      return 3448;
                                                     }
                                                 }
                                               else
@@ -19123,7 +19167,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                      10987654321098765432109876543210
                                                                                      000001x1001010x0001110xxxxxxxxxx
                                                                                      pmov.  */
-                                                                                  return 3327;
+                                                                                  return 3331;
                                                                                 }
                                                                               else
                                                                                 {
@@ -19131,7 +19175,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                      10987654321098765432109876543210
                                                                                      000001x1001011x0001110xxxxxxxxxx
                                                                                      pmov.  */
-                                                                                  return 3328;
+                                                                                  return 3332;
                                                                                 }
                                                                             }
                                                                           else
@@ -19140,7 +19184,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  000001x101101xx0001110xxxxxxxxxx
                                                                                  pmov.  */
-                                                                              return 3329;
+                                                                              return 3333;
                                                                             }
                                                                         }
                                                                       else
@@ -19149,7 +19193,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              000001x11x101xx0001110xxxxxxxxxx
                                                                              pmov.  */
-                                                                          return 3330;
+                                                                          return 3334;
                                                                         }
                                                                     }
                                                                   else
@@ -19195,7 +19239,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  000001x1001x10x1001110xxxxxxxxxx
                                                                                  pmov.  */
-                                                                              return 3331;
+                                                                              return 3335;
                                                                             }
                                                                           else
                                                                             {
@@ -19203,7 +19247,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  000001x1001x11x1001110xxxxxxxxxx
                                                                                  pmov.  */
-                                                                              return 3332;
+                                                                              return 3336;
                                                                             }
                                                                         }
                                                                       else
@@ -19212,7 +19256,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              000001x1011x1xx1001110xxxxxxxxxx
                                                                              pmov.  */
-                                                                          return 3333;
+                                                                          return 3337;
                                                                         }
                                                                     }
                                                                   else
@@ -19221,7 +19265,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          000001x11x1x1xx1001110xxxxxxxxxx
                                                                          pmov.  */
-                                                                      return 3334;
+                                                                      return 3338;
                                                                     }
                                                                 }
                                                             }
@@ -19240,7 +19284,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x1x01xxxxx001001xxxxxxxxxx
                                                                  dupq.  */
-                                                              return 3318;
+                                                              return 3322;
                                                             }
                                                           else
                                                             {
@@ -19248,7 +19292,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x1x11xxxxx001001xxxxxxxxxx
                                                                  extq.  */
-                                                              return 3322;
+                                                              return 3326;
                                                             }
                                                         }
                                                       else
@@ -19257,7 +19301,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x1xx1xxxxx001101xxxxxxxxxx
                                                              tbxq.  */
-                                                          return 3321;
+                                                          return 3325;
                                                         }
                                                     }
                                                   else
@@ -20860,7 +20904,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x1xx1xxxxx101100xxxxxxxxxx
                                                              luti2.  */
-                                                          return 3404;
+                                                          return 3408;
                                                         }
                                                     }
                                                   else
@@ -20869,7 +20913,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x1xx1xxxxx101x10xxxxxxxxxx
                                                          luti2.  */
-                                                      return 3405;
+                                                      return 3409;
                                                     }
                                                 }
                                               else
@@ -20882,7 +20926,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x1xx1xxxxx101001xxxxxxxxxx
                                                              luti4.  */
-                                                          return 3406;
+                                                          return 3410;
                                                         }
                                                       else
                                                         {
@@ -20890,7 +20934,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x1xx1xxxxx101101xxxxxxxxxx
                                                              luti4.  */
-                                                          return 3407;
+                                                          return 3411;
                                                         }
                                                     }
                                                   else
@@ -20899,7 +20943,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x1xx1xxxxx101x11xxxxxxxxxx
                                                          luti4.  */
-                                                      return 3408;
+                                                      return 3412;
                                                     }
                                                 }
                                             }
@@ -21850,7 +21894,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x00xxxxxxxxxx
                                                                              f1cvt.  */
-                                                                          return 3366;
+                                                                          return 3370;
                                                                         }
                                                                       else
                                                                         {
@@ -21858,7 +21902,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x10xxxxxxxxxx
                                                                              bf1cvt.  */
-                                                                          return 3362;
+                                                                          return 3366;
                                                                         }
                                                                     }
                                                                   else
@@ -21869,7 +21913,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x01xxxxxxxxxx
                                                                              f2cvt.  */
-                                                                          return 3367;
+                                                                          return 3371;
                                                                         }
                                                                       else
                                                                         {
@@ -21877,7 +21921,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x11xxxxxxxxxx
                                                                              bf2cvt.  */
-                                                                          return 3363;
+                                                                          return 3367;
                                                                         }
                                                                     }
                                                                 }
@@ -21922,7 +21966,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x00xxxxxxxxxx
                                                                          fcvtn.  */
-                                                                      return 3371;
+                                                                      return 3375;
                                                                     }
                                                                   else
                                                                     {
@@ -21930,7 +21974,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x10xxxxxxxxxx
                                                                          bfcvtn.  */
-                                                                      return 3370;
+                                                                      return 3374;
                                                                     }
                                                                 }
                                                               else
@@ -21941,7 +21985,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x01xxxxxxxxxx
                                                                          fcvtnb.  */
-                                                                      return 3372;
+                                                                      return 3376;
                                                                     }
                                                                   else
                                                                     {
@@ -21949,7 +21993,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x11xxxxxxxxxx
                                                                          fcvtnt.  */
-                                                                      return 3373;
+                                                                      return 3377;
                                                                     }
                                                                 }
                                                             }
@@ -22010,7 +22054,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x00xxxxxxxxxx
                                                                          f1cvtlt.  */
-                                                                      return 3368;
+                                                                      return 3372;
                                                                     }
                                                                   else
                                                                     {
@@ -22018,7 +22062,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x10xxxxxxxxxx
                                                                          bf1cvtlt.  */
-                                                                      return 3364;
+                                                                      return 3368;
                                                                     }
                                                                 }
                                                               else
@@ -22029,7 +22073,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x01xxxxxxxxxx
                                                                          f2cvtlt.  */
-                                                                      return 3369;
+                                                                      return 3373;
                                                                     }
                                                                   else
                                                                     {
@@ -22037,7 +22081,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x11xxxxxxxxxx
                                                                          bf2cvtlt.  */
-                                                                      return 3365;
+                                                                      return 3369;
                                                                     }
                                                                 }
                                                             }
@@ -23363,7 +23407,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x10x01xxxx111xxxxxxxxxxxxx
                                                          ld3q.  */
-                                                      return 3337;
+                                                      return 3341;
                                                     }
                                                   else
                                                     {
@@ -23371,7 +23415,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x11x01xxxx111xxxxxxxxxxxxx
                                                          ld4q.  */
-                                                      return 3338;
+                                                      return 3342;
                                                     }
                                                 }
                                             }
@@ -24544,7 +24588,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x10x1xxxxx100xxxxxxxxxxxxx
                                                      ld3q.  */
-                                                  return 3340;
+                                                  return 3344;
                                                 }
                                               else
                                                 {
@@ -24552,7 +24596,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x11x1xxxxx100xxxxxxxxxxxxx
                                                      ld4q.  */
-                                                  return 3341;
+                                                  return 3345;
                                                 }
                                             }
                                           else
@@ -26617,7 +26661,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110100xxxxxxxx100xxxxxxxxxx
                                                          luti2.  */
-                                                      return 3400;
+                                                      return 3404;
                                                     }
                                                 }
                                             }
@@ -26631,7 +26675,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110010xxxxxxxx000xxxxxxxxxx
                                                          luti4.  */
-                                                      return 3402;
+                                                      return 3406;
                                                     }
                                                   else
                                                     {
@@ -26639,7 +26683,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110010xxxxxxxx100xxxxxxxxxx
                                                          luti4.  */
-                                                      return 3403;
+                                                      return 3407;
                                                     }
                                                 }
                                               else
@@ -26648,7 +26692,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      0x001110110xxxxxxxxx00xxxxxxxxxx
                                                      luti2.  */
-                                                  return 3401;
+                                                  return 3405;
                                                 }
                                             }
                                         }
@@ -26764,7 +26808,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110x00xxxxxx10001xxxxxxxxxx
                                                                  fmlallbb.  */
-                                                              return 3424;
+                                                              return 3428;
                                                             }
                                                           else
                                                             {
@@ -26772,7 +26816,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110x00xxxxxx10001xxxxxxxxxx
                                                                  fmlalltb.  */
-                                                              return 3426;
+                                                              return 3430;
                                                             }
                                                         }
                                                       else
@@ -26783,7 +26827,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110x10xxxxxx10001xxxxxxxxxx
                                                                  fmlallbt.  */
-                                                              return 3425;
+                                                              return 3429;
                                                             }
                                                           else
                                                             {
@@ -26791,7 +26835,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110x10xxxxxx10001xxxxxxxxxx
                                                                  fmlalltt.  */
-                                                              return 3427;
+                                                              return 3431;
                                                             }
                                                         }
                                                     }
@@ -26879,7 +26923,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110x00xxxxxx11101xxxxxxxxxx
                                                                  fcvtn.  */
-                                                              return 3357;
+                                                              return 3361;
                                                             }
                                                           else
                                                             {
@@ -26887,7 +26931,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110x00xxxxxx11101xxxxxxxxxx
                                                                  fcvtn2.  */
-                                                              return 3358;
+                                                              return 3362;
                                                             }
                                                         }
                                                       else
@@ -26896,7 +26940,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110x10xxxxxx11101xxxxxxxxxx
                                                              fcvtn.  */
-                                                          return 3359;
+                                                          return 3363;
                                                         }
                                                     }
                                                 }
@@ -27039,7 +27083,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110x00xxxxxx11111xxxxxxxxxx
                                                              fdot.  */
-                                                          return 3416;
+                                                          return 3420;
                                                         }
                                                       else
                                                         {
@@ -27049,7 +27093,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110010xxxxxx11111xxxxxxxxxx
                                                                  fdot.  */
-                                                              return 3418;
+                                                              return 3422;
                                                             }
                                                           else
                                                             {
@@ -27059,7 +27103,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00001110110xxxxxx11111xxxxxxxxxx
                                                                      fmlalb.  */
-                                                                  return 3420;
+                                                                  return 3424;
                                                                 }
                                                               else
                                                                 {
@@ -27067,7 +27111,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01001110110xxxxxx11111xxxxxxxxxx
                                                                      fmlalt.  */
-                                                                  return 3421;
+                                                                  return 3425;
                                                                 }
                                                             }
                                                         }
@@ -27341,7 +27385,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110110xxxxx0x1111xxxxxxxxxx
                                                              fscale.  */
-                                                          return 3360;
+                                                          return 3364;
                                                         }
                                                     }
                                                 }
@@ -28733,7 +28777,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110001xxxx1011110xxxxxxxxxx
                                                                          f1cvtl.  */
-                                                                      return 3353;
+                                                                      return 3357;
                                                                     }
                                                                   else
                                                                     {
@@ -28741,7 +28785,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110001xxxx1011110xxxxxxxxxx
                                                                          f1cvtl2.  */
-                                                                      return 3354;
+                                                                      return 3358;
                                                                     }
                                                                 }
                                                               else
@@ -28752,7 +28796,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110101xxxx1011110xxxxxxxxxx
                                                                          bf1cvtl.  */
-                                                                      return 3349;
+                                                                      return 3353;
                                                                     }
                                                                   else
                                                                     {
@@ -28760,7 +28804,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110101xxxx1011110xxxxxxxxxx
                                                                          bf1cvtl2.  */
-                                                                      return 3350;
+                                                                      return 3354;
                                                                     }
                                                                 }
                                                             }
@@ -28774,7 +28818,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110011xxxx1011110xxxxxxxxxx
                                                                          f2cvtl.  */
-                                                                      return 3355;
+                                                                      return 3359;
                                                                     }
                                                                   else
                                                                     {
@@ -28782,7 +28826,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110011xxxx1011110xxxxxxxxxx
                                                                          f2cvtl2.  */
-                                                                      return 3356;
+                                                                      return 3360;
                                                                     }
                                                                 }
                                                               else
@@ -28793,7 +28837,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110111xxxx1011110xxxxxxxxxx
                                                                          bf2cvtl.  */
-                                                                      return 3351;
+                                                                      return 3355;
                                                                     }
                                                                   else
                                                                     {
@@ -28801,7 +28845,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110111xxxx1011110xxxxxxxxxx
                                                                          bf2cvtl2.  */
-                                                                      return 3352;
+                                                                      return 3356;
                                                                     }
                                                                 }
                                                             }
@@ -30800,7 +30844,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011101x1xxxxx111111xxxxxxxxxx
                                                              fscale.  */
-                                                          return 3361;
+                                                          return 3365;
                                                         }
                                                     }
                                                 }
@@ -32516,7 +32560,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx00111100xxxxxx0000x0xxxxxxxxxx
                                                          fdot.  */
-                                                      return 3417;
+                                                      return 3421;
                                                     }
                                                   else
                                                     {
@@ -32546,7 +32590,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx00111101xxxxxx0000x0xxxxxxxxxx
                                                          fdot.  */
-                                                      return 3419;
+                                                      return 3423;
                                                     }
                                                   else
                                                     {
@@ -32556,7 +32600,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x000111111xxxxxx0000x0xxxxxxxxxx
                                                              fmlalb.  */
-                                                          return 3422;
+                                                          return 3426;
                                                         }
                                                       else
                                                         {
@@ -32564,7 +32608,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x100111111xxxxxx0000x0xxxxxxxxxx
                                                              fmlalt.  */
-                                                          return 3423;
+                                                          return 3427;
                                                         }
                                                     }
                                                 }
@@ -33106,7 +33150,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x010111100xxxxxx1000x0xxxxxxxxxx
                                                              fmlallbb.  */
-                                                          return 3428;
+                                                          return 3432;
                                                         }
                                                       else
                                                         {
@@ -33114,7 +33158,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x110111100xxxxxx1000x0xxxxxxxxxx
                                                              fmlalltb.  */
-                                                          return 3430;
+                                                          return 3434;
                                                         }
                                                     }
                                                   else
@@ -33145,7 +33189,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0101111x1xxxxxx1000x0xxxxxxxxxx
                                                          fmlallbt.  */
-                                                      return 3429;
+                                                      return 3433;
                                                     }
                                                   else
                                                     {
@@ -33153,7 +33197,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1101111x1xxxxxx1000x0xxxxxxxxxx
                                                          fmlalltt.  */
-                                                      return 3431;
+                                                      return 3435;
                                                     }
                                                 }
                                             }
index d3f38c3cda57d734e80499724f88237632fcb804..81ebbe0bd5534998b38301b7631184a8f755a7e3 100644 (file)
@@ -3397,6 +3397,12 @@ aarch64_decode_variant_using_iclass (aarch64_inst *inst)
       i = extract_field (FLD_SVE_tszh, inst->value, 0);
       goto sve_shift;
 
+    case sme_size_12_bh:
+      variant = extract_field (FLD_S, inst->value, 0);
+      if (variant > 1)
+       return false;
+      break;
+
     case sme_size_12_bhs:
       variant = extract_field (FLD_SME_size_12, inst->value, 0);
       if (variant >= 3)
index ad0d8ae7be6f781ab776c3024657a67a2f67ca1c..eccfac53ad1fb99e2007213b8a0476d44e74a543 100644 (file)
 {                                                       \
   QLF3(S_B,NIL,NIL),                                    \
 }
+#define OP_SVE_VUU_BH                                  \
+{                                                       \
+  QLF3(S_B,NIL,NIL),                                    \
+  QLF3(S_H,NIL,NIL),                                    \
+}
 #define OP_SVE_VUU_BHS                                  \
 {                                                       \
   QLF3(S_B,NIL,NIL),                                    \
@@ -6641,6 +6646,11 @@ const struct aarch64_opcode aarch64_opcode_table[] =
   SME2p1_INSN ("movaz", 0xc0860200, 0xffff1f01, sme2_movaz, 0, OP2 (SME_Zdnx2, SME_ZA_array_vrss_1), OP_SVE_SS, 0, 0),
   SME2p1_INSN ("movaz", 0xc0c60200, 0xffff1f01, sme2_movaz, 0, OP2 (SME_Zdnx2, SME_ZA_array_vrsd_1), OP_SVE_DD, 0, 0),
 
+  SME2p1_INSN ("luti2", 0xc09c4000, 0xfffc4c08, sme_size_12_bh, 0, OP3 (SME_Ztx2_STRIDED, SME_ZT0, SME_Zn_INDEX3_15), OP_SVE_VUU_BH, 0, 0),
+  SME2p1_INSN ("luti2", 0xc09c8000, 0xfffccc0c, sme_size_12_bh, 0, OP3 (SME_Ztx4_STRIDED, SME_ZT0, SME_Zn_INDEX2_16), OP_SVE_VUU_BH, 0, 0),
+  SME2p1_INSN ("luti4", 0xc09a4000, 0xfffe4c08, sme_size_12_bh, 0, OP3 (SME_Ztx2_STRIDED, SME_ZT0, SME_Zn_INDEX2_15), OP_SVE_VUU_BH, 0, 0),
+  SME2p1_INSN ("luti4", 0xc09a9000, 0xfffefc0c, sme_misc, 0, OP3 (SME_Ztx4_STRIDED, SME_ZT0, SME_Zn_INDEX1_16), OP_SVE_HUU, 0, 0),
+
 /* SVE2p1 Instructions.  */
   SVE2p1_INSN("addqv",0x04052000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_BHSD_BHSD, F_OPD_SIZE, 0),
   SVE2p1_INSN("andqv",0x041e2000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_BHSD_BHSD, F_OPD_SIZE, 0),