]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Add support for FEAT_SME_F16F16 fmops and fmopa instructions.
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Fri, 10 Jan 2025 14:07:13 +0000 (14:07 +0000)
committerSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Fri, 10 Jan 2025 14:07:57 +0000 (14:07 +0000)
This patch adds support for FEAT_SME_F16F16 instructions fmops and fmopa,
which are available on passing command line flags +sme-f16f16 and the
spec is available here[1].
[1]: https://developer.arm.com/documentation/ddi0602/2024-06/SME-Instructions?lang=en

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

diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.d b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.d
new file mode 100644 (file)
index 0000000..fec7d2a
--- /dev/null
@@ -0,0 +1,4 @@
+#name: Test of invalid FEAT_SME_F16F16 fmops and fmopa instructions.
+#as: -march=armv8-a+sme-f16f16
+#source: sme-f16f16-2-bad.s
+#error_output: sme-f16f16-2-bad.l
diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.l b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.l
new file mode 100644 (file)
index 0000000..083b3a0
--- /dev/null
@@ -0,0 +1,29 @@
+.*: Assembler messages:
+.*: Error: operand mismatch -- `fmopa ZA1.h,p0,p0/m,z0.h,z0.h'
+.*: Info:    did you mean this\?
+.*: Info:      fmopa za1.h, p0/m, p0/m, z0.h, z0.h
+.*: Error: operand mismatch -- `fmopa ZA0.h,p7/m,p0,z0.h,z0.h'
+.*: Info:    did you mean this\?
+.*: Info:      fmopa za0.h, p7/m, p0/m, z0.h, z0.h
+.*: Error: operand mismatch -- `fmopa ZA0.h,p0/m,p7/m,z0.s,z0.s'
+.*: Info:    did you mean this\?
+.*: Info:      fmopa za0.s, p0/m, p7/m, z0.s, z0.s
+.*: Error: operand mismatch -- `fmopa ZA0.h,p0/m,p0/m,z31.d,z0.d'
+.*: Info:    did you mean this\?
+.*: Info:      fmopa za0.d, p0/m, p0/m, z31.d, z0.d
+.*: Error: ZA tile number out of range at operand 1 -- `fmopa ZA2.h,p0/m,p8/m,z0.s,z31.b'
+.*: Error: ZA tile number out of range at operand 1 -- `fmopa ZA4.h,p15/m,p11/m,z0.s,z31.b'
+.*: Error: operand mismatch -- `fmops ZA1.h,p0,p0/m,z0.h,z0.h'
+.*: Info:    did you mean this\?
+.*: Info:      fmops za1.h, p0/m, p0/m, z0.h, z0.h
+.*: Error: operand mismatch -- `fmops ZA0.h,p7/m,p0,z0.h,z0.h'
+.*: Info:    did you mean this\?
+.*: Info:      fmops za0.h, p7/m, p0/m, z0.h, z0.h
+.*: Error: operand mismatch -- `fmops ZA0.h,p0/m,p7/m,z0.s,z0.s'
+.*: Info:    did you mean this\?
+.*: Info:      fmops za0.s, p0/m, p7/m, z0.s, z0.s
+.*: Error: operand mismatch -- `fmops ZA0.h,p0/m,p0/m,z31.d,z0.d'
+.*: Info:    did you mean this\?
+.*: Info:      fmops za0.d, p0/m, p0/m, z31.d, z0.d
+.*: Error: ZA tile number out of range at operand 1 -- `fmops ZA2.h,p0/m,p8/m,z0.s,z31.b'
+.*: Error: ZA tile number out of range at operand 1 -- `fmops ZA4.h,p15/m,p11/m,z0.s,z31.b'
diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.s b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.s
new file mode 100644 (file)
index 0000000..4bce380
--- /dev/null
@@ -0,0 +1,17 @@
+/* FMOPA.  */
+fmopa ZA0.s, p0/m, p0/m, z0.h, z0.h
+fmopa ZA1.h, p0, p0/m, z0.h, z0.h
+fmopa ZA0.h, p7/m, p0, z0.h, z0.h
+fmopa ZA0.h, p0/m, p7/m, z0.s, z0.s
+fmopa ZA0.h, p0/m, p0/m, z31.d, z0.d
+fmopa ZA2.h, p0/m, p8/m, z0.s, z31.b
+fmopa ZA4.h, p15/m, p11/m, z0.s, z31.b
+
+/* FMOPS.  */
+fmops ZA0.s, p0/m, p0/m, z0.h, z0.h
+fmops ZA1.h, p0, p0/m, z0.h, z0.h
+fmops ZA0.h, p7/m, p0, z0.h, z0.h
+fmops ZA0.h, p0/m, p7/m, z0.s, z0.s
+fmops ZA0.h, p0/m, p0/m, z31.d, z0.d
+fmops ZA2.h, p0/m, p8/m, z0.s, z31.b
+fmops ZA4.h, p15/m, p11/m, z0.s, z31.b
diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2.d b/gas/testsuite/gas/aarch64/sme-f16f16-2.d
new file mode 100644 (file)
index 0000000..f35c1b1
--- /dev/null
@@ -0,0 +1,28 @@
+#name: Test of FEAT_SME_F16F16 fmopa and fmops instructions.
+#as: -march=armv8-a+sme-f16f16
+#objdump: -dr
+
+[^:]+:     file format .*
+
+
+[^:]+:
+
+[^:]+:
+.*:    81800008        fmopa   za0.h, p0/m, p0/m, z0.h, z0.h
+.*:    81800009        fmopa   za1.h, p0/m, p0/m, z0.h, z0.h
+.*:    81801c08        fmopa   za0.h, p7/m, p0/m, z0.h, z0.h
+.*:    8180e008        fmopa   za0.h, p0/m, p7/m, z0.h, z0.h
+.*:    818003e8        fmopa   za0.h, p0/m, p0/m, z31.h, z0.h
+.*:    819f0008        fmopa   za0.h, p0/m, p0/m, z0.h, z31.h
+.*:    819fffe9        fmopa   za1.h, p7/m, p7/m, z31.h, z31.h
+.*:    818fad48        fmopa   za0.h, p3/m, p5/m, z10.h, z15.h
+.*:    819965e9        fmopa   za1.h, p1/m, p3/m, z15.h, z25.h
+.*:    81800018        fmops   za0.h, p0/m, p0/m, z0.h, z0.h
+.*:    81800019        fmops   za1.h, p0/m, p0/m, z0.h, z0.h
+.*:    81801c18        fmops   za0.h, p7/m, p0/m, z0.h, z0.h
+.*:    8180e018        fmops   za0.h, p0/m, p7/m, z0.h, z0.h
+.*:    818003f8        fmops   za0.h, p0/m, p0/m, z31.h, z0.h
+.*:    819f0018        fmops   za0.h, p0/m, p0/m, z0.h, z31.h
+.*:    819ffff9        fmops   za1.h, p7/m, p7/m, z31.h, z31.h
+.*:    818fad58        fmops   za0.h, p3/m, p5/m, z10.h, z15.h
+.*:    819965f9        fmops   za1.h, p1/m, p3/m, z15.h, z25.h
diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2.s b/gas/testsuite/gas/aarch64/sme-f16f16-2.s
new file mode 100644 (file)
index 0000000..2032cf3
--- /dev/null
@@ -0,0 +1,21 @@
+/* FMOPA.  */
+fmopa ZA0.h, p0/m, p0/m, z0.h, z0.h
+fmopa ZA1.h, p0/m, p0/m, z0.h, z0.h
+fmopa ZA0.h, p7/m, p0/m, z0.h, z0.h
+fmopa ZA0.h, p0/m, p7/m, z0.h, z0.h
+fmopa ZA0.h, p0/m, p0/m, z31.h, z0.h
+fmopa ZA0.h, p0/m, p0/m, z0.h, z31.h
+fmopa ZA1.h, p7/m, p7/m, z31.h, z31.h
+fmopa ZA0.h, p3/m, p5/m, z10.h, z15.h
+fmopa ZA1.h, p1/m, p3/m, z15.h, z25.h
+
+/* FMOPS.  */
+fmops ZA0.h, p0/m, p0/m, z0.h, z0.h
+fmops ZA1.h, p0/m, p0/m, z0.h, z0.h
+fmops ZA0.h, p7/m, p0/m, z0.h, z0.h
+fmops ZA0.h, p0/m, p7/m, z0.h, z0.h
+fmops ZA0.h, p0/m, p0/m, z31.h, z0.h
+fmops ZA0.h, p0/m, p0/m, z0.h, z31.h
+fmops ZA1.h, p7/m, p7/m, z31.h, z31.h
+fmops ZA0.h, p3/m, p5/m, z10.h, z15.h
+fmops ZA1.h, p1/m, p3/m, z15.h, z25.h
index 95344740328b4757afacd90b24ad3640baa81148..5a26e805a54ab6dc5cae76349fddb89e34335a96 100644 (file)
@@ -271,7 +271,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000000x000101x00xxxxxxxxxxxxxx
                                                                  luti4.  */
