]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Add generated source files and fix thinko in aarch64-asm.c
authorNick Clifton <nickc@redhat.com>
Mon, 15 Jan 2024 11:45:28 +0000 (11:45 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 15 Jan 2024 11:45:42 +0000 (11:45 +0000)
opcodes/aarch64-asm-2.c
opcodes/aarch64-asm.c
opcodes/aarch64-dis-2.c
opcodes/aarch64-opc-2.c

index 6d5aebbaa425928cec61d189e885a9acf6047e01..2b7afd2f4409c4a3e2b398cd5052a6d78c0e67e3 100644 (file)
@@ -670,26 +670,26 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 204:
     case 205:
     case 206:
-    case 207:
-    case 208:
-    case 209:
-    case 210:
-    case 211:
+    case 215:
+    case 216:
+    case 217:
     case 218:
-    case 221:
-    case 225:
-    case 232:
-    case 233:
-    case 240:
-    case 241:
+    case 219:
+    case 227:
+    case 231:
+    case 235:
     case 242:
     case 243:
+    case 250:
+    case 251:
+    case 252:
+    case 253:
       return aarch64_ins_regno (self, info, code, inst, errors);
     case 6:
     case 113:
     case 114:
-    case 275:
-    case 277:
+    case 285:
+    case 287:
       return aarch64_ins_none (self, info, code, inst, errors);
     case 17:
       return aarch64_ins_reg_extended (self, info, code, inst, errors);
@@ -701,7 +701,7 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 35:
     case 36:
     case 37:
-    case 279:
+    case 289:
       return aarch64_ins_reglane (self, info, code, inst, errors);
     case 38:
       return aarch64_ins_reglist (self, info, code, inst, errors);
@@ -747,13 +747,13 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 200:
     case 201:
     case 202:
-    case 246:
-    case 273:
-    case 274:
-    case 276:
-    case 278:
+    case 256:
     case 283:
     case 284:
+    case 286:
+    case 288:
+    case 293:
+    case 294:
       return aarch64_ins_imm (self, info, code, inst, errors);
     case 46:
     case 47:
@@ -901,74 +901,90 @@ aarch64_insert_operand (const aarch64_operand *self,
     case 192:
     case 193:
     case 194:
-    case 259:
+    case 269:
       return aarch64_ins_sve_shrimm (self, info, code, inst, errors);
+    case 207:
+    case 208:
+    case 209:
+    case 210:
+      return aarch64_ins_sme_za_vrs1 (self, info, code, inst, errors);
+    case 211:
     case 212:
     case 213:
     case 214:
-    case 215:
-    case 216:
-    case 217:
-      return aarch64_ins_sve_quad_index (self, info, code, inst, errors);
-    case 219:
-      return aarch64_ins_sve_index (self, info, code, inst, errors);
+      return aarch64_ins_sme_za_vrs2 (self, info, code, inst, errors);
     case 220:
+    case 221:
     case 222:
-    case 239:
-      return aarch64_ins_sve_reglist (self, info, code, inst, errors);
     case 223:
     case 224:
+    case 225:
     case 226:
-    case 227:
+      return aarch64_ins_sve_quad_index (self, info, code, inst, errors);
     case 228:
+      return aarch64_ins_sve_index_imm (self, info, code, inst, errors);
     case 229:
-    case 238:
-      return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors);
+      return aarch64_ins_sve_index (self, info, code, inst, errors);
     case 230:
-    case 231:
-      return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors);
+    case 232:
+    case 249:
+    case 295:
+    case 296:
+    case 297:
+      return aarch64_ins_sve_reglist (self, info, code, inst, errors);
+    case 233:
     case 234:
     case 236:
-    case 247:
-      return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors);
-    case 235:
     case 237:
-      return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors);
+    case 238:
+    case 239:
+    case 248:
+      return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors);
+    case 240:
+    case 241:
+      return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors);
     case 244:
+    case 246:
+    case 257:
+      return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors);
     case 245:
+    case 247:
+      return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors);
+    case 254:
+    case 255:
+    case 270:
+    case 271:
+    case 272:
+    case 273:
+    case 274:
+    case 275:
+    case 276:
+    case 277:
+    case 278:
+    case 279:
+    case 280:
+    case 281:
+    case 282:
+      return aarch64_ins_simple_index (self, info, code, inst, errors);
+    case 258:
+    case 259:
     case 260:
     case 261:
     case 262:
     case 263:
     case 264:
-    case 265:
-    case 266:
-    case 267:
-    case 268:
-    case 269:
-    case 270:
-    case 271:
-    case 272:
-      return aarch64_ins_simple_index (self, info, code, inst, errors);
-    case 248:
-    case 249:
-    case 250:
-    case 251:
-    case 252:
-    case 253:
-    case 254:
       return aarch64_ins_sme_za_array (self, info, code, inst, errors);
-    case 255:
+    case 265:
       return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors);
-    case 256:
+    case 266:
       return aarch64_ins_sme_sm_za (self, info, code, inst, errors);
-    case 257:
+    case 267:
       return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors);
-    case 258:
+    case 268:
       return aarch64_ins_plain_shrimm (self, info, code, inst, errors);
-    case 280:
-    case 281:
-    case 282:
+    case 290:
+    case 291:
+    case 292:
       return aarch64_ins_x0_to_x30 (self, info, code, inst, errors);
     default: assert (0); abort ();
     }
