From: Srinath Parvathaneni Date: Mon, 8 Jul 2024 15:36:40 +0000 (+0100) Subject: aarch64: Add support for sme2.1 luti2 and luti4 instructions. X-Git-Tag: binutils-2_43~141 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9858d3031e5e79fc4b3ec2793f3e1aca569afd6f;p=thirdparty%2Fbinutils-gdb.git aarch64: Add support for sme2.1 luti2 and luti4 instructions. 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 --- diff --git a/gas/testsuite/gas/aarch64/sme2p1-2-bad.d b/gas/testsuite/gas/aarch64/sme2p1-2-bad.d new file mode 100644 index 00000000000..f165f1f960a --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-2-bad.d @@ -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 index 00000000000..8fd4039f37e --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-2-bad.l @@ -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 index 00000000000..52af11f4ead --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-2-bad.s @@ -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 index 00000000000..8be6db0d34f --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-2.d @@ -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 index 00000000000..a57baadf738 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2p1-2.s @@ -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] diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index fc749fa280d..64959a8c50e 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -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, diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c index 0867c08940c..e621bd86e87 100644 --- a/opcodes/aarch64-asm.c +++ b/opcodes/aarch64-asm.c @@ -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, diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 64407afaca4..36542af2dc4 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -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; } } } diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c index d3f38c3cda5..81ebbe0bd55 100644 --- a/opcodes/aarch64-dis.c +++ b/opcodes/aarch64-dis.c @@ -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) diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index ad0d8ae7be6..eccfac53ad1 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -2084,6 +2084,11 @@ { \ 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),