-                                                              return 3428;
+                                                              return 3430;
                                                             }
                                                           else
                                                             {
@@ -310,7 +310,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1000000xx01101x00xxxxxxxxxxxxxx
                                                              luti4.  */
-                                                          return 3429;
+                                                          return 3431;
                                                         }
                                                       else
                                                         {
@@ -542,7 +542,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000000010011x1xxxx00xxxxxxxxxx
                                                                      movt.  */
-                                                                  return 3430;
+                                                                  return 3432;
                                                                 }
                                                             }
                                                           else
@@ -1366,7 +1366,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx000000101xxxxxxxxxxxxxxxx00xxx
                                                  fmopa.  */
-                                              return 3496;
+                                              return 3498;
                                             }
                                           else
                                             {
@@ -1374,7 +1374,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx000000101xxxxxxxxxxxxxxxx01xxx
                                                  fmopa.  */
-                                              return 3495;
+                                              return 3497;
                                             }
                                         }
                                       else
@@ -1722,7 +1722,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0000010001xxxx1xx0xxxxx1000xxx
                                                                      fmlall.  */
-                                                                  return 3489;
+                                                                  return 3491;
                                                                 }
                                                             }
                                                         }
@@ -1752,7 +1752,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000010001xxxxxxx1xxxxxx00xxxx
                                                          fdot.  */
-                                                      return 3474;
+                                                      return 3476;
                                                     }
                                                 }
                                               else
@@ -2077,11 +2077,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 30) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0000001100xxxxxxxxxxxxxxxx0xxxx
-                                                 bfmopa.  */
-                                              return 2411;
+                                              if (((word >> 3) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000001100xxxxxxxxxxxxxxxx00xxx
+                                                     bfmopa.  */
+                                                  return 2411;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000001100xxxxxxxxxxxxxxxx01xxx
+                                                     fmopa.  */
+                                                  return 3325;
+                                                }
                                             }
                                           else
                                             {
@@ -2124,7 +2135,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10000011001xxxxxxx0xxxxxx100xxx
                                                                  fmlall.  */
-                                                              return 3488;
+                                                              return 3490;
                                                             }
                                                         }
                                                     }
@@ -2229,7 +2240,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011001xxxxxxx1xxxxxx10xxxx
                                                              fmlal.  */
-                                                          return 3481;
+                                                          return 3483;
                                                         }
                                                     }
                                                 }
@@ -2261,11 +2272,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 30) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x0000001100xxxxxxxxxxxxxxxx1xxxx
-                                                 bfmops.  */
-                                              return 2412;
+                                              if (((word >> 3) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000001100xxxxxxxxxxxxxxxx10xxx
+                                                     bfmops.  */
+                                                  return 2412;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0000001100xxxxxxxxxxxxxxxx11xxx
+                                                     fmops.  */
+                                                  return 3326;
+                                                }
                                             }
                                           else
                                             {
@@ -2402,7 +2424,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10000011001xxxxxxx1xxxxxx11xxxx
                                                              fmlal.  */
-                                                          return 3480;
+                                                          return 3482;
                                                         }
                                                     }
                                                 }
@@ -2444,7 +2466,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx0000010100xxxxxxxxxxxxxxxx0xxx
                                                  fmlall.  */
-                                              return 3487;
+                                              return 3489;
                                             }
                                           else
                                             {
@@ -2812,7 +2834,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx0xx0xxxxxx111xxx
                                                              fdot.  */
-                                                          return 3467;
+                                                          return 3469;
                                                         }
                                                       else
                                                         {
@@ -2881,7 +2903,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx000010101xxxx1xx0xxxxxx001xxx
                                                              fdot.  */
-                                                          return 3468;
+                                                          return 3470;
                                                         }
                                                       else
                                                         {
@@ -2960,7 +2982,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0000011100xxxxxxx0xxxxxxx0xxxx
                                                      fmlal.  */
-                                                  return 3479;
+                                                  return 3481;
                                                 }
                                               else
                                                 {
@@ -3015,7 +3037,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx0000011101xxxx0xx01xxxxx00xxxx
                                                                  fvdotb.  */
-                                                              return 3498;
+                                                              return 3500;
                                                             }
                                                           else
                                                             {
@@ -3033,7 +3055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011101xxxxxxx0xxxxxx10xxxx
                                                          fdot.  */
-                                                      return 3473;
+                                                      return 3475;
                                                     }
                                                 }
                                             }