index 0de09f0435abc3b7761707b2c81c58f5f3b1a10e..4d0b13e4c5aa33b8192a298990f8ce6ca3cd8ae8 100644 (file)
@@ -1999,7 +1999,7 @@ do_special_encoding (struct aarch64_inst *inst)
 
   if ((inst->opcode->flags & F_OPD_SIZE) && inst->opcode->iclass == sve2_urqvs)
     {
-      enum aarch64_opnd_qualifier qualifier[1];
+      enum aarch64_opnd_qualifier qualifier[2];
       aarch64_insn value1 = 0;
       idx = 0;
       qualifier[0] = inst->operands[idx].qualifier;
index cfaecb5c1620462a9099b37f5e20f74a2c0f9eb1..31c7f66f9b48c8b7063e7bf3de0681478ffb99a3 100644 (file)
@@ -252,11 +252,55 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x1000000xx0x011xxxxx00xxxxxxxxxx
-                                                         mov.  */
-                                                      return 2655;
+                                                      if (((word >> 9) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1000000xx0x011xxxxx000xxxxxxxxx
+                                                             mov.  */
+                                                          return 2655;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     x1000000000x011xxxxx001xxxxxxxxx
+                                                                     movaz.  */
+                                                                  return 3283;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     x1000000100x011xxxxx001xxxxxxxxx
+                                                                     movaz.  */
+                                                                  return 3285;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     x1000000010x011xxxxx001xxxxxxxxx
+                                                                     movaz.  */
+                                                                  return 3284;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     x1000000110x011xxxxx001xxxxxxxxx
+                                                                     movaz.  */
+                                                                  return 3286;
+                                                                }
+                                                            }
+                                                        }
                                                     }
                                                 }
                                               else
@@ -346,11 +390,55 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x1000000xx0xx11xxxxx01xxxxxxxxxx
-                                                     mov.  */
-                                                  return 2656;
+                                                  if (((word >> 9) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1000000xx0xx11xxxxx010xxxxxxxxx
+                                                         mov.  */
+                                                      return 2656;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1000000000xx11xxxxx011xxxxxxxxx
+                                                                 movaz.  */
+                                                              return 3279;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1000000100xx11xxxxx011xxxxxxxxx
+                                                                 movaz.  */
+                                                              return 3281;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1000000010xx11xxxxx011xxxxxxxxx
+                                                                 movaz.  */
+                                                              return 3280;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1000000110xx11xxxxx011xxxxxxxxx
+                                                                 movaz.  */
+                                                              return 3282;
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                             }
                                           else
@@ -13332,55 +13420,143 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 17) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 16) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx000x00001xxxxxxxxxxxxx
-                                                                 saddv.  */
-                                                              return 1855;
+                                                              if (((word >> 16) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000000001xxxxxxxxxxxxx
+                                                                     saddv.  */
+                                                                  return 1855;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000001001xxxxxxxxxxxxx
+                                                                     uaddv.  */
+                                                                  return 2008;
+                                                                }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx000x01001xxxxxxxxxxxxx
-                                                                 uaddv.  */
-                                                              return 2008;
+                                                                 000001x0xx01000x001xxxxxxxxxxxxx
+                                                                 movprfx.  */
+                                                              return 1789;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx010x0x001xxxxxxxxxxxxx
-                                                             movprfx.  */
-                                                          return 1789;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001000001xxxxxxxxxxxxx
+                                                                     smaxv.  */
+                                                                  return 1873;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011000001xxxxxxxxxxxxx
+                                                                     orv.  */
+                                                                  return 1806;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001001001xxxxxxxxxxxxx
+                                                                     umaxv.  */
+                                                                  return 2023;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011001001xxxxxxxxxxxxx
+                                                                     eorv.  */
+                                                                  return 1420;
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
                                                       if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx0xx100001xxxxxxxxxxxxx
+                                                             smaxqv.  */
+                                                          return 3289;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0101001xxxxxxxxxxxxx
+                                                                 addqv.  */
+                                                              return 3287;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001101001xxxxxxxxxxxxx
+                                                                     umaxqv.  */
+                                                                  return 3291;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011101001xxxxxxxxxxxxx
+                                                                     eorqv.  */
+                                                                  return 3293;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx001x00001xxxxxxxxxxxxx
-                                                                 smaxv.  */
-                                                              return 1873;
+                                                                 000001x0xx00x010001xxxxxxxxxxxxx
+                                                                 sminv.  */
+                                                              return 1876;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx011x00001xxxxxxxxxxxxx
-                                                                 orv.  */
-                                                              return 1806;
+                                                                 000001x0xx01x010001xxxxxxxxxxxxx
+                                                                 andv.  */
+                                                              return 1333;
                                                             }
                                                         }
                                                       else
@@ -13389,50 +13565,39 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx001x01001xxxxxxxxxxxxx
-                                                                 umaxv.  */
-                                                              return 2023;
+                                                                 000001x0xx00x110001xxxxxxxxxxxxx
+                                                                 sminqv.  */
+                                                              return 3290;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx011x01001xxxxxxxxxxxxx
-                                                                 eorv.  */
-                                                              return 1420;
+                                                                 000001x0xx01x110001xxxxxxxxxxxxx
+                                                                 andqv.  */
+                                                              return 3288;
                                                             }
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  else
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x0xx00xx10001xxxxxxxxxxxxx
-                                                             sminv.  */
-                                                          return 1876;
+                                                             000001x0xx0xx011001xxxxxxxxxxxxx
+                                                             uminv.  */
+                                                          return 2026;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x0xx01xx10001xxxxxxxxxxxxx
-                                                             andv.  */
-                                                          return 1333;
+                                                             000001x0xx0xx111001xxxxxxxxxxxxx
+                                                             uminqv.  */
+                                                          return 3292;
                                                         }
                                                     }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x0xx0xxx11001xxxxxxxxxxxxx
