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
--- /dev/null
+#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
--- /dev/null
+.*: 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\]'
--- /dev/null
+/* 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]
--- /dev/null
+#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\]
--- /dev/null
+/* 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]
sme_ldr,
sme_psel,
sme_shift,
+ sme_size_12_bh,
sme_size_12_bhs,
sme_size_12_hs,
sme_size_12_b,
/* 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,
10987654321098765432109876543210
x1000000x000101x00xxxxxxxxxxxxxx
luti4. */
- return 3409;
+ return 3413;
}
else
{
}
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;
+ }
}
}
}
}
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;
}
}
}
10987654321098765432109876543210
xx000000101xxxxxxxxxxxxxxxx00xxx
fmopa. */
- return 3477;
+ return 3481;
}
else
{
10987654321098765432109876543210
xx000000101xxxxxxxxxxxxxxxx01xxx
fmopa. */
- return 3476;
+ return 3480;
}
}
else
10987654321098765432109876543210
xx0000010001xxxx1xx0xxxxx1000xxx
fmlall. */
- return 3470;
+ return 3474;
}
}
}
10987654321098765432109876543210
xx0000010001xxxxxxx1xxxxxx00xxxx
fdot. */
- return 3455;
+ return 3459;
}
}
else
10987654321098765432109876543210
x10000011001xxxxxxx0xxxxxx100xxx
fmlall. */
- return 3469;
+ return 3473;
}
}
}
10987654321098765432109876543210
x10000011001xxxxxxx1xxxxxx10xxxx
fmlal. */
- return 3462;
+ return 3466;
}
}
}
10987654321098765432109876543210
x10000011001xxxxxxx1xxxxxx11xxxx
fmlal. */
- return 3461;
+ return 3465;
}
}
}
10987654321098765432109876543210
xx0000010100xxxxxxxxxxxxxxxx0xxx
fmlall. */
- return 3468;
+ return 3472;
}
else
{
10987654321098765432109876543210
xxx000010101xxxx0xx0xxxxxx111xxx
fdot. */
- return 3448;
+ return 3452;
}
else
{
10987654321098765432109876543210
xxx000010101xxxx1xx0xxxxxx001xxx
fdot. */
- return 3449;
+ return 3453;
}
else
{
10987654321098765432109876543210
xx0000011100xxxxxxx0xxxxxxx0xxxx
fmlal. */
- return 3460;
+ return 3464;
}
else
{
10987654321098765432109876543210
xx0000011101xxxx0xx01xxxxx00xxxx
fvdotb. */
- return 3479;
+ return 3483;
}
else
{
10987654321098765432109876543210
xx0000011101xxxxxxx0xxxxxx10xxxx
fdot. */
- return 3454;
+ return 3458;
}
}
}
10987654321098765432109876543210
xx0000011101xxxxxxx1xxxxxx10xxxx
fvdot. */
- return 3478;
+ return 3482;
}
}
}
10987654321098765432109876543210
xx000001110xxxxx0xx01xxxxxx1xxxx
fvdott. */
- return 3480;
+ return 3484;
}
else
{
10987654321098765432109876543210
x10000011x1xxxx00xx000xxxx10000x
fmlall. */
- return 3474;
+ return 3478;
}
else
{
10987654321098765432109876543210
x10000011x1xxxx10xx000xxxx10000x
fmlall. */
- return 3475;
+ return 3479;
}
}
}
10987654321098765432109876543210
x1000001xx10xxxx0xx000xxxxx00x1x
fmlall. */
- return 3472;
+ return 3476;
}
else
{
10987654321098765432109876543210
x1000001xx11xxxx0xx000xxxxx00x1x
fmlall. */
- return 3473;
+ return 3477;
}
}
}
10987654321098765432109876543210
x10000011x1xxxx00xx100xxxx100xxx
fdot. */
- return 3458;
+ return 3462;
}
else
{
10987654321098765432109876543210
x10000011x1xxxx10xx100xxxx100xxx
fdot. */
- return 3459;
+ return 3463;
}
}
}
10987654321098765432109876543210
x1000001101xxxx00xx010xxxx1000xx
fmlal. */
- return 3466;
+ return 3470;
}
else
{
10987654321098765432109876543210
x1000001101xxxx10xx010xxxx1000xx
fmlal. */
- return 3467;
+ return 3471;
}
}
}
10987654321098765432109876543210
x1000001xx10xxxx0xx010xxxxx001xx
fmlal. */
- return 3464;
+ return 3468;
}
else
{
10987654321098765432109876543210
x1000001xx11xxxx0xx010xxxxx001xx
fmlal. */
- return 3465;
+ return 3469;
}
}
}
10987654321098765432109876543210
x1000001xx11xxxx0xx001xxxxx000xx
fmlall. */
- return 3471;
+ return 3475;
}
}
else
10987654321098765432109876543210
x1000001xx11xxxx0xx011xxxxx00xxx
fmlal. */
- return 3463;
+ return 3467;
}
}
else
10987654321098765432109876543210
x1000001xx1xx1x00xx111xxxxx00xxx
fadd. */
- return 3412;
+ return 3416;
}
}
else
10987654321098765432109876543210
x1000001xx1xx1x10xx111xxxxx00xxx
fadd. */
- return 3413;
+ return 3417;
}
}
}
10987654321098765432109876543210
x10000011x1xxxx00xx100xxxx110xxx
fdot. */
- return 3452;
+ return 3456;
}
else
{
10987654321098765432109876543210
x10000011x1xxxx10xx100xxxx110xxx
fdot. */
- return 3453;
+ return 3457;
}
}
}
10987654321098765432109876543210
x1000001xx10xxxx0xx100xxxxx01xxx
fdot. */
- return 3456;
+ return 3460;
}
else
{
10987654321098765432109876543210
x1000001xx11xxxx0xx100xxxxx01xxx
fdot. */
- return 3457;
+ return 3461;
}
}
}
10987654321098765432109876543210
x1000001xx1xx1x00xx111xxxxx01xxx
fsub. */
- return 3414;
+ return 3418;
}
}
else
10987654321098765432109876543210
x1000001xx1xx1x10xx111xxxxx01xxx
fsub. */
- return 3415;
+ return 3419;
}
}
}
10987654321098765432109876543210
x1000001xx10xxxx0xx100xxxxx11xxx
fdot. */
- return 3450;
+ return 3454;
}
else
{
10987654321098765432109876543210
x1000001xx11xxxx0xx100xxxxx11xxx
fdot. */
- return 3451;
+ return 3455;
}
}
}
10987654321098765432109876543210
x1000001xx1xxxxx101000xx1x0xxxx0
fscale. */
- return 3386;
+ return 3390;
}
}
else
10987654321098765432109876543210
x1000001x0100100111000xxxx0xxxxx
fcvt. */
- return 3383;
+ return 3387;
}
else
{
10987654321098765432109876543210
x1000001x1100100111000xxxx0xxxxx
bfcvt. */
- return 3378;
+ return 3382;
}
}
else
10987654321098765432109876543210
x1000001xx110100111000xxxx0xxxxx
fcvt. */
- return 3384;
+ return 3388;
}
}
else
10987654321098765432109876543210
x1000001xx1xx100111000xxxx1xxxxx
fcvtn. */
- return 3385;
+ return 3389;
}
}
}
10987654321098765432109876543210
x10000010010x110111000xxxxxxxxx0
f1cvt. */
- return 3379;
+ return 3383;
}
else
{
10987654321098765432109876543210
x10000011010x110111000xxxxxxxxx0
f2cvt. */
- return 3380;
+ return 3384;
}
}
else
10987654321098765432109876543210
x10000010110x110111000xxxxxxxxx0
bf1cvt. */
- return 3374;
+ return 3378;
}
else
{
10987654321098765432109876543210
x10000011110x110111000xxxxxxxxx0
bf2cvt. */
- return 3375;
+ return 3379;
}
}
}
10987654321098765432109876543210
x1000001001xxx10111000xxxxxxxxx1
f1cvtl. */
- return 3381;
+ return 3385;
}
else
{
10987654321098765432109876543210
x1000001101xxx10111000xxxxxxxxx1
f2cvtl. */
- return 3382;
+ return 3386;
}
}
else
10987654321098765432109876543210
x1000001011xxx10111000xxxxxxxxx1
bf1cvtl. */
- return 3376;
+ return 3380;
}
else
{
10987654321098765432109876543210
x1000001111xxx10111000xxxxxxxxx1
bf2cvtl. */
- return 3377;
+ return 3381;
}
}
}
10987654321098765432109876543210
x1000001xx1xxxxx1x1100xx100xxxx0
fscale. */
- return 3388;
+ return 3392;
}
}
else
10987654321098765432109876543210
x1000001xx1xxxxx1x1010xx100xxxx0
fscale. */
- return 3387;
+ return 3391;
}
else
{
10987654321098765432109876543210
x1000001xx1xxxxx1x1110xx100xxxx0
fscale. */
- return 3389;
+ return 3393;
}
}
}
10987654321098765432109876543210
x0x11010000xxxxxxx1xxxxxxxxxxxxx
addpt. */
- return 3390;
+ return 3394;
}
else
{
10987654321098765432109876543210
x1x11010000xxxxxxx1xxxxxxxxxxxxx
subpt. */
- return 3391;
+ return 3395;
}
}
}
10987654321098765432109876543210
xxxx1011x11xxxxx0xxxxxxxxxxxxxxx
maddpt. */
- return 3392;
+ return 3396;
}
else
{
10987654321098765432109876543210
xxxx1011x11xxxxx1xxxxxxxxxxxxxxx
msubpt. */
- return 3393;
+ return 3397;
}
}
}
10987654321098765432109876543210
000001x0xx000100000xxxxxxxxxxxxx
addpt. */
- return 3394;
+ return 3398;
}
else
{
10987654321098765432109876543210
000001x0xx000101000xxxxxxxxxxxxx
subpt. */
- return 3396;
+ return 3400;
}
else
{
10987654321098765432109876543210
000001x0xx1xxxxx000010xxxxxxxxxx
addpt. */
- return 3395;
+ return 3399;
}
else
{
10987654321098765432109876543210
000001x0xx1xxxxx000011xxxxxxxxxx
subpt. */
- return 3397;
+ return 3401;
}
else
{
10987654321098765432109876543210
010001x0xx0xxxxx110100xxxxxxxxxx
mlapt. */
- return 3399;
+ return 3403;
}
}
else
10987654321098765432109876543210
010001x0xx0xxxxx110110xxxxxxxxxx
madpt. */
- return 3398;
+ return 3402;
}
}
}
10987654321098765432109876543210
000001x0xx00x100001xxxxxxxxxxxxx
smaxqv. */
- return 3308;
+ return 3312;
}
else
{
10987654321098765432109876543210
000001x0xx01x100001xxxxxxxxxxxxx
orqv. */
- return 3319;
+ return 3323;
}
}
else
10987654321098765432109876543210
000001x0xx0x0101001xxxxxxxxxxxxx
addqv. */
- return 3306;
+ return 3310;
}
else
{
10987654321098765432109876543210
000001x0xx001101001xxxxxxxxxxxxx
umaxqv. */
- return 3310;
+ return 3314;
}
else
{
10987654321098765432109876543210
000001x0xx011101001xxxxxxxxxxxxx
eorqv. */
- return 3312;
+ return 3316;
}
}
}
10987654321098765432109876543210
000001x0xx00x110001xxxxxxxxxxxxx
sminqv. */
- return 3309;
+ return 3313;
}
else
{
10987654321098765432109876543210
000001x0xx01x110001xxxxxxxxxxxxx
andqv. */
- return 3307;
+ return 3311;
}
}
}
10987654321098765432109876543210
000001x0xx0xx111001xxxxxxxxxxxxx
uminqv. */
- return 3311;
+ return 3315;
}
}
}
10987654321098765432109876543210
110001x0x00xxxxx101xxxxxxxxxxxxx
ld1q. */
- return 3335;
+ return 3339;
}
else
{
10987654321098765432109876543210
010001x0xx0xxxxx111x00xxxxxxxxxx
zipq1. */
- return 3325;
+ return 3329;
}
else
{
10987654321098765432109876543210
010001x0xx0xxxxx111010xxxxxxxxxx
uzpq1. */
- return 3323;
+ return 3327;
}
else
{
10987654321098765432109876543210
010001x0xx0xxxxx111110xxxxxxxxxx
tblq. */
- return 3320;
+ return 3324;
}
}
}
10987654321098765432109876543210
010001x0xx0xxxxx111x01xxxxxxxxxx
zipq2. */
- return 3326;
+ return 3330;
}
else
{
10987654321098765432109876543210
010001x0xx0xxxxx111x11xxxxxxxxxx
uzpq2. */
- return 3324;
+ return 3328;
}
}
}
10987654321098765432109876543210
111001x0x00xxxxx000xxxxxxxxxxxxx
st3q. */
- return 3344;
+ return 3348;
}
else
{
10987654321098765432109876543210
111001x0010xxxxx000xxxxxxxxxxxxx
st2q. */
- return 3343;
+ return 3347;
}
else
{
10987654321098765432109876543210
111001x0110xxxxx000xxxxxxxxxxxxx
st4q. */
- return 3345;
+ return 3349;
}
}
}
10987654321098765432109876543210
011001x0xx0x0000101xxxxxxxxxxxxx
faddqv. */
- return 3313;
+ return 3317;
}
else
{
10987654321098765432109876543210
011001x0xx0xx100101xxxxxxxxxxxxx
fmaxnmqv. */
- return 3314;
+ return 3318;
}
}
else
10987654321098765432109876543210
011001x0xx0xx110101xxxxxxxxxxxxx
fmaxqv. */
- return 3315;
+ return 3319;
}
}
}
10987654321098765432109876543210
011001x0xx0xx101101xxxxxxxxxxxxx
fminnmqv. */
- return 3316;
+ return 3320;
}
}
else
10987654321098765432109876543210
011001x0xx0xx111101xxxxxxxxxxxxx
fminqv. */
- return 3317;
+ return 3321;
}
}
}
10987654321098765432109876543210
101001x0xx01xxxx111xxxxxxxxxxxxx
ld2q. */
- return 3336;
+ return 3340;
}
}
}
10987654321098765432109876543210
101001x0xx1xxxxx100xxxxxxxxxxxxx
ld2q. */
- return 3339;
+ return 3343;
}
}
else
10987654321098765432109876543210
111001x00x1xxxxx000xxxxxxxxxxxxx
st2q. */
- return 3346;
+ return 3350;
}
}
else
10987654321098765432109876543210
111001x0101xxxxx000xxxxxxxxxxxxx
st3q. */
- return 3347;
+ return 3351;
}
}
else
10987654321098765432109876543210
111001x0111xxxxx000xxxxxxxxxxxxx
st4q. */
- return 3348;
+ return 3352;
}
}
}
10987654321098765432109876543210
011001x0001xxxxx0100x1xxxxxxxxxx
fdot. */
- return 3435;
+ return 3439;
}
}
else
10987654321098765432109876543210
011001x0001xxxxx0101xxxxxxxxxxxx
fmlalb. */
- return 3437;
+ return 3441;
}
}
else
10987654321098765432109876543210
011001x0101xxxxx0101xxxxxxxxxxxx
fmlalt. */
- return 3447;
+ return 3451;
}
}
else
10987654321098765432109876543210
011001x0011xxxxx010xx1xxxxxxxxxx
fdot. */
- return 3433;
+ return 3437;
}
}
else
10987654321098765432109876543210
x11001x0001xxxxx100010xxxxxxxxxx
fmlallbb. */
- return 3438;
+ return 3442;
}
}
else
10987654321098765432109876543210
x11001x0001xxxxx1000x1xxxxxxxxxx
fdot. */
- return 3434;
+ return 3438;
}
}
else
10987654321098765432109876543210
x11001x0001xxxxx1100xxxxxxxxxxxx
fmlallbb. */
- return 3439;
+ return 3443;
}
}
else
10987654321098765432109876543210
x11001x0001xxxxx1x01xxxxxxxxxxxx
fmlallbt. */
- return 3440;
+ return 3444;
}
}
else
10987654321098765432109876543210
011001x0101xxxxx100010xxxxxxxxxx
fmlalb. */
- return 3436;
+ return 3440;
}
}
else
10987654321098765432109876543210
011001x0101xxxxx1100xxxxxxxxxxxx
fmlalltb. */
- return 3443;
+ return 3447;
}
}
else
10987654321098765432109876543210
011001x0101xxxxx1x01xxxxxxxxxxxx
fmlalt. */
- return 3446;
+ return 3450;
}
}
else
10987654321098765432109876543210
x11001x0011xxxxx100xx1xxxxxxxxxx
fdot. */
- return 3432;
+ return 3436;
}
}
else
10987654321098765432109876543210
x11001x0011xxxxx110xxxxxxxxxxxxx
fmlallbt. */
- return 3441;
+ return 3445;
}
}
else
10987654321098765432109876543210
011001x0111xxxxx110xxxxxxxxxxxxx
fmlalltt. */
- return 3445;
+ return 3449;
}
}
else
10987654321098765432109876543210
111001x0xx1xxxxx001xxxxxxxxxxxxx
st1q. */
- return 3342;
+ return 3346;
}
}
else
10987654321098765432109876543210
x11001x0001xxxxx1010xxxxxxxxxxxx
fmlalltb. */
- return 3442;
+ return 3446;
}
else
{
10987654321098765432109876543210
x11001x0001xxxxx1011xxxxxxxxxxxx
fmlalltt. */
- return 3444;
+ return 3448;
}
}
else
10987654321098765432109876543210
000001x1001010x0001110xxxxxxxxxx
pmov. */
- return 3327;
+ return 3331;
}
else
{
10987654321098765432109876543210
000001x1001011x0001110xxxxxxxxxx
pmov. */
- return 3328;
+ return 3332;
}
}
else
10987654321098765432109876543210
000001x101101xx0001110xxxxxxxxxx
pmov. */
- return 3329;
+ return 3333;
}
}
else
10987654321098765432109876543210
000001x11x101xx0001110xxxxxxxxxx
pmov. */
- return 3330;
+ return 3334;
}
}
else
10987654321098765432109876543210
000001x1001x10x1001110xxxxxxxxxx
pmov. */
- return 3331;
+ return 3335;
}
else
{
10987654321098765432109876543210
000001x1001x11x1001110xxxxxxxxxx
pmov. */
- return 3332;
+ return 3336;
}
}
else
10987654321098765432109876543210
000001x1011x1xx1001110xxxxxxxxxx
pmov. */
- return 3333;
+ return 3337;
}
}
else
10987654321098765432109876543210
000001x11x1x1xx1001110xxxxxxxxxx
pmov. */
- return 3334;
+ return 3338;
}
}
}
10987654321098765432109876543210
000001x1x01xxxxx001001xxxxxxxxxx
dupq. */
- return 3318;
+ return 3322;
}
else
{
10987654321098765432109876543210
000001x1x11xxxxx001001xxxxxxxxxx
extq. */
- return 3322;
+ return 3326;
}
}
else
10987654321098765432109876543210
000001x1xx1xxxxx001101xxxxxxxxxx
tbxq. */
- return 3321;
+ return 3325;
}
}
else
10987654321098765432109876543210
010001x1xx1xxxxx101100xxxxxxxxxx
luti2. */
- return 3404;
+ return 3408;
}
}
else
10987654321098765432109876543210
010001x1xx1xxxxx101x10xxxxxxxxxx
luti2. */
- return 3405;
+ return 3409;
}
}
else
10987654321098765432109876543210
010001x1xx1xxxxx101001xxxxxxxxxx
luti4. */
- return 3406;
+ return 3410;
}
else
{
10987654321098765432109876543210
010001x1xx1xxxxx101101xxxxxxxxxx
luti4. */
- return 3407;
+ return 3411;
}
}
else
10987654321098765432109876543210
010001x1xx1xxxxx101x11xxxxxxxxxx
luti4. */
- return 3408;
+ return 3412;
}
}
}
10987654321098765432109876543210
011001x1xx001000001x00xxxxxxxxxx
f1cvt. */
- return 3366;
+ return 3370;
}
else
{
10987654321098765432109876543210
011001x1xx001000001x10xxxxxxxxxx
bf1cvt. */
- return 3362;
+ return 3366;
}
}
else
10987654321098765432109876543210
011001x1xx001000001x01xxxxxxxxxx
f2cvt. */
- return 3367;
+ return 3371;
}
else
{
10987654321098765432109876543210
011001x1xx001000001x11xxxxxxxxxx
bf2cvt. */
- return 3363;
+ return 3367;
}
}
}
10987654321098765432109876543210
011001x1xx0x1010001x00xxxxxxxxxx
fcvtn. */
- return 3371;
+ return 3375;
}
else
{
10987654321098765432109876543210
011001x1xx0x1010001x10xxxxxxxxxx
bfcvtn. */
- return 3370;
+ return 3374;
}
}
else
10987654321098765432109876543210
011001x1xx0x1010001x01xxxxxxxxxx
fcvtnb. */
- return 3372;
+ return 3376;
}
else
{
10987654321098765432109876543210
011001x1xx0x1010001x11xxxxxxxxxx
fcvtnt. */
- return 3373;
+ return 3377;
}
}
}
10987654321098765432109876543210
011001x1xx0x1001001x00xxxxxxxxxx
f1cvtlt. */
- return 3368;
+ return 3372;
}
else
{
10987654321098765432109876543210
011001x1xx0x1001001x10xxxxxxxxxx
bf1cvtlt. */
- return 3364;
+ return 3368;
}
}
else
10987654321098765432109876543210
011001x1xx0x1001001x01xxxxxxxxxx
f2cvtlt. */
- return 3369;
+ return 3373;
}
else
{
10987654321098765432109876543210
011001x1xx0x1001001x11xxxxxxxxxx
bf2cvtlt. */
- return 3365;
+ return 3369;
}
}
}
10987654321098765432109876543210
101001x10x01xxxx111xxxxxxxxxxxxx
ld3q. */
- return 3337;
+ return 3341;
}
else
{
10987654321098765432109876543210
101001x11x01xxxx111xxxxxxxxxxxxx
ld4q. */
- return 3338;
+ return 3342;
}
}
}
10987654321098765432109876543210
101001x10x1xxxxx100xxxxxxxxxxxxx
ld3q. */
- return 3340;
+ return 3344;
}
else
{
10987654321098765432109876543210
101001x11x1xxxxx100xxxxxxxxxxxxx
ld4q. */
- return 3341;
+ return 3345;
}
}
else
10987654321098765432109876543210
0x001110100xxxxxxxx100xxxxxxxxxx
luti2. */
- return 3400;
+ return 3404;
}
}
}
10987654321098765432109876543210
0x001110010xxxxxxxx000xxxxxxxxxx
luti4. */
- return 3402;
+ return 3406;
}
else
{
10987654321098765432109876543210
0x001110010xxxxxxxx100xxxxxxxxxx
luti4. */
- return 3403;
+ return 3407;
}
}
else
10987654321098765432109876543210
0x001110110xxxxxxxxx00xxxxxxxxxx
luti2. */
- return 3401;
+ return 3405;
}
}
}
10987654321098765432109876543210
00001110x00xxxxxx10001xxxxxxxxxx
fmlallbb. */
- return 3424;
+ return 3428;
}
else
{
10987654321098765432109876543210
01001110x00xxxxxx10001xxxxxxxxxx
fmlalltb. */
- return 3426;
+ return 3430;
}
}
else
10987654321098765432109876543210
00001110x10xxxxxx10001xxxxxxxxxx
fmlallbt. */
- return 3425;
+ return 3429;
}
else
{
10987654321098765432109876543210
01001110x10xxxxxx10001xxxxxxxxxx
fmlalltt. */
- return 3427;
+ return 3431;
}
}
}
10987654321098765432109876543210
00001110x00xxxxxx11101xxxxxxxxxx
fcvtn. */
- return 3357;
+ return 3361;
}
else
{
10987654321098765432109876543210
01001110x00xxxxxx11101xxxxxxxxxx
fcvtn2. */
- return 3358;
+ return 3362;
}
}
else
10987654321098765432109876543210
0x001110x10xxxxxx11101xxxxxxxxxx
fcvtn. */
- return 3359;
+ return 3363;
}
}
}
10987654321098765432109876543210
0x001110x00xxxxxx11111xxxxxxxxxx
fdot. */
- return 3416;
+ return 3420;
}
else
{
10987654321098765432109876543210
0x001110010xxxxxx11111xxxxxxxxxx
fdot. */
- return 3418;
+ return 3422;
}
else
{
10987654321098765432109876543210
00001110110xxxxxx11111xxxxxxxxxx
fmlalb. */
- return 3420;
+ return 3424;
}
else
{
10987654321098765432109876543210
01001110110xxxxxx11111xxxxxxxxxx
fmlalt. */
- return 3421;
+ return 3425;
}
}
}
10987654321098765432109876543210
xx101110110xxxxx0x1111xxxxxxxxxx
fscale. */
- return 3360;
+ return 3364;
}
}
}
10987654321098765432109876543210
x0101110001xxxx1011110xxxxxxxxxx
f1cvtl. */
- return 3353;
+ return 3357;
}
else
{
10987654321098765432109876543210
x1101110001xxxx1011110xxxxxxxxxx
f1cvtl2. */
- return 3354;
+ return 3358;
}
}
else
10987654321098765432109876543210
x0101110101xxxx1011110xxxxxxxxxx
bf1cvtl. */
- return 3349;
+ return 3353;
}
else
{
10987654321098765432109876543210
x1101110101xxxx1011110xxxxxxxxxx
bf1cvtl2. */
- return 3350;
+ return 3354;
}
}
}
10987654321098765432109876543210
x0101110011xxxx1011110xxxxxxxxxx
f2cvtl. */
- return 3355;
+ return 3359;
}
else
{
10987654321098765432109876543210
x1101110011xxxx1011110xxxxxxxxxx
f2cvtl2. */
- return 3356;
+ return 3360;
}
}
else
10987654321098765432109876543210
x0101110111xxxx1011110xxxxxxxxxx
bf2cvtl. */
- return 3351;
+ return 3355;
}
else
{
10987654321098765432109876543210
x1101110111xxxx1011110xxxxxxxxxx
bf2cvtl2. */
- return 3352;
+ return 3356;
}
}
}
10987654321098765432109876543210
xx1011101x1xxxxx111111xxxxxxxxxx
fscale. */
- return 3361;
+ return 3365;
}
}
}
10987654321098765432109876543210
xx00111100xxxxxx0000x0xxxxxxxxxx
fdot. */
- return 3417;
+ return 3421;
}
else
{
10987654321098765432109876543210
xx00111101xxxxxx0000x0xxxxxxxxxx
fdot. */
- return 3419;
+ return 3423;
}
else
{
10987654321098765432109876543210
x000111111xxxxxx0000x0xxxxxxxxxx
fmlalb. */
- return 3422;
+ return 3426;
}
else
{
10987654321098765432109876543210
x100111111xxxxxx0000x0xxxxxxxxxx
fmlalt. */
- return 3423;
+ return 3427;
}
}
}
10987654321098765432109876543210
x010111100xxxxxx1000x0xxxxxxxxxx
fmlallbb. */
- return 3428;
+ return 3432;
}
else
{
10987654321098765432109876543210
x110111100xxxxxx1000x0xxxxxxxxxx
fmlalltb. */
- return 3430;
+ return 3434;
}
}
else
10987654321098765432109876543210
x0101111x1xxxxxx1000x0xxxxxxxxxx
fmlallbt. */
- return 3429;
+ return 3433;
}
else
{
10987654321098765432109876543210
x1101111x1xxxxxx1000x0xxxxxxxxxx
fmlalltt. */
- return 3431;
+ return 3435;
}
}
}
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)
{ \
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), \
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),