@@ -3107,7 +3129,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx0000011101xxxxxxx1xxxxxx10xxxx
                                                          fvdot.  */
-                                                      return 3497;
+                                                      return 3499;
                                                     }
                                                 }
                                             }
@@ -3187,7 +3209,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx000001110xxxxx0xx01xxxxxx1xxxx
                                                          fvdott.  */
-                                                      return 3499;
+                                                      return 3501;
                                                     }
                                                   else
                                                     {
@@ -3364,7 +3386,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x10000011x1xxxx00xx000xxxx10000x
                                                                                  fmlall.  */
-                                                                              return 3493;
+                                                                              return 3495;
                                                                             }
                                                                           else
                                                                             {
@@ -3372,7 +3394,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x10000011x1xxxx10xx000xxxx10000x
                                                                                  fmlall.  */
-                                                                              return 3494;
+                                                                              return 3496;
                                                                             }
                                                                         }
                                                                     }
@@ -3427,7 +3449,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx10xxxx0xx000xxxxx00x1x
                                                                      fmlall.  */
-                                                                  return 3491;
+                                                                  return 3493;
                                                                 }
                                                               else
                                                                 {
@@ -3435,7 +3457,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx11xxxx0xx000xxxxx00x1x
                                                                      fmlall.  */
-                                                                  return 3492;
+                                                                  return 3494;
                                                                 }
                                                             }
                                                         }
@@ -3489,7 +3511,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx00xx100xxxx100xxx
                                                                          fdot.  */
-                                                                      return 3477;
+                                                                      return 3479;
                                                                     }
                                                                   else
                                                                     {
@@ -3497,7 +3519,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx10xx100xxxx100xxx
                                                                          fdot.  */
-                                                                      return 3478;
+                                                                      return 3480;
                                                                     }
                                                                 }
                                                             }
@@ -3559,7 +3581,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001101xxxx00xx010xxxx1000xx
                                                                                  fmlal.  */
-                                                                              return 3485;
+                                                                              return 3487;
                                                                             }
                                                                           else
                                                                             {
@@ -3567,7 +3589,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001101xxxx10xx010xxxx1000xx
                                                                                  fmlal.  */
-                                                                              return 3486;
+                                                                              return 3488;
                                                                             }
                                                                         }
                                                                     }
@@ -3622,7 +3644,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx10xxxx0xx010xxxxx001xx
                                                                      fmlal.  */
-                                                                  return 3483;
+                                                                  return 3485;
                                                                 }
                                                               else
                                                                 {
@@ -3630,7 +3652,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx11xxxx0xx010xxxxx001xx
                                                                      fmlal.  */
-                                                                  return 3484;
+                                                                  return 3486;
                                                                 }
                                                             }
                                                         }
@@ -3699,7 +3721,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx11xxxx0xx001xxxxx000xx
                                                                      fmlall.  */
-                                                                  return 3490;
+                                                                  return 3492;
                                                                 }
                                                             }
                                                           else
@@ -3782,7 +3804,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx11xxxx0xx011xxxxx00xxx
                                                                  fmlal.  */
-                                                              return 3482;
+                                                              return 3484;
                                                             }
                                                         }
                                                       else
@@ -3803,7 +3825,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x00xx111xxxxx00xxx
                                                                      fadd.  */
-                                                                  return 3431;
+                                                                  return 3433;
                                                                 }
                                                             }
                                                           else
@@ -3822,7 +3844,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x10xx111xxxxx00xxx
                                                                      fadd.  */
-                                                                  return 3432;
+                                                                  return 3434;
                                                                 }
                                                             }
                                                         }
@@ -3948,7 +3970,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx00xx100xxxx110xxx
                                                                          fdot.  */
-                                                                      return 3471;
+                                                                      return 3473;
                                                                     }
                                                                   else
                                                                     {
@@ -3956,7 +3978,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x10000011x1xxxx10xx100xxxx110xxx
                                                                          fdot.  */
-                                                                      return 3472;
+                                                                      return 3474;
                                                                     }
                                                                 }
                                                             }
@@ -4247,7 +4269,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx10xxxx0xx100xxxxx01xxx
                                                                  fdot.  */
-                                                              return 3475;
+                                                              return 3477;
                                                             }
                                                           else
                                                             {
@@ -4255,7 +4277,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx11xxxx0xx100xxxxx01xxx
                                                                  fdot.  */
-                                                              return 3476;
+                                                              return 3478;
                                                             }
                                                         }
                                                     }
@@ -4526,7 +4548,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x00xx111xxxxx01xxx
                                                                      fsub.  */
-                                                                  return 3433;
+                                                                  return 3435;
                                                                 }
                                                             }
                                                           else
@@ -4545,7 +4567,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      x1000001xx1xx1x10xx111xxxxx01xxx
                                                                      fsub.  */
-                                                                  return 3434;
+                                                                  return 3436;
                                                                 }
                                                             }
                                                         }
@@ -4607,7 +4629,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx10xxxx0xx100xxxxx11xxx
                                                                  fdot.  */
-                                                              return 3469;
+                                                              return 3471;
                                                             }
                                                           else
                                                             {
@@ -4615,7 +4637,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1000001xx11xxxx0xx100xxxxx11xxx
                                                                  fdot.  */
-                                                              return 3470;
+                                                              return 3472;
                                                             }
                                                         }
                                                     }
@@ -5150,7 +5172,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx101000xx1x0xxxx0
                                                                          fscale.  */
-                                                                      return 3405;
+                                                                      return 3407;
                                                                     }
                                                                 }
                                                               else
@@ -5298,7 +5320,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x1000001x0100100111000xxxx0xxxxx
                                                                                          fcvt.  */
-                                                                                      return 3402;
+                                                                                      return 3404;
                                                                                     }
                                                                                   else
                                                                                     {
@@ -5306,7 +5328,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x1000001x1100100111000xxxx0xxxxx
                                                                                          bfcvt.  */
-                                                                                      return 3397;
+                                                                                      return 3399;
                                                                                     }
                                                                                 }
                                                                               else
@@ -5315,7 +5337,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                      10987654321098765432109876543210
                                                                                      x1000001xx110100111000xxxx0xxxxx
                                                                                      fcvt.  */
-                                                                                  return 3403;
+                                                                                  return 3405;
                                                                                 }
                                                                             }
                                                                           else