-                                                         uminv.  */
-                                                      return 2026;
-                                                    }
                                                 }
                                             }
                                           else
@@ -14168,21 +14333,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     110001x00x0xxxxx101xxxxxxxxxxxxx
-                                                     ldff1sb.  */
-                                                  return 1712;
+                                                     110001x0x00xxxxx101xxxxxxxxxxxxx
+                                                     ld1q.  */
+                                                  return 3301;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     110001x01x0xxxxx101xxxxxxxxxxxxx
-                                                     ldff1sh.  */
-                                                  return 1723;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0010xxxxx101xxxxxxxxxxxxx
+                                                         ldff1sb.  */
+                                                      return 1712;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0110xxxxx101xxxxxxxxxxxxx
+                                                         ldff1sh.  */
+                                                      return 1723;
+                                                    }
                                                 }
                                             }
                                         }
@@ -15632,31 +15808,64 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 13) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 111001x0x00xxxxx0x0xxxxxxxxxxxxx
-                                                 st1b.  */
-                                              return 1911;
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0x00xxxxx000xxxxxxxxxxxxx
+                                                     st3q.  */
+                                                  return 3310;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0010xxxxx000xxxxxxxxxxxxx
+                                                         st2q.  */
+                                                      return 3309;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0110xxxxx000xxxxxxxxxxxxx
+                                                         st4q.  */
+                                                      return 3311;
+                                                    }
+                                                }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0010xxxxx0x0xxxxxxxxxxxxx
+                                                     111001x0x00xxxxx010xxxxxxxxxxxxx
                                                      st1b.  */
-                                                  return 1915;
+                                                  return 1911;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0110xxxxx0x0xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1936;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0010xxxxx010xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1915;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0110xxxxx010xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1936;
+                                                    }
                                                 }
                                             }
                                         }
@@ -16058,99 +16267,154 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 31) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         011001x0000xxxxx101xxxxxxxxxxxxx
-                                                         fcvtxnt.  */
-                                                      return 2121;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         111001x0000xxxxx101xxxxxxxxxxxxx
-                                                         st1b.  */
-                                                      return 1913;
-                                                    }
-                                                }
-                                              else
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 31) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 17) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 011001x0100xxx00101xxxxxxxxxxxxx
-                                                                 fcvtnt.  */
-                                                              return 2118;
+                                                                 011001x0xx0x0000101xxxxxxxxxxxxx
+                                                                 faddqv.  */
+                                                              return 3294;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 011001x0100xxx10101xxxxxxxxxxxxx
-                                                                 bfcvtnt.  */
-                                                              return 3050;
+                                                                 011001x0xx0x1000101xxxxxxxxxxxxx
+                                                                 fcvtnt.  */
+                                                              return 2118;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             011001x0100xxxx1101xxxxxxxxxxxxx
-                                                             fcvtlt.  */
-                                                          return 2116;
+                                                             011001x0xx0xx100101xxxxxxxxxxxxx
+                                                             fmaxnmqv.  */
+                                                          return 3295;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         111001x0100xxxxx101xxxxxxxxxxxxx
-                                                         st1h.  */
-                                                      return 1932;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0000xx010101xxxxxxxxxxxxx
+                                                                     fcvtxnt.  */
+                                                                  return 2121;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x0100xx010101xxxxxxxxxxxxx
+                                                                     bfcvtnt.  */
+                                                                  return 3050;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0x10xx010101xxxxxxxxxxxxx
+                                                                 fcvtnt.  */
+                                                              return 2119;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx110101xxxxxxxxxxxxx
+                                                             fmaxqv.  */
+                                                          return 3296;
+                                                        }
                                                     }
                                                 }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0010xxxxx101xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1920;
-                                                }
                                               else
                                                 {
-                                                  if (((word >> 31) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             011001x0110xxxx0101xxxxxxxxxxxxx
-                                                             fcvtnt.  */
-                                                          return 2119;
+                                                             011001x0xx0xx001101xxxxxxxxxxxxx
+                                                             fcvtlt.  */
+                                                          return 2116;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             011001x0110xxxx1101xxxxxxxxxxxxx
+                                                             011001x0xx0xx101101xxxxxxxxxxxxx
+                                                             fminnmqv.  */
+                                                          return 3297;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx011101xxxxxxxxxxxxx
                                                              fcvtlt.  */
                                                           return 2117;
                                                         }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0xx0xx111101xxxxxxxxxxxxx
+                                                             fminqv.  */
+                                                          return 3298;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0000xxxxx101xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1913;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0100xxxxx101xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1932;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0010xxxxx101xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1920;
                                                     }
                                                   else
                                                     {
@@ -16189,43 +16453,54 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 20) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0000xxxxx111xxxxxxxxxxxxx
-                                                         ldnt1b.  */
-                                                      return 1763;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00000xxxx111xxxxxxxxxxxxx
+                                                             ldnt1b.  */
+                                                          return 1763;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01000xxxx111xxxxxxxxxxxxx
+                                                             ldnt1h.  */
+                                                          return 1767;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0100xxxxx111xxxxxxxxxxxxx
-                                                         ldnt1h.  */
-                                                      return 1767;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00100xxxx111xxxxxxxxxxxxx
+                                                             ld3b.  */
+                                                          return 1655;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01100xxxx111xxxxxxxxxxxxx
+                                                             ld3h.  */
+                                                          return 1659;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0010xxxxx111xxxxxxxxxxxxx
-                                                         ld3b.  */
-                                                      return 1655;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0110xxxxx111xxxxxxxxxxxxx
-                                                         ld3h.  */
-                                                      return 1659;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x0xx01xxxx111xxxxxxxxxxxxx
+                                                     ld2q.  */
+                                                  return 3302;
                                                 }
                                             }
                                         }
@@ -16446,86 +16721,141 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 14) & 0x1) == 0)
                                         {
-                                          if (((word >> 12) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 10) & 0x1) == 0)
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00x1xxxxx0000x0xxxxxxxxxx
-                                                         fmla.  */
-                                                      return 1485;
-                                                    }
-                                                  else
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0101xxxxx0000x0xxxxxxxxxx
+                                                             011001x00x1xxxxx000x00xxxxxxxxxx
                                                              fmla.  */
-                                                          return 1486;
+                                                          return 1485;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0111xxxxx0000x0xxxxxxxxxx
-                                                             fmla.  */
-                                                          return 1487;
+                                                             011001x00x1xxxxx000x10xxxxxxxxxx
+                                                             bfmla.  */
+                                                          return 3276;
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00x1xxxxx0000x1xxxxxxxxxx
-                                                         fmls.  */
-                                                      return 1489;
-                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0101xxxxx0000x1xxxxxxxxxx
+                                                             011001x00x1xxxxx000x01xxxxxxxxxx
                                                              fmls.  */
-                                                          return 1490;
+                                                          return 1489;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0111xxxxx0000x1xxxxxxxxxx
-                                                             fmls.  */
-                                                          return 1491;
+                                                             011001x00x1xxxxx000x11xxxxxxxxxx
+                                                             bfmls.  */
+                                                          return 3277;
                                                         }
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x00x1xxxxx000xxxxxxxxxxxxx
+                                                     st2q.  */
+                                                  return 3312;
+                                                }
                                             }
                                           else
                                             {
                                               if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0x01xxxxx0001xxxxxxxxxxxx
-                                                     fcmla.  */
-                                                  return 1433;
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 10) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0101xxxxx0000x0xxxxxxxxxx
+                                                                 fmla.  */
+                                                              return 1486;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0101xxxxx0000x1xxxxxxxxxx
+                                                                 fmls.  */
+                                                              return 1490;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0101xxxxx0001xxxxxxxxxxxx
+                                                             fcmla.  */
+                                                          return 1433;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0101xxxxx000xxxxxxxxxxxxx
+                                                         st3q.  */
+                                                      return 3313;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0x11xxxxx0001xxxxxxxxxxxx
-                                                     fcmla.  */
-                                                  return 1434;
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 10) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0111xxxxx0000x0xxxxxxxxxx
+                                                                 fmla.  */
+                                                              return 1487;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0111xxxxx0000x1xxxxxxxxxx
+                                                                 fmls.  */
+                                                              return 1491;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0111xxxxx0001xxxxxxxxxxxx
+                                                             fcmla.  */
+                                                          return 1434;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0111xxxxx000xxxxxxxxxxxxx
+                                                         st4q.  */
+                                                      return 3314;
+                                                    }
                                                 }
                                             }
                                         }
@@ -16949,43 +17279,65 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 10) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x00x1xxxxx001xx0xxxxxxxxxx
-                                                     fmul.  */
-                                                  return 1496;
-                                                }
-                                              else
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x0101xxxxx001xx0xxxxxxxxxx
-                                                         fmul.  */
-                                                      return 1497;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x00x1xxxxx001x00xxxxxxxxxx
+                                                             fmul.  */
+                                                          return 1496;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0101xxxxx001x00xxxxxxxxxx
+                                                                 fmul.  */
+                                                              return 1497;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0111xxxxx001x00xxxxxxxxxx
+                                                                 fmul.  */
+                                                              return 1498;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x0111xxxxx001xx0xxxxxxxxxx
-                                                         fmul.  */
-                                                      return 1498;
+                                                         011001x0xx1xxxxx001x10xxxxxxxxxx
+                                                         bfmul.  */
+                                                      return 3278;
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x0xx1xxxxx001xx1xxxxxxxxxx
+                                                     fclamp.  */
+                                                  return 2456;
+                                                }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 x11001x0xx1xxxxx001xx1xxxxxxxxxx
-                                                 fclamp.  */
-                                              return 2456;
+                                                 111001x0xx1xxxxx001xxxxxxxxxxxxx
+                                                 st1q.  */
+                                              return 3308;
                                             }
                                         }
                                       else
@@ -17723,11 +18075,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     000001x1xx1xxxxx001xx1xxxxxxxxxx
-                                                     tbx.  */
-                                                  return 2299;
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1x01xxxxx001x01xxxxxxxxxx
+                                                             dupq.  */
+                                                          return 3299;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1x11xxxxx001x01xxxxxxxxxx
+                                                             extq.  */
+                                                          return 3300;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1xxxxx001x11xxxxxxxxxx
+                                                         tbx.  */
+                                                      return 2299;
+                                                    }
                                                 }
                                             }
                                           else