@@ -5366,7 +5388,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              x1000001xx1xx100111000xxxx1xxxxx
                                                                              fcvtn.  */
-                                                                          return 3404;
+                                                                          return 3406;
                                                                         }
                                                                     }
                                                                 }
@@ -5449,7 +5471,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000010010x110111000xxxxxxxxx0
                                                                                          f1cvt.  */
-                                                                                      return 3398;
+                                                                                      return 3400;
                                                                                     }
                                                                                   else
                                                                                     {
@@ -5457,7 +5479,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000011010x110111000xxxxxxxxx0
                                                                                          f2cvt.  */
-                                                                                      return 3399;
+                                                                                      return 3401;
                                                                                     }
                                                                                 }
                                                                               else
@@ -5468,7 +5490,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000010110x110111000xxxxxxxxx0
                                                                                          bf1cvt.  */
-                                                                                      return 3393;
+                                                                                      return 3395;
                                                                                     }
                                                                                   else
                                                                                     {
@@ -5476,7 +5498,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                          10987654321098765432109876543210
                                                                                          x10000011110x110111000xxxxxxxxx0
                                                                                          bf2cvt.  */
-                                                                                      return 3394;
+                                                                                      return 3396;
                                                                                     }
                                                                                 }
                                                                             }
@@ -5511,7 +5533,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001001xxx10111000xxxxxxxxx1
                                                                                  f1cvtl.  */
-                                                                              return 3400;
+                                                                              return 3402;
                                                                             }
                                                                           else
                                                                             {
@@ -5519,7 +5541,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001101xxx10111000xxxxxxxxx1
                                                                                  f2cvtl.  */
-                                                                              return 3401;
+                                                                              return 3403;
                                                                             }
                                                                         }
                                                                       else
@@ -5530,7 +5552,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001011xxx10111000xxxxxxxxx1
                                                                                  bf1cvtl.  */
-                                                                              return 3395;
+                                                                              return 3397;
                                                                             }
                                                                           else
                                                                             {
@@ -5538,7 +5560,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  x1000001111xxx10111000xxxxxxxxx1
                                                                                  bf2cvtl.  */
-                                                                              return 3396;
+                                                                              return 3398;
                                                                             }
                                                                         }
                                                                     }
@@ -5807,7 +5829,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx1x1100xx100xxxx0
                                                                          fscale.  */
-                                                                      return 3407;
+                                                                      return 3409;
                                                                     }
                                                                 }
                                                               else
@@ -5983,7 +6005,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx1x1010xx100xxxx0
                                                                          fscale.  */
-                                                                      return 3406;
+                                                                      return 3408;
                                                                     }
                                                                   else
                                                                     {
@@ -5991,7 +6013,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1000001xx1xxxxx1x1110xx100xxxx0
                                                                          fscale.  */
-                                                                      return 3408;
+                                                                      return 3410;
                                                                     }
                                                                 }
                                                             }
@@ -11159,7 +11181,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0x11010000xxxxxxx1xxxxxxxxxxxxx
                                              addpt.  */
-                                          return 3409;
+                                          return 3411;
                                         }
                                       else
                                         {
@@ -11167,7 +11189,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x1x11010000xxxxxxx1xxxxxxxxxxxxx
                                              subpt.  */
-                                          return 3410;
+                                          return 3412;
                                         }
                                     }
                                 }
@@ -12085,7 +12107,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxx1011x11xxxxx0xxxxxxxxxxxxxxx
                                  maddpt.  */
-                              return 3411;
+                              return 3413;
                             }
                           else
                             {
@@ -12093,7 +12115,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxx1011x11xxxxx1xxxxxxxxxxxxxxx
                                  msubpt.  */
-                              return 3412;
+                              return 3414;
                             }
                         }
                     }
@@ -12178,7 +12200,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx000100000xxxxxxxxxxxxx
                                                                      addpt.  */
-                                                                  return 3413;
+                                                                  return 3415;
                                                                 }
                                                               else
                                                                 {
@@ -12285,7 +12307,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx000101000xxxxxxxxxxxxx
                                                                      subpt.  */
-                                                                  return 3415;
+                                                                  return 3417;
                                                                 }
                                                               else
                                                                 {
@@ -12490,7 +12512,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000010xxxxxxxxxx
                                                              addpt.  */
-                                                          return 3414;
+                                                          return 3416;
                                                         }
                                                       else
                                                         {
@@ -12531,7 +12553,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000011xxxxxxxxxx
                                                              subpt.  */
-                                                          return 3416;
+                                                          return 3418;
                                                         }
                                                       else
                                                         {
@@ -14189,7 +14211,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx110100xxxxxxxxxx
                                                              mlapt.  */
-                                                          return 3418;
+                                                          return 3420;
                                                         }
                                                     }
                                                   else
@@ -14219,7 +14241,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx110110xxxxxxxxxx
                                                              madpt.  */
-                                                          return 3417;
+                                                          return 3419;
                                                         }
                                                     }
                                                 }
@@ -14527,7 +14549,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx00x100001xxxxxxxxxxxxx
                                                                  smaxqv.  */
-                                                              return 3327;
+                                                              return 3329;
                                                             }
                                                           else
                                                             {
@@ -14535,7 +14557,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx01x100001xxxxxxxxxxxxx
                                                                  orqv.  */
-                                                              return 3338;
+                                                              return 3340;
                                                             }
                                                         }
                                                       else
@@ -14546,7 +14568,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x0101001xxxxxxxxxxxxx
                                                                  addqv.  */
-                                                              return 3325;
+                                                              return 3327;
                                                             }
                                                           else
                                                             {
@@ -14556,7 +14578,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx001101001xxxxxxxxxxxxx
                                                                      umaxqv.  */
-                                                                  return 3329;
+                                                                  return 3331;
                                                                 }
                                                               else
                                                                 {
@@ -14564,7 +14586,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx011101001xxxxxxxxxxxxx
                                                                      eorqv.  */
-                                                                  return 3331;
+                                                                  return 3333;
                                                                 }
                                                             }
                                                         }
@@ -14601,7 +14623,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx00x110001xxxxxxxxxxxxx
                                                                  sminqv.  */
-                                                              return 3328;
+                                                              return 3330;
                                                             }
                                                           else
                                                             {
@@ -14609,7 +14631,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx01x110001xxxxxxxxxxxxx
                                                                  andqv.  */
-                                                              return 3326;
+                                                              return 3328;
                                                             }
                                                         }
                                                     }
@@ -14629,7 +14651,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx0xx111001xxxxxxxxxxxxx
                                                              uminqv.  */