@@ -21587,23 +21961,45 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 20) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x1000xxxxx111xxxxxxxxxxxxx
-                                                         ldnt1w.  */
-                                                      return 1769;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x10000xxxx111xxxxxxxxxxxxx
+                                                             ldnt1w.  */
+                                                          return 1769;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x11000xxxx111xxxxxxxxxxxxx
+                                                             ldnt1d.  */
+                                                          return 1765;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x1100xxxxx111xxxxxxxxxxxxx
-                                                         ldnt1d.  */
-                                                      return 1765;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x10100xxxx111xxxxxxxxxxxxx
+                                                             ld3w.  */
+                                                          return 1661;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x11100xxxx111xxxxxxxxxxxxx
+                                                             ld3d.  */
+                                                          return 1657;
+                                                        }
                                                     }
                                                 }
                                               else
@@ -21612,17 +22008,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x1010xxxxx111xxxxxxxxxxxxx
-                                                         ld3w.  */
-                                                      return 1661;
+                                                         101001x10x01xxxx111xxxxxxxxxxxxx
+                                                         ld3q.  */
+                                                      return 3303;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x1110xxxxx111xxxxxxxxxxxxx
-                                                         ld3d.  */
-                                                      return 1657;
+                                                         101001x11x01xxxx111xxxxxxxxxxxxx
+                                                         ld4q.  */
+                                                      return 3304;
                                                     }
                                                 }
                                             }
@@ -22546,127 +22942,94 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   if (((word >> 14) & 0x1) == 0)
                                     {
-                                      if (((word >> 20) & 0x1) == 0)
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 9) & 0x1) == 0)
                                             {
-                                              if (((word >> 9) & 0x1) == 0)
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     001001x1xx10000010xxxx0xxxxxxxxx
-                                                                     cntp.  */
-                                                                  return 1394;
-                                                                }
-                                                              else
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1x000010xxxx0xxxxxxxxx
+                                                                 cntp.  */
+                                                              return 1394;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 10) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 10) & 0x1) == 0)
+                                                                  if (((word >> 11) & 0x1) == 0)
                                                                     {
-                                                                      if (((word >> 11) & 0x1) == 0)
+                                                                      if (((word >> 12) & 0x1) == 0)
                                                                         {
-                                                                          if (((word >> 12) & 0x1) == 0)
-                                                                            {
-                                                                              /* 33222222222211111111110000000000
-                                                                                 10987654321098765432109876543210
-                                                                                 001001x1xx10100010x0000xxxxxxxxx
-                                                                                 sqincp.  */
-                                                                              return 1903;
-                                                                            }
-                                                                          else
-                                                                            {
-                                                                              /* 33222222222211111111110000000000
-                                                                                 10987654321098765432109876543210
-                                                                                 001001x1xx10100010x1000xxxxxxxxx
-                                                                                 wrffr.  */
-                                                                              return 2077;
-                                                                            }
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             001001x1xx1x100010x0000xxxxxxxxx
+                                                                             sqincp.  */
+                                                                          return 1903;
                                                                         }
                                                                       else
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             001001x1xx10100010xx100xxxxxxxxx
-                                                                             sqincp.  */
-                                                                          return 1905;
+                                                                             001001x1xx1x100010x1000xxxxxxxxx
+                                                                             wrffr.  */
+                                                                          return 2077;
                                                                         }
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         001001x1xx10100010xxx10xxxxxxxxx
+                                                                         001001x1xx1x100010xx100xxxxxxxxx
                                                                          sqincp.  */
-                                                                      return 1904;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 11) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 12) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         001001x1xx10x10010x00x0xxxxxxxxx
-                                                                         incp.  */
-                                                                      return 1532;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         001001x1xx10x10010x10x0xxxxxxxxx
-                                                                         setffr.  */
-                                                                      return 1870;
+                                                                      return 1905;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx10x10010xx1x0xxxxxxxxx
-                                                                     incp.  */
-                                                                  return 1533;
+                                                                     001001x1xx1x100010xxx10xxxxxxxxx
+                                                                     sqincp.  */
+                                                                  return 1904;
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 10) & 0x1) == 0)
+                                                          if (((word >> 11) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 11) & 0x1) == 0)
+                                                              if (((word >> 12) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx10xx1010xx000xxxxxxxxx
-                                                                     sqdecp.  */
-                                                                  return 1889;
+                                                                     001001x1xx1xx10010x00x0xxxxxxxxx
+                                                                     incp.  */
+                                                                  return 1532;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx10xx1010xx100xxxxxxxxx
-                                                                     sqdecp.  */
-                                                                  return 1891;
+                                                                     001001x1xx1xx10010x10x0xxxxxxxxx
+                                                                     setffr.  */
+                                                                  return 1870;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 001001x1xx10xx1010xxx10xxxxxxxxx
-                                                                 sqdecp.  */
-                                                              return 1890;
+                                                                 001001x1xx1xx10010xx1x0xxxxxxxxx
+                                                                 incp.  */
+                                                              return 1533;
                                                             }
                                                         }
                                                     }
@@ -22676,175 +23039,230 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 11) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 17) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         001001x1xx10x00110xx000xxxxxxxxx
-                                                                         uqincp.  */
-                                                                      return 2052;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         001001x1xx10x10110xx000xxxxxxxxx
-                                                                         decp.  */
-                                                                      return 1407;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     001001x1xx10xx1110xx000xxxxxxxxx
-                                                                     uqdecp.  */
-                                                                  return 2038;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxx1010xx000xxxxxxxxx
+                                                                 sqdecp.  */
+                                                              return 1889;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 17) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         001001x1xx10x00110xx100xxxxxxxxx
-                                                                         uqincp.  */
-                                                                      return 2053;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         001001x1xx10x10110xx100xxxxxxxxx
-                                                                         decp.  */
-                                                                      return 1408;
-                                                                    }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxx1010xx100xxxxxxxxx
+                                                                 sqdecp.  */
+                                                              return 1891;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             001001x1xx1xxx1010xxx10xxxxxxxxx
+                                                             sqdecp.  */
+                                                          return 1890;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     001001x1xx1xx00110xx000xxxxxxxxx
+                                                                     uqincp.  */
+                                                                  return 2052;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     001001x1xx10xx1110xx100xxxxxxxxx
-                                                                     uqdecp.  */
-                                                                  return 2039;
+                                                                     001001x1xx1xx10110xx000xxxxxxxxx
+                                                                     decp.  */
+                                                                  return 1407;
                                                                 }
                                                             }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxx1110xx000xxxxxxxxx
+                                                                 uqdecp.  */
+                                                              return 2038;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 17) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 001001x1xx10xx0110xxx10xxxxxxxxx
-                                                                 uqincp.  */
-                                                              return 2054;
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     001001x1xx1xx00110xx100xxxxxxxxx
+                                                                     uqincp.  */
+                                                                  return 2053;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     001001x1xx1xx10110xx100xxxxxxxxx
+                                                                     decp.  */
+                                                                  return 1408;
+                                                                }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 001001x1xx10xx1110xxx10xxxxxxxxx
+                                                                 001001x1xx1xxx1110xx100xxxxxxxxx
                                                                  uqdecp.  */
-                                                              return 2040;
+                                                              return 2039;
                                                             }
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x1xx10xxxx10xxxx1xxxxxxxxx
-                                                     cntp.  */
-                                                  return 2510;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x10010xxxx10xxxxxxxxxxxxxx
-                                                         ld1sh.  */
-                                                      return 1625;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x11010xxxx10xxxxxxxxxxxxxx
-                                                         ld1sb.  */
-                                                      return 1612;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x10110xxxx10xxxxxxxxxxxxxx
-                                                         ld1w.  */
-                                                      return 1644;
-                                                    }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x11110xxxx10xxxxxxxxxxxxxx
-                                                         ld1d.  */
-                                                      return 1564;
+                                                      if (((word >> 17) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             001001x1xx1xxx0110xxx10xxxxxxxxx
+                                                             uqincp.  */
+                                                          return 2054;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             001001x1xx1xxx1110xxx10xxxxxxxxx
+                                                             uqdecp.  */
+                                                          return 2040;
+                                                        }
                                                     }
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 001001x1xx1xxxxx10xxxx1xxxxxxxxx
+                                                 cntp.  */
+                                              return 2510;
+                                            }
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x01001x10011xxxx10xxxxxxxxxxxxxx
-                                                     ldnf1sh.  */
-                                                  return 1758;
+                                                     101001x10x1xxxxx100xxxxxxxxxxxxx
+                                                     ld3q.  */
+                                                  return 3306;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x01001x11011xxxx10xxxxxxxxxxxxxx
-                                                     ldnf1sb.  */
-                                                  return 1755;
+                                                     101001x11x1xxxxx100xxxxxxxxxxxxx
+                                                     ld4q.  */
+                                                  return 3307;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 20) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x01001x10111xxxx10xxxxxxxxxxxxxx
-                                                     ldnf1w.  */
-                                                  return 1761;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x10010xxxx101xxxxxxxxxxxxx
+                                                             ld1sh.  */
+                                                          return 1625;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x11010xxxx101xxxxxxxxxxxxx
+                                                             ld1sb.  */
+                                                          return 1612;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x10110xxxx101xxxxxxxxxxxxx
+                                                             ld1w.  */
+                                                          return 1644;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x11110xxxx101xxxxxxxxxxxxx
+                                                             ld1d.  */
+                                                          return 1564;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x01001x11111xxxx10xxxxxxxxxxxxxx
-                                                     ldnf1d.  */
-                                                  return 1750;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x10011xxxx101xxxxxxxxxxxxx
+                                                             ldnf1sh.  */
+                                                          return 1758;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x11011xxxx101xxxxxxxxxxxxx
+                                                             ldnf1sb.  */
+                                                          return 1755;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x10111xxxx101xxxxxxxxxxxxx
+                                                             ldnf1w.  */
+                                                          return 1761;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x11111xxxx101xxxxxxxxxxxxx
+                                                             ldnf1d.  */
+                                                          return 1750;
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
@@ -31703,10 +32121,24 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     case 1678: return NULL;            /* ldff1b --> NULL.  */
     case 1696: value = 1697; break;    /* ldff1h --> ldff1h.  */
     case 1697: return NULL;            /* ldff1h --> NULL.  */
+    case 1651: value = 3305; break;    /* ld2h --> ld2q.  */
+    case 3305: return NULL;            /* ld2q --> NULL.  */
+    case 2456: value = 3271; break;    /* fclamp --> bfclamp.  */
+    case 3271: return NULL;            /* bfclamp --> NULL.  */
     case 1770: value = 1771; break;    /* ldr --> ldr.  */
     case 1771: return NULL;            /* ldr --> NULL.  */