-                                                          return 3330;
+                                                          return 3332;
                                                         }
                                                     }
                                                 }
@@ -15373,7 +15395,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      110001x0x00xxxxx101xxxxxxxxxxxxx
                                                      ld1q.  */
-                                                  return 3354;
+                                                  return 3356;
                                                 }
                                               else
                                                 {
@@ -16387,7 +16409,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x0xx0xxxxx111x00xxxxxxxxxx
                                                          zipq1.  */
-                                                      return 3344;
+                                                      return 3346;
                                                     }
                                                   else
                                                     {
@@ -16397,7 +16419,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx111010xxxxxxxxxx
                                                              uzpq1.  */
-                                                          return 3342;
+                                                          return 3344;
                                                         }
                                                       else
                                                         {
@@ -16405,7 +16427,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x0xx0xxxxx111110xxxxxxxxxx
                                                              tblq.  */
-                                                          return 3339;
+                                                          return 3341;
                                                         }
                                                     }
                                                 }
@@ -16417,7 +16439,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x0xx0xxxxx111x01xxxxxxxxxx
                                                          zipq2.  */
-                                                      return 3345;
+                                                      return 3347;
                                                     }
                                                   else
                                                     {
@@ -16425,7 +16447,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x0xx0xxxxx111x11xxxxxxxxxx
                                                          uzpq2.  */
-                                                      return 3343;
+                                                      return 3345;
                                                     }
                                                 }
                                             }
@@ -16905,7 +16927,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x0x00xxxxx000xxxxxxxxxxxxx
                                                      st3q.  */
-                                                  return 3363;
+                                                  return 3365;
                                                 }
                                               else
                                                 {
@@ -16915,7 +16937,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0010xxxxx000xxxxxxxxxxxxx
                                                          st2q.  */
-                                                      return 3362;
+                                                      return 3364;
                                                     }
                                                   else
                                                     {
@@ -16923,7 +16945,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0110xxxxx000xxxxxxxxxxxxx
                                                          st4q.  */
-                                                      return 3364;
+                                                      return 3366;
                                                     }
                                                 }
                                             }
@@ -17370,7 +17392,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x0xx0x0000101xxxxxxxxxxxxx
                                                                  faddqv.  */
-                                                              return 3332;
+                                                              return 3334;
                                                             }
                                                           else
                                                             {
@@ -17387,7 +17409,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx100101xxxxxxxxxxxxx
                                                              fmaxnmqv.  */
-                                                          return 3333;
+                                                          return 3335;
                                                         }
                                                     }
                                                   else
@@ -17428,7 +17450,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx110101xxxxxxxxxxxxx
                                                              fmaxqv.  */
-                                                          return 3334;
+                                                          return 3336;
                                                         }
                                                     }
                                                 }
@@ -17450,7 +17472,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx101101xxxxxxxxxxxxx
                                                              fminnmqv.  */
-                                                          return 3335;
+                                                          return 3337;
                                                         }
                                                     }
                                                   else
@@ -17469,7 +17491,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0xx0xx111101xxxxxxxxxxxxx
                                                              fminqv.  */
-                                                          return 3336;
+                                                          return 3338;
                                                         }
                                                     }
                                                 }
@@ -17589,7 +17611,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x0xx01xxxx111xxxxxxxxxxxxx
                                                      ld2q.  */
-                                                  return 3355;
+                                                  return 3357;
                                                 }
                                             }
                                         }
@@ -17725,7 +17747,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  101001x0xx1xxxxx100xxxxxxxxxxxxx
                                                  ld2q.  */
-                                              return 3358;
+                                              return 3360;
                                             }
                                         }
                                       else
@@ -17870,7 +17892,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x00x1xxxxx000xxxxxxxxxxxxx
                                                      st2q.  */
-                                                  return 3365;
+                                                  return 3367;
                                                 }
                                             }
                                           else
@@ -17913,7 +17935,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0101xxxxx000xxxxxxxxxxxxx
                                                          st3q.  */
-                                                      return 3366;
+                                                      return 3368;
                                                     }
                                                 }
                                               else
@@ -17954,7 +17976,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x0111xxxxx000xxxxxxxxxxxxx
                                                          st4q.  */
-                                                      return 3367;
+                                                      return 3369;
                                                     }
                                                 }
                                             }
@@ -17983,7 +18005,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x0001xxxxx0100x1xxxxxxxxxx
                                                                  fdot.  */
-                                                              return 3454;
+                                                              return 3456;
                                                             }
                                                         }
                                                       else
@@ -17992,7 +18014,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0001xxxxx0101xxxxxxxxxxxx
                                                              fmlalb.  */
-                                                          return 3456;
+                                                          return 3458;
                                                         }
                                                     }
                                                   else
@@ -18033,7 +18055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0101xxxxx0101xxxxxxxxxxxx
                                                              fmlalt.  */
-                                                          return 3466;
+                                                          return 3468;
                                                         }
                                                     }
                                                   else
@@ -18066,7 +18088,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0011xxxxx010xx1xxxxxxxxxx
                                                              fdot.  */
-                                                          return 3452;
+                                                          return 3454;
                                                         }
                                                     }
                                                   else
@@ -18137,7 +18159,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x11001x0001xxxxx100010xxxxxxxxxx
                                                                  fmlallbb.  */
-                                                              return 3457;
+                                                              return 3459;
                                                             }
                                                         }
                                                       else
@@ -18146,7 +18168,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x11001x0001xxxxx1000x1xxxxxxxxxx
                                                              fdot.  */
-                                                          return 3453;
+                                                          return 3455;
                                                         }
                                                     }
                                                   else
@@ -18155,7 +18177,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0001xxxxx1100xxxxxxxxxxxx
                                                          fmlallbb.  */
-                                                      return 3458;
+                                                      return 3460;
                                                     }
                                                 }
                                               else
@@ -18164,7 +18186,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x11001x0001xxxxx1x01xxxxxxxxxxxx
                                                      fmlallbt.  */
-                                                  return 3459;
+                                                  return 3461;
                                                 }
                                             }
                                           else
@@ -18191,7 +18213,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x0101xxxxx100010xxxxxxxxxx
                                                                      fmlalb.  */
-                                                                  return 3455;
+                                                                  return 3457;
                                                                 }
                                                             }
                                                           else
@@ -18209,7 +18231,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x0101xxxxx1100xxxxxxxxxxxx
                                                              fmlalltb.  */
-                                                          return 3462;
+                                                          return 3464;
                                                         }
                                                     }
                                                   else