+    case 1426: value = 3270; break;    /* fadd --> bfadd.  */
+    case 3270: return NULL;            /* bfadd --> NULL.  */
+    case 1493: value = 3273; break;    /* fmul --> bfmul.  */
+    case 3273: return NULL;            /* bfmul --> NULL.  */
+    case 1519: value = 3275; break;    /* fsub --> bfsub.  */
+    case 3275: return NULL;            /* bfsub --> NULL.  */
+    case 1484: value = 3268; break;    /* fmla --> bfmla.  */
+    case 3268: return NULL;            /* bfmla --> NULL.  */
     case 1989: value = 1990; break;    /* str --> str.  */
     case 1990: return NULL;            /* str --> NULL.  */
+    case 1488: value = 3269; break;    /* fmls --> bfmls.  */
+    case 3269: return NULL;            /* bfmls --> NULL.  */
     case 1717: value = 1718; break;    /* ldff1sh --> ldff1sh.  */
     case 1718: return NULL;            /* ldff1sh --> NULL.  */
     case 1705: value = 1706; break;    /* ldff1sb --> ldff1sb.  */
@@ -31727,6 +32159,20 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
     case 1684: return NULL;            /* ldff1d --> NULL.  */
     case 1807: value = 1808; break;    /* pfalse --> pfalse.  */
     case 1808: return NULL;            /* pfalse --> NULL.  */
+    case 1427: value = 3263; break;    /* fadd --> bfadd.  */
+    case 3263: return NULL;            /* bfadd --> NULL.  */
+    case 1474: value = 3265; break;    /* fmaxnm --> bfmaxnm.  */
+    case 3265: return NULL;            /* bfmaxnm --> NULL.  */
+    case 1494: value = 3272; break;    /* fmul --> bfmul.  */
+    case 3272: return NULL;            /* bfmul --> NULL.  */
+    case 1472: value = 3264; break;    /* fmax --> bfmax.  */
+    case 3264: return NULL;            /* bfmax --> NULL.  */
+    case 1520: value = 3274; break;    /* fsub --> bfsub.  */
+    case 3274: return NULL;            /* bfsub --> NULL.  */
+    case 1480: value = 3267; break;    /* fminnm --> bfminnm.  */
+    case 3267: return NULL;            /* bfminnm --> NULL.  */
+    case 1478: value = 3266; break;    /* fmin --> bfmin.  */
+    case 3266: return NULL;            /* bfmin --> NULL.  */
     case 811: value = 812; break;      /* xaflag --> axflag.  */
     case 812: value = 1206; break;     /* axflag --> tcommit.  */
     case 1206: value = 1209; break;    /* tcommit --> smstart.  */
@@ -32354,26 +32800,26 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 204:
     case 205:
     case 206:
-    case 207:
-    case 208:
-    case 209:
-    case 210:
-    case 211:
+    case 215:
+    case 216:
+    case 217:
     case 218:
-    case 221:
-    case 225:
-    case 232:
-    case 233:
-    case 240:
-    case 241:
+    case 219:
+    case 227:
+    case 231:
+    case 235:
     case 242:
     case 243:
+    case 250:
+    case 251:
+    case 252:
+    case 253:
       return aarch64_ext_regno (self, info, code, inst, errors);
     case 6:
     case 113:
     case 114:
-    case 275:
-    case 277:
+    case 285:
+    case 287:
       return aarch64_ext_none (self, info, code, inst, errors);
     case 11:
       return aarch64_ext_regrt_sysins (self, info, code, inst, errors);
@@ -32390,7 +32836,7 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 35:
     case 36:
     case 37:
-    case 279:
+    case 289:
       return aarch64_ext_reglane (self, info, code, inst, errors);
     case 38:
       return aarch64_ext_reglist (self, info, code, inst, errors);
@@ -32437,13 +32883,13 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 200:
     case 201:
     case 202:
-    case 246:
-    case 273:
-    case 274:
-    case 276:
-    case 278:
+    case 256:
     case 283:
     case 284:
+    case 286:
+    case 288:
+    case 293:
+    case 294:
       return aarch64_ext_imm (self, info, code, inst, errors);
     case 46:
     case 47:
@@ -32593,75 +33039,92 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 192:
     case 193:
     case 194:
-    case 259:
+    case 269:
       return aarch64_ext_sve_shrimm (self, info, code, inst, errors);
+    case 207:
+    case 208:
+    case 209:
+    case 210:
+      return aarch64_ext_sme_za_vrs1 (self, info, code, inst, errors);
+    case 211:
     case 212:
     case 213:
     case 214:
-    case 215:
-    case 216:
-    case 217:
-      return aarch64_ext_sve_quad_index (self, info, code, inst, errors);
-    case 219:
-      return aarch64_ext_sve_index (self, info, code, inst, errors);
+      return aarch64_ext_sme_za_vrs2 (self, info, code, inst, errors);
     case 220:
+    case 221:
     case 222:
-    case 239:
-      return aarch64_ext_sve_reglist (self, info, code, inst, errors);
     case 223:
     case 224:
+    case 225:
     case 226:
-    case 227:
+      return aarch64_ext_sve_quad_index (self, info, code, inst, errors);
     case 228:
+      return aarch64_ext_sve_index_imm (self, info, code, inst, errors);
     case 229:
-    case 238:
-      return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors);
+      return aarch64_ext_sve_index (self, info, code, inst, errors);
     case 230:
-    case 231:
-      return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors);
+    case 232:
+    case 249:
+      return aarch64_ext_sve_reglist (self, info, code, inst, errors);
+    case 233:
     case 234:
     case 236:
-    case 247:
-      return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors);
-    case 235:
     case 237:
-      return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors);
+    case 238:
+    case 239:
+    case 248:
+      return aarch64_ext_sve_aligned_reglist (self, info, code, inst, errors);
+    case 240:
+    case 241:
+      return aarch64_ext_sve_strided_reglist (self, info, code, inst, errors);
     case 244:
+    case 246:
+    case 257:
+      return aarch64_ext_sme_za_hv_tiles (self, info, code, inst, errors);
     case 245:
+    case 247:
+      return aarch64_ext_sme_za_hv_tiles_range (self, info, code, inst, errors);
+    case 254:
+    case 255:
+    case 270:
+    case 271:
+    case 272:
+    case 273:
+    case 274:
+    case 275:
+    case 276:
+    case 277:
+    case 278:
+    case 279:
+    case 280:
+    case 281:
+    case 282:
+      return aarch64_ext_simple_index (self, info, code, inst, errors);
+    case 258:
+    case 259:
     case 260:
     case 261:
     case 262:
     case 263:
     case 264:
-    case 265:
-    case 266:
-    case 267:
-    case 268:
-    case 269:
-    case 270:
-    case 271:
-    case 272:
-      return aarch64_ext_simple_index (self, info, code, inst, errors);
-    case 248:
-    case 249:
-    case 250:
-    case 251:
-    case 252:
-    case 253:
-    case 254:
       return aarch64_ext_sme_za_array (self, info, code, inst, errors);
-    case 255:
+    case 265:
       return aarch64_ext_sme_addr_ri_u4xvl (self, info, code, inst, errors);
-    case 256:
+    case 266:
       return aarch64_ext_sme_sm_za (self, info, code, inst, errors);
-    case 257:
+    case 267:
       return aarch64_ext_sme_pred_reg_with_index (self, info, code, inst, errors);
-    case 258:
+    case 268:
       return aarch64_ext_plain_shrimm (self, info, code, inst, errors);
-    case 280:
-    case 281:
-    case 282:
+    case 290:
+    case 291:
+    case 292:
       return aarch64_ext_x0_to_x30 (self, info, code, inst, errors);
+    case 295:
+    case 296:
+    case 297:
+      return aarch64_ext_sve_reglist_zt (self, info, code, inst, errors);
     default: assert (0); abort ();
     }
 }
index 89487da69e4a00a77008d57edf5bbeb64b02a800..30caeea3133dc29efacdb16694ef8c5ba1a15790 100644 (file)
@@ -231,6 +231,14 @@ const struct aarch64_operand aarch64_operands[] =
   {AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vd}, "a SIMD register"},
   {AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vm", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vm}, "a SIMD register"},
   {AARCH64_OPND_CLASS_SIMD_REG, "SVE_Vn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Vn}, "a SIMD register"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsb_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off3}, "ZA0 tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsh_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_1,FLD_off2}, "1 bit ZA tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrss_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_2,FLD_ol}, "2 ZA tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsd_1", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_3}, "3 ZA tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsb_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off2}, "ZA0 tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsh_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn,FLD_ol}, "1 bit ZA tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrss_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_off2}, "2 bit ZA tile"},
+  {AARCH64_OPND_CLASS_ZA_ACCESS, "SME_ZA_array_vrsd_2", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SME_V,FLD_SME_Rv,FLD_ZAn_3}, "3 bit ZA tile"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_5", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_5}, "an SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Za_16", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Za_16}, "an SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zd}, "an SVE vector register"},
@@ -241,8 +249,10 @@ const struct aarch64_operand aarch64_operands[] =
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_19_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_imm2_19, FLD_SVE_imm3}, "an indexed SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm3_22_INDEX", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i3h, FLD_SVE_Zm_16}, "an indexed SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_11_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_i2h, FLD_SVE_i3l, FLD_SVE_imm4}, "an indexed SVE vector register"},
+  {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm_imm4", 5 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_5, FLD_SVE_imm4}, "an 4bit indexed SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zm4_INDEX", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zm_16}, "an indexed SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an SVE vector register"},
+  {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_5_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn, FLD_SVE_i2h, FLD_SVE_tsz}, "a 5 bit idexed SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zn_INDEX", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "an indexed SVE vector register"},
   {AARCH64_OPND_CLASS_SVE_REGLIST, "SVE_ZnxN", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zn}, "a list of SVE vector registers"},
   {AARCH64_OPND_CLASS_SVE_REG, "SVE_Zt", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "an SVE vector register"},
@@ -309,6 +319,9 @@ const struct aarch64_operand aarch64_operands[] =
   {AARCH64_OPND_CLASS_INT_REG, "MOPS_WB_Rd", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_Rn}, "an integer register with writeback"},
   {AARCH64_OPND_CLASS_IMMEDIATE, "CSSC_SIMM8", OPD_F_SEXT | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CSSC_imm8}, "an 8-bit signed immediate"},
   {AARCH64_OPND_CLASS_IMMEDIATE, "CSSC_UIMM8", OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_CSSC_imm8}, "an 8-bit unsigned immediate"},
+  {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt2", 2 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 2 SVE vector registers"},
+  {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt3", 3 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 3 SVE vector registers"},
+  {AARCH64_OPND_CLASS_SVE_REGLIST, "SME_Zt4", 4 << OPD_F_OD_LSB | OPD_F_HAS_INSERTER | OPD_F_HAS_EXTRACTOR, {FLD_SVE_Zt}, "a list of 4 SVE vector registers"},
   {AARCH64_OPND_CLASS_NIL, "", 0, {0}, "DUMMY"},
 };