@@ -18218,7 +18240,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x0101xxxxx1x01xxxxxxxxxxxx
                                                          fmlalt.  */
-                                                      return 3465;
+                                                      return 3467;
                                                     }
                                                 }
                                               else
@@ -18251,7 +18273,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0011xxxxx100xx1xxxxxxxxxx
                                                          fdot.  */
-                                                      return 3451;
+                                                      return 3453;
                                                     }
                                                 }
                                               else
@@ -18260,7 +18282,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x11001x0011xxxxx110xxxxxxxxxxxxx
                                                      fmlallbt.  */
-                                                  return 3460;
+                                                  return 3462;
                                                 }
                                             }
                                           else
@@ -18292,7 +18314,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x0111xxxxx110xxxxxxxxxxxxx
                                                          fmlalltt.  */
-                                                      return 3464;
+                                                      return 3466;
                                                     }
                                                 }
                                               else
@@ -18591,7 +18613,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  111001x0xx1xxxxx001xxxxxxxxxxxxx
                                                  st1q.  */
-                                              return 3361;
+                                              return 3363;
                                             }
                                         }
                                       else
@@ -18606,7 +18628,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0001xxxxx1010xxxxxxxxxxxx
                                                          fmlalltb.  */
-                                                      return 3461;
+                                                      return 3463;
                                                     }
                                                   else
                                                     {
@@ -18614,7 +18636,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x11001x0001xxxxx1011xxxxxxxxxxxx
                                                          fmlalltt.  */
-                                                      return 3463;
+                                                      return 3465;
                                                     }
                                                 }
                                               else
@@ -19332,7 +19354,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                      10987654321098765432109876543210
                                                                                      000001x1001010x0001110xxxxxxxxxx
                                                                                      pmov.  */
-                                                                                  return 3346;
+                                                                                  return 3348;
                                                                                 }
                                                                               else
                                                                                 {
@@ -19340,7 +19362,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                      10987654321098765432109876543210
                                                                                      000001x1001011x0001110xxxxxxxxxx
                                                                                      pmov.  */
-                                                                                  return 3347;
+                                                                                  return 3349;
                                                                                 }
                                                                             }
                                                                           else
@@ -19349,7 +19371,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  000001x101101xx0001110xxxxxxxxxx
                                                                                  pmov.  */
-                                                                              return 3348;
+                                                                              return 3350;
                                                                             }
                                                                         }
                                                                       else
@@ -19358,7 +19380,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              000001x11x101xx0001110xxxxxxxxxx
                                                                              pmov.  */
-                                                                          return 3349;
+                                                                          return 3351;
                                                                         }
                                                                     }
                                                                   else
@@ -19404,7 +19426,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  000001x1001x10x1001110xxxxxxxxxx
                                                                                  pmov.  */
-                                                                              return 3350;
+                                                                              return 3352;
                                                                             }
                                                                           else
                                                                             {
@@ -19412,7 +19434,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                                  10987654321098765432109876543210
                                                                                  000001x1001x11x1001110xxxxxxxxxx
                                                                                  pmov.  */
-                                                                              return 3351;
+                                                                              return 3353;
                                                                             }
                                                                         }
                                                                       else
@@ -19421,7 +19443,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              000001x1011x1xx1001110xxxxxxxxxx
                                                                              pmov.  */
-                                                                          return 3352;
+                                                                          return 3354;
                                                                         }
                                                                     }
                                                                   else
@@ -19430,7 +19452,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          000001x11x1x1xx1001110xxxxxxxxxx
                                                                          pmov.  */
-                                                                      return 3353;
+                                                                      return 3355;
                                                                     }
                                                                 }
                                                             }
@@ -19449,7 +19471,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x1x01xxxxx001001xxxxxxxxxx
                                                                  dupq.  */
-                                                              return 3337;
+                                                              return 3339;
                                                             }
                                                           else
                                                             {
@@ -19457,7 +19479,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x1x11xxxxx001001xxxxxxxxxx
                                                                  extq.  */
-                                                              return 3341;
+                                                              return 3343;
                                                             }
                                                         }
                                                       else
@@ -19466,7 +19488,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x1xx1xxxxx001101xxxxxxxxxx
                                                              tbxq.  */
-                                                          return 3340;
+                                                          return 3342;
                                                         }
                                                     }
                                                   else
@@ -21069,7 +21091,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x1xx1xxxxx101100xxxxxxxxxx
                                                              luti2.  */
-                                                          return 3423;
+                                                          return 3425;
                                                         }
                                                     }
                                                   else
@@ -21078,7 +21100,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x1xx1xxxxx101x10xxxxxxxxxx
                                                          luti2.  */
-                                                      return 3424;
+                                                      return 3426;
                                                     }
                                                 }
                                               else
@@ -21091,7 +21113,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x1xx1xxxxx101001xxxxxxxxxx
                                                              luti4.  */
-                                                          return 3425;
+                                                          return 3427;
                                                         }
                                                       else
                                                         {
@@ -21099,7 +21121,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              010001x1xx1xxxxx101101xxxxxxxxxx
                                                              luti4.  */
-                                                          return 3426;
+                                                          return 3428;
                                                         }
                                                     }
                                                   else
@@ -21108,7 +21130,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          010001x1xx1xxxxx101x11xxxxxxxxxx
                                                          luti4.  */
-                                                      return 3427;
+                                                      return 3429;
                                                     }
                                                 }
                                             }
@@ -22059,7 +22081,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x00xxxxxxxxxx
                                                                              f1cvt.  */
-                                                                          return 3385;
+                                                                          return 3387;
                                                                         }
                                                                       else
                                                                         {
@@ -22067,7 +22089,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x10xxxxxxxxxx
                                                                              bf1cvt.  */
-                                                                          return 3381;
+                                                                          return 3383;
                                                                         }
                                                                     }
                                                                   else
@@ -22078,7 +22100,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x01xxxxxxxxxx
                                                                              f2cvt.  */
-                                                                          return 3386;
+                                                                          return 3388;
                                                                         }
                                                                       else
                                                                         {
@@ -22086,7 +22108,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x1xx001000001x11xxxxxxxxxx
                                                                              bf2cvt.  */
-                                                                          return 3382;
+                                                                          return 3384;
                                                                         }
                                                                     }
                                                                 }
@@ -22131,7 +22153,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x00xxxxxxxxxx
                                                                          fcvtn.  */
-                                                                      return 3390;
+                                                                      return 3392;
                                                                     }
                                                                   else
                                                                     {
@@ -22139,7 +22161,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x10xxxxxxxxxx
                                                                          bfcvtn.  */
-                                                                      return 3389;
+                                                                      return 3391;
                                                                     }
                                                                 }
                                                               else
@@ -22150,7 +22172,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x01xxxxxxxxxx
                                                                          fcvtnb.  */
-                                                                      return 3391;
+                                                                      return 3393;
                                                                     }
                                                                   else
                                                                     {
@@ -22158,7 +22180,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1010001x11xxxxxxxxxx
                                                                          fcvtnt.  */
-                                                                      return 3392;
+                                                                      return 3394;
                                                                     }
                                                                 }
                                                             }
@@ -22219,7 +22241,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x00xxxxxxxxxx
                                                                          f1cvtlt.  */
-                                                                      return 3387;
+                                                                      return 3389;
                                                                     }
                                                                   else
                                                                     {
@@ -22227,7 +22249,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x10xxxxxxxxxx
                                                                          bf1cvtlt.  */
-                                                                      return 3383;
+                                                                      return 3385;
                                                                     }
                                                                 }
                                                               else
@@ -22238,7 +22260,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x01xxxxxxxxxx
                                                                          f2cvtlt.  */
-                                                                      return 3388;
+                                                                      return 3390;
                                                                     }
                                                                   else
                                                                     {
@@ -22246,7 +22268,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1xx0x1001001x11xxxxxxxxxx
                                                                          bf2cvtlt.  */
-                                                                      return 3384;
+                                                                      return 3386;
                                                                     }
                                                                 }
                                                             }
@@ -23572,7 +23594,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x10x01xxxx111xxxxxxxxxxxxx
                                                          ld3q.  */
-                                                      return 3356;
+                                                      return 3358;
                                                     }
                                                   else
                                                     {
@@ -23580,7 +23602,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x11x01xxxx111xxxxxxxxxxxxx
                                                          ld4q.  */
-                                                      return 3357;
+                                                      return 3359;
                                                     }
                                                 }
                                             }
@@ -24753,7 +24775,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x10x1xxxxx100xxxxxxxxxxxxx
                                                      ld3q.  */
-                                                  return 3359;
+                                                  return 3361;
                                                 }
                                               else
                                                 {
@@ -24761,7 +24783,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x11x1xxxxx100xxxxxxxxxxxxx
                                                      ld4q.  */
-                                                  return 3360;
+                                                  return 3362;
                                                 }
                                             }
                                           else
@@ -26826,7 +26848,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110100xxxxxxxx100xxxxxxxxxx
                                                          luti2.  */
-                                                      return 3419;
+                                                      return 3421;
                                                     }
                                                 }
                                             }
@@ -26840,7 +26862,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110010xxxxxxxx000xxxxxxxxxx
                                                          luti4.  */
-                                                      return 3421;
+                                                      return 3423;
                                                     }
                                                   else
                                                     {
@@ -26848,7 +26870,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110010xxxxxxxx100xxxxxxxxxx
                                                          luti4.  */
-                                                      return 3422;
+                                                      return 3424;
                                                     }
                                                 }
                                               else
@@ -26857,7 +26879,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      0x001110110xxxxxxxxx00xxxxxxxxxx
                                                      luti2.  */
-                                                  return 3420;
+                                                  return 3422;
                                                 }
                                             }
                                         }
@@ -26973,7 +26995,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110x00xxxxxx10001xxxxxxxxxx
                                                                  fmlallbb.  */
-                                                              return 3443;
+                                                              return 3445;
                                                             }
                                                           else
                                                             {
@@ -26981,7 +27003,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110x00xxxxxx10001xxxxxxxxxx
                                                                  fmlalltb.  */
-                                                              return 3445;
+                                                              return 3447;
                                                             }
                                                         }
                                                       else
@@ -26992,7 +27014,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110x10xxxxxx10001xxxxxxxxxx
                                                                  fmlallbt.  */
-                                                              return 3444;
+                                                              return 3446;
                                                             }
                                                           else
                                                             {
@@ -27000,7 +27022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110x10xxxxxx10001xxxxxxxxxx
                                                                  fmlalltt.  */
-                                                              return 3446;
+                                                              return 3448;
                                                             }
                                                         }
                                                     }
@@ -27088,7 +27110,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110x00xxxxxx11101xxxxxxxxxx
                                                                  fcvtn.  */
-                                                              return 3376;
+                                                              return 3378;
                                                             }
                                                           else
                                                             {
@@ -27096,7 +27118,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110x00xxxxxx11101xxxxxxxxxx
                                                                  fcvtn2.  */
-                                                              return 3377;
+                                                              return 3379;
                                                             }
                                                         }
                                                       else
@@ -27105,7 +27127,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110x10xxxxxx11101xxxxxxxxxx
                                                              fcvtn.  */
-                                                          return 3378;
+                                                          return 3380;
                                                         }
                                                     }
                                                 }
@@ -27248,7 +27270,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110x00xxxxxx11111xxxxxxxxxx
                                                              fdot.  */
-                                                          return 3435;
+                                                          return 3437;
                                                         }
                                                       else
                                                         {
@@ -27258,7 +27280,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110010xxxxxx11111xxxxxxxxxx
                                                                  fdot.  */
-                                                              return 3437;
+                                                              return 3439;
                                                             }
                                                           else
                                                             {
@@ -27268,7 +27290,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00001110110xxxxxx11111xxxxxxxxxx
                                                                      fmlalb.  */
-                                                                  return 3439;
+                                                                  return 3441;
                                                                 }
                                                               else
                                                                 {
@@ -27276,7 +27298,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01001110110xxxxxx11111xxxxxxxxxx
                                                                      fmlalt.  */
-                                                                  return 3440;
+                                                                  return 3442;
                                                                 }
                                                             }
                                                         }
@@ -27550,7 +27572,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110110xxxxx0x1111xxxxxxxxxx
                                                              fscale.  */
-                                                          return 3379;
+                                                          return 3381;
                                                         }
                                                     }
                                                 }
@@ -28942,7 +28964,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110001xxxx1011110xxxxxxxxxx
                                                                          f1cvtl.  */
-                                                                      return 3372;
+                                                                      return 3374;
                                                                     }
                                                                   else
                                                                     {
@@ -28950,7 +28972,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110001xxxx1011110xxxxxxxxxx
                                                                          f1cvtl2.  */
-                                                                      return 3373;
+                                                                      return 3375;
                                                                     }
                                                                 }
                                                               else
@@ -28961,7 +28983,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110101xxxx1011110xxxxxxxxxx
                                                                          bf1cvtl.  */
-                                                                      return 3368;
+                                                                      return 3370;
                                                                     }
                                                                   else
                                                                     {
@@ -28969,7 +28991,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110101xxxx1011110xxxxxxxxxx
                                                                          bf1cvtl2.  */
-                                                                      return 3369;
+                                                                      return 3371;
                                                                     }
                                                                 }
                                                             }
@@ -28983,7 +29005,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110011xxxx1011110xxxxxxxxxx
                                                                          f2cvtl.  */
-                                                                      return 3374;
+                                                                      return 3376;
                                                                     }
                                                                   else
                                                                     {
@@ -28991,7 +29013,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110011xxxx1011110xxxxxxxxxx
                                                                          f2cvtl2.  */
-                                                                      return 3375;
+                                                                      return 3377;
                                                                     }
                                                                 }
                                                               else
@@ -29002,7 +29024,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x0101110111xxxx1011110xxxxxxxxxx
                                                                          bf2cvtl.  */
-                                                                      return 3370;
+                                                                      return 3372;
                                                                     }
                                                                   else
                                                                     {
@@ -29010,7 +29032,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          x1101110111xxxx1011110xxxxxxxxxx
                                                                          bf2cvtl2.  */
-                                                                      return 3371;
+                                                                      return 3373;
                                                                     }
                                                                 }
                                                             }
@@ -31009,7 +31031,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011101x1xxxxx111111xxxxxxxxxx
                                                              fscale.  */
-                                                          return 3380;
+                                                          return 3382;
                                                         }
                                                     }
                                                 }
@@ -32725,7 +32747,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx00111100xxxxxx0000x0xxxxxxxxxx
                                                          fdot.  */
-                                                      return 3436;
+                                                      return 3438;
                                                     }
                                                   else
                                                     {
@@ -32755,7 +32777,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx00111101xxxxxx0000x0xxxxxxxxxx
                                                          fdot.  */
-                                                      return 3438;
+                                                      return 3440;
                                                     }
                                                   else
                                                     {
@@ -32765,7 +32787,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x000111111xxxxxx0000x0xxxxxxxxxx
                                                              fmlalb.  */
-                                                          return 3441;
+                                                          return 3443;
                                                         }
                                                       else
                                                         {
@@ -32773,7 +32795,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x100111111xxxxxx0000x0xxxxxxxxxx
                                                              fmlalt.  */
-                                                          return 3442;
+                                                          return 3444;
                                                         }
                                                     }
                                                 }
@@ -33315,7 +33337,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x010111100xxxxxx1000x0xxxxxxxxxx
                                                              fmlallbb.  */
-                                                          return 3447;
+                                                          return 3449;
                                                         }
                                                       else
                                                         {
@@ -33323,7 +33345,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x110111100xxxxxx1000x0xxxxxxxxxx
                                                              fmlalltb.  */
-                                                          return 3449;
+                                                          return 3451;
                                                         }
                                                     }
                                                   else
@@ -33354,7 +33376,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0101111x1xxxxxx1000x0xxxxxxxxxx
                                                          fmlallbt.  */
-                                                      return 3448;
+                                                      return 3450;
                                                     }
                                                   else
                                                     {
@@ -33362,7 +33384,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1101111x1xxxxxx1000x0xxxxxxxxxx
                                                          fmlalltt.  */
-                                                      return 3450;
+                                                      return 3452;
                                                     }
                                                 }
                                             }
index 28f9dd324f3b50e1a839456fd96e979bdc75c633..7619cd7acb7ee1f7a8f973459f94cc6353c1968f 100644 (file)
 {                                                       \
   QLF5(S_H,P_M,P_M,S_B,S_B)                             \
 }
+#define OP_SVE_HMMHH                               \
+{                                                     \
+  QLF5(S_H,P_M,P_M,S_H,S_H)                         \
+}
 #define OP_SVE_HMS                                      \
 {                                                       \
   QLF3(S_H,P_M,S_S),                                    \
@@ -2861,6 +2865,8 @@ static const aarch64_feature_set aarch64_feature_sme_f8f16 =
   AARCH64_FEATURES (2, SME_F8F32, SME2);
 static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 =
   AARCH64_FEATURES (2, SME_F16F16_F8F16, SME2);
+static const aarch64_feature_set aarch64_feature_sme_f16f16 =
+  AARCH64_FEATURES (2, SME_F16F16, SME2);
 
 #define CORE           &aarch64_feature_v8
 #define FP             &aarch64_feature_fp
@@ -2948,6 +2954,7 @@ static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 =
 #define SME_F8F32      &aarch64_feature_sme_f8f32
 #define SME_F8F16      &aarch64_feature_sme_f8f16
 #define SME_F16F16_F8F16 &aarch64_feature_sme_f16f16_f8f16
+#define SME_F16F16     &aarch64_feature_sme_f16f16
 
 #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \
   { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, 0, NULL }
@@ -3169,6 +3176,9 @@ static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 =
   { NAME, OPCODE, MASK, CLASS, 0, SME_F8F16, OPS, QUALS, F_STRICT | FLAGS, CONSTRAINTS, 0, NULL }
 #define SME_F16F16_F8F16_INSNC(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,CONSTRAINTS) \
   { NAME, OPCODE, MASK, CLASS, 0, SME_F16F16_F8F16, OPS, QUALS, F_STRICT | FLAGS, CONSTRAINTS, 0, NULL }
+#define SME_F16F16_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \
+  { NAME, OPCODE, MASK, CLASS, OP, SME_F16F16, OPS, QUALS, \
+    FLAGS | F_STRICT, 0, TIED, NULL }
 
 #define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \
   MOPS_INSN (NAME, OPCODE, MASK, 0, \
@@ -6686,6 +6696,10 @@ const struct aarch64_opcode aarch64_opcode_table[] =
   SME2p1_INSN ("zero", 0xc00f0000, 0xffff9ffe, sme2_movaz, 0, OP1 (SME_ZA_array_off1x4), OP_SVE_D, F_OD (2) | F_VG_REQ, 0),
   SME2p1_INSN ("zero", 0xc00f8000, 0xffff9ffe, sme2_movaz, 0, OP1 (SME_ZA_array_off1x4), OP_SVE_D, F_OD (4) | F_VG_REQ, 0),
 
+/* SME2.1 half-precision floating-point instructions.  */
+  SME_F16F16_INSN("fmopa", 0x81800008, 0xffe0001e, sme_misc, 0, OP5 (SME_ZAda_1b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SVE_HMMHH, 0, 0),
+  SME_F16F16_INSN("fmops", 0x81800018, 0xffe0001e, sme_misc, 0, OP5 (SME_ZAda_1b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SVE_HMMHH, 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),