]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - opcodes/aarch64-dis-2.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / opcodes / aarch64-dis-2.c
index a39ad9dec822d3aa8609da67884f894f6f9f46c8..11b31f8fedbea8961e39287c8bdfefbe64b9dc1e 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is automatically generated by aarch64-gen.  Do not edit!  */
-/* Copyright (C) 2012-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of the GNU opcodes library.
@@ -34,21 +34,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
             {
               if (((word >> 24) & 0x1) == 0)
                 {
-                  if (((word >> 31) & 0x1) == 0)
+                  if (((word >> 28) & 0x1) == 0)
                     {
                       /* 33222222222211111111110000000000
                          10987654321098765432109876543210
-                         0xxx0000xxxxxxxxxxxxxxxxxxxxxxxx
-                         adr.  */
-                      return 1155;
+                         xxx00000xxxxxxxxxxxxxxxxxxxxxxxx
+                         udf.  */
+                      return 754;
                     }
                   else
                     {
-                      /* 33222222222211111111110000000000
-                         10987654321098765432109876543210
-                         1xxx0000xxxxxxxxxxxxxxxxxxxxxxxx
-                         adrp.  */
-                      return 1156;
+                      if (((word >> 31) & 0x1) == 0)
+                        {
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             0xx10000xxxxxxxxxxxxxxxxxxxxxxxx
+                             adr.  */
+                          return 1191;
+                        }
+                      else
+                        {
+                          /* 33222222222211111111110000000000
+                             10987654321098765432109876543210
+                             1xx10000xxxxxxxxxxxxxxxxxxxxxxxx
+                             adrp.  */
+                          return 1192;
+                        }
                     }
                 }
               else
@@ -115,7 +126,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x000xxxxx0xxxxxxxxxxxxxxx
                                                  stxrb.  */
-                                              return 910;
+                                              return 937;
                                             }
                                           else
                                             {
@@ -123,7 +134,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x000xxxxx0xxxxxxxxxxxxxxx
                                                  stxrh.  */
-                                              return 916;
+                                              return 943;
                                             }
                                         }
                                       else
@@ -132,7 +143,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x000xxxxx0xxxxxxxxxxxxxxx
                                              stxr.  */
-                                          return 922;
+                                          return 949;
                                         }
                                     }
                                   else
@@ -143,7 +154,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0x00100x001xxxxx0xxxxxxxxxxxxxxx
                                              casp.  */
-                                          return 990;
+                                          return 1026;
                                         }
                                       else
                                         {
@@ -151,7 +162,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x001xxxxx0xxxxxxxxxxxxxxx
                                              stxp.  */
-                                          return 924;
+                                          return 951;
                                         }
                                     }
                                 }
@@ -167,7 +178,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x000xxxxx1xxxxxxxxxxxxxxx
                                                  stlxrb.  */
-                                              return 911;
+                                              return 938;
                                             }
                                           else
                                             {
@@ -175,7 +186,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x000xxxxx1xxxxxxxxxxxxxxx
                                                  stlxrh.  */
-                                              return 917;
+                                              return 944;
                                             }
                                         }
                                       else
@@ -184,7 +195,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x000xxxxx1xxxxxxxxxxxxxxx
                                              stlxr.  */
-                                          return 923;
+                                          return 950;
                                         }
                                     }
                                   else
@@ -195,7 +206,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0x00100x001xxxxx1xxxxxxxxxxxxxxx
                                              caspl.  */
-                                          return 992;
+                                          return 1028;
                                         }
                                       else
                                         {
@@ -203,18 +214,29 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x001xxxxx1xxxxxxxxxxxxxxx
                                              stlxp.  */
-                                          return 925;
+                                          return 952;
                                         }
                                     }
                                 }
                             }
                           else
                             {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xx10100x00xxxxxxxxxxxxxxxxxxxxxx
-                                 stnp.  */
-                              return 941;
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     x010100x00xxxxxxxxxxxxxxxxxxxxxx
+                                     stnp.  */
+                                  return 971;
+                                }
+                              else
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     x110100x00xxxxxxxxxxxxxxxxxxxxxx
+                                     stgp.  */
+                                  return 980;
+                                }
                             }
                         }
                       else
@@ -231,7 +253,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0x00100x100xxxxx0xxxxxxxxxxxxxxx
                                              stllrb.  */
-                                          return 939;
+                                          return 969;
                                         }
                                       else
                                         {
@@ -239,7 +261,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x100xxxxx0xxxxxxxxxxxxxxx
                                              stllr.  */
-                                          return 938;
+                                          return 968;
                                         }
                                     }
                                   else
@@ -252,7 +274,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x101xxxxx0xxxxxxxxxxxxxxx
                                                  casb.  */
-                                              return 978;
+                                              return 1014;
                                             }
                                           else
                                             {
@@ -260,7 +282,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x101xxxxx0xxxxxxxxxxxxxxx
                                                  cash.  */
-                                              return 979;
+                                              return 1015;
                                             }
                                         }
                                       else
@@ -269,7 +291,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x101xxxxx0xxxxxxxxxxxxxxx
                                              cas.  */
-                                          return 980;
+                                          return 1016;
                                         }
                                     }
                                 }
@@ -285,7 +307,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x100xxxxx1xxxxxxxxxxxxxxx
                                                  stlrb.  */
-                                              return 914;
+                                              return 941;
                                             }
                                           else
                                             {
@@ -293,7 +315,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x100xxxxx1xxxxxxxxxxxxxxx
                                                  stlrh.  */
-                                              return 920;
+                                              return 947;
                                             }
                                         }
                                       else
@@ -302,7 +324,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x100xxxxx1xxxxxxxxxxxxxxx
                                              stlr.  */
-                                          return 930;
+                                          return 957;
                                         }
                                     }
                                   else
@@ -315,7 +337,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x101xxxxx1xxxxxxxxxxxxxxx
                                                  caslb.  */
-                                              return 982;
+                                              return 1018;
                                             }
                                           else
                                             {
@@ -323,7 +345,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x101xxxxx1xxxxxxxxxxxxxxx
                                                  caslh.  */
-                                              return 985;
+                                              return 1021;
                                             }
                                         }
                                       else
@@ -332,18 +354,29 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x101xxxxx1xxxxxxxxxxxxxxx
                                              casl.  */
-                                          return 988;
+                                          return 1024;
                                         }
                                     }
                                 }
                             }
                           else
                             {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xx10100x10xxxxxxxxxxxxxxxxxxxxxx
-                                 stp.  */
-                              return 950;
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     x010100x10xxxxxxxxxxxxxxxxxxxxxx
+                                     stp.  */
+                                  return 981;
+                                }
+                              else
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     x110100x10xxxxxxxxxxxxxxxxxxxxxx
+                                     stgp.  */
+                                  return 986;
+                                }
                             }
                         }
                     }
@@ -365,7 +398,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x010xxxxx0xxxxxxxxxxxxxxx
                                                  ldxrb.  */
-                                              return 912;
+                                              return 939;
                                             }
                                           else
                                             {
@@ -373,7 +406,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x010xxxxx0xxxxxxxxxxxxxxx
                                                  ldxrh.  */
-                                              return 918;
+                                              return 945;
                                             }
                                         }
                                       else
@@ -382,7 +415,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x010xxxxx0xxxxxxxxxxxxxxx
                                              ldxr.  */
-                                          return 926;
+                                          return 953;
                                         }
                                     }
                                   else
@@ -393,7 +426,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0x00100x011xxxxx0xxxxxxxxxxxxxxx
                                              caspa.  */
-                                          return 991;
+                                          return 1027;
                                         }
                                       else
                                         {
@@ -401,7 +434,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x011xxxxx0xxxxxxxxxxxxxxx
                                              ldxp.  */
-                                          return 928;
+                                          return 955;
                                         }
                                     }
                                 }
@@ -417,7 +450,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x010xxxxx1xxxxxxxxxxxxxxx
                                                  ldaxrb.  */
-                                              return 913;
+                                              return 940;
                                             }
                                           else
                                             {
@@ -425,7 +458,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x010xxxxx1xxxxxxxxxxxxxxx
                                                  ldaxrh.  */
-                                              return 919;
+                                              return 946;
                                             }
                                         }
                                       else
@@ -434,7 +467,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x010xxxxx1xxxxxxxxxxxxxxx
                                              ldaxr.  */
-                                          return 927;
+                                          return 954;
                                         }
                                     }
                                   else
@@ -445,7 +478,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0x00100x011xxxxx1xxxxxxxxxxxxxxx
                                              caspal.  */
-                                          return 993;
+                                          return 1029;
                                         }
                                       else
                                         {
@@ -453,7 +486,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x011xxxxx1xxxxxxxxxxxxxxx
                                              ldaxp.  */
-                                          return 929;
+                                          return 956;
                                         }
                                     }
                                 }
@@ -466,7 +499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x010100x01xxxxxxxxxxxxxxxxxxxxxx
                                      ldnp.  */
-                                  return 942;
+                                  return 972;
                                 }
                               else
                                 {
@@ -474,7 +507,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x110100x01xxxxxxxxxxxxxxxxxxxxxx
                                      ldpsw.  */
-                                  return 949;
+                                  return 979;
                                 }
                             }
                         }
@@ -494,7 +527,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x110xxxxx0xxxxxxxxxxxxxxx
                                                  ldlarb.  */
-                                              return 936;
+                                              return 966;
                                             }
                                           else
                                             {
@@ -502,7 +535,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x110xxxxx0xxxxxxxxxxxxxxx
                                                  ldlarh.  */
-                                              return 937;
+                                              return 967;
                                             }
                                         }
                                       else
@@ -511,7 +544,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x110xxxxx0xxxxxxxxxxxxxxx
                                              ldlar.  */
-                                          return 935;
+                                          return 965;
                                         }
                                     }
                                   else
@@ -524,7 +557,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x111xxxxx0xxxxxxxxxxxxxxx
                                                  casab.  */
-                                              return 981;
+                                              return 1017;
                                             }
                                           else
                                             {
@@ -532,7 +565,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x111xxxxx0xxxxxxxxxxxxxxx
                                                  casah.  */
-                                              return 984;
+                                              return 1020;
                                             }
                                         }
                                       else
@@ -541,7 +574,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x111xxxxx0xxxxxxxxxxxxxxx
                                              casa.  */
-                                          return 987;
+                                          return 1023;
                                         }
                                     }
                                 }
@@ -557,7 +590,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x110xxxxx1xxxxxxxxxxxxxxx
                                                  ldarb.  */
-                                              return 915;
+                                              return 942;
                                             }
                                           else
                                             {
@@ -565,7 +598,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x110xxxxx1xxxxxxxxxxxxxxx
                                                  ldarh.  */
-                                              return 921;
+                                              return 948;
                                             }
                                         }
                                       else
@@ -574,7 +607,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x110xxxxx1xxxxxxxxxxxxxxx
                                              ldar.  */
-                                          return 931;
+                                          return 958;
                                         }
                                     }
                                   else
@@ -587,7 +620,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0000100x111xxxxx1xxxxxxxxxxxxxxx
                                                  casalb.  */
-                                              return 983;
+                                              return 1019;
                                             }
                                           else
                                             {
@@ -595,7 +628,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0100100x111xxxxx1xxxxxxxxxxxxxxx
                                                  casalh.  */
-                                              return 986;
+                                              return 1022;
                                             }
                                         }
                                       else
@@ -604,7 +637,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x00100x111xxxxx1xxxxxxxxxxxxxxx
                                              casal.  */
-                                          return 989;
+                                          return 1025;
                                         }
                                     }
                                 }
@@ -617,7 +650,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x010100x11xxxxxxxxxxxxxxxxxxxxxx
                                      ldp.  */
-                                  return 951;
+                                  return 982;
                                 }
                               else
                                 {
@@ -625,7 +658,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x110100x11xxxxxxxxxxxxxxxxxxxxxx
                                      ldpsw.  */
-                                  return 954;
+                                  return 985;
                                 }
                             }
                         }
@@ -643,7 +676,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  0x011000xxxxxxxxxxxxxxxxxxxxxxxx
                                  ldr.  */
-                              return 955;
+                              return 987;
                             }
                           else
                             {
@@ -653,7 +686,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      10011000xxxxxxxxxxxxxxxxxxxxxxxx
                                      ldrsw.  */
-                                  return 957;
+                                  return 989;
                                 }
                               else
                                 {
@@ -661,7 +694,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      11011000xxxxxxxxxxxxxxxxxxxxxxxx
                                      prfm.  */
-                                  return 958;
+                                  return 990;
                                 }
                             }
                         }
@@ -685,7 +718,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          00111000000xxxxxxxxx00xxxxxxxxxx
                                                          sturb.  */
-                                                      return 896;
+                                                      return 922;
                                                     }
                                                   else
                                                     {
@@ -693,7 +726,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          01111000000xxxxxxxxx00xxxxxxxxxx
                                                          sturh.  */
-                                                      return 901;
+                                                      return 927;
                                                     }
                                                 }
                                               else
@@ -702,7 +735,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x111000000xxxxxxxxx00xxxxxxxxxx
                                                      stur.  */
-                                                  return 904;
+                                                  return 930;
                                                 }
                                             }
                                           else
@@ -715,7 +748,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          00111000010xxxxxxxxx00xxxxxxxxxx
                                                          ldurb.  */
-                                                      return 897;
+                                                      return 923;
                                                     }
                                                   else
                                                     {
@@ -723,7 +756,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          01111000010xxxxxxxxx00xxxxxxxxxx
                                                          ldurh.  */
-                                                      return 902;
+                                                      return 928;
                                                     }
                                                 }
                                               else
@@ -732,7 +765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x111000010xxxxxxxxx00xxxxxxxxxx
                                                      ldur.  */
-                                                  return 905;
+                                                  return 931;
                                                 }
                                             }
                                         }
@@ -746,7 +779,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001110001x0xxxxxxxxx00xxxxxxxxxx
                                                      ldursb.  */
-                                                  return 898;
+                                                  return 924;
                                                 }
                                               else
                                                 {
@@ -754,7 +787,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101110001x0xxxxxxxxx00xxxxxxxxxx
                                                      ldursw.  */
-                                                  return 906;
+                                                  return 932;
                                                 }
                                             }
                                           else
@@ -765,7 +798,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011110001x0xxxxxxxxx00xxxxxxxxxx
                                                      ldursh.  */
-                                                  return 903;
+                                                  return 929;
                                                 }
                                               else
                                                 {
@@ -773,7 +806,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111110001x0xxxxxxxxx00xxxxxxxxxx
                                                      prfum.  */
-                                                  return 907;
+                                                  return 933;
                                                 }
                                             }
                                         }
@@ -800,7 +833,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000001xxxxx000000xxxxxxxxxx
                                                                          ldaddb.  */
-                                                                      return 1006;
+                                                                      return 1042;
                                                                     }
                                                                   else
                                                                     {
@@ -808,7 +841,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000001xxxxx000000xxxxxxxxxx
                                                                          ldaddh.  */
-                                                                      return 1007;
+                                                                      return 1043;
                                                                     }
                                                                 }
                                                               else
@@ -817,7 +850,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000001xxxxx000000xxxxxxxxxx
                                                                      ldadd.  */
-                                                                  return 1008;
+                                                                  return 1044;
                                                                 }
                                                             }
                                                           else
@@ -830,7 +863,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000101xxxxx000000xxxxxxxxxx
                                                                          ldaddab.  */
-                                                                      return 1009;
+                                                                      return 1045;
                                                                     }
                                                                   else
                                                                     {
@@ -838,7 +871,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000101xxxxx000000xxxxxxxxxx
                                                                          ldaddah.  */
-                                                                      return 1012;
+                                                                      return 1048;
                                                                     }
                                                                 }
                                                               else
@@ -847,7 +880,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000101xxxxx000000xxxxxxxxxx
                                                                      ldadda.  */
-                                                                  return 1015;
+                                                                  return 1051;
                                                                 }
                                                             }
                                                         }
@@ -863,7 +896,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000011xxxxx000000xxxxxxxxxx
                                                                          ldaddlb.  */
-                                                                      return 1010;
+                                                                      return 1046;
                                                                     }
                                                                   else
                                                                     {
@@ -871,7 +904,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000011xxxxx000000xxxxxxxxxx
                                                                          ldaddlh.  */
-                                                                      return 1013;
+                                                                      return 1049;
                                                                     }
                                                                 }
                                                               else
@@ -880,7 +913,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000011xxxxx000000xxxxxxxxxx
                                                                      ldaddl.  */
-                                                                  return 1016;
+                                                                  return 1052;
                                                                 }
                                                             }
                                                           else
@@ -893,7 +926,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000111xxxxx000000xxxxxxxxxx
                                                                          ldaddalb.  */
-                                                                      return 1011;
+                                                                      return 1047;
                                                                     }
                                                                   else
                                                                     {
@@ -901,7 +934,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000111xxxxx000000xxxxxxxxxx
                                                                          ldaddalh.  */
-                                                                      return 1014;
+                                                                      return 1050;
                                                                     }
                                                                 }
                                                               else
@@ -910,7 +943,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000111xxxxx000000xxxxxxxxxx
                                                                      ldaddal.  */
-                                                                  return 1017;
+                                                                  return 1053;
                                                                 }
                                                             }
                                                         }
@@ -929,7 +962,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000001xxxxx100000xxxxxxxxxx
                                                                          swpb.  */
-                                                                      return 994;
+                                                                      return 1030;
                                                                     }
                                                                   else
                                                                     {
@@ -937,7 +970,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000001xxxxx100000xxxxxxxxxx
                                                                          swph.  */
-                                                                      return 995;
+                                                                      return 1031;
                                                                     }
                                                                 }
                                                               else
@@ -946,7 +979,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000001xxxxx100000xxxxxxxxxx
                                                                      swp.  */
-                                                                  return 996;
+                                                                  return 1032;
                                                                 }
                                                             }
                                                           else
@@ -959,7 +992,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000101xxxxx100000xxxxxxxxxx
                                                                          swpab.  */
-                                                                      return 997;
+                                                                      return 1033;
                                                                     }
                                                                   else
                                                                     {
@@ -967,7 +1000,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000101xxxxx100000xxxxxxxxxx
                                                                          swpah.  */
-                                                                      return 1000;
+                                                                      return 1036;
                                                                     }
                                                                 }
                                                               else
@@ -976,7 +1009,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000101xxxxx100000xxxxxxxxxx
                                                                      swpa.  */
-                                                                  return 1003;
+                                                                  return 1039;
                                                                 }
                                                             }
                                                         }
@@ -992,7 +1025,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000011xxxxx100000xxxxxxxxxx
                                                                          swplb.  */
-                                                                      return 998;
+                                                                      return 1034;
                                                                     }
                                                                   else
                                                                     {
@@ -1000,7 +1033,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000011xxxxx100000xxxxxxxxxx
                                                                          swplh.  */
-                                                                      return 1001;
+                                                                      return 1037;
                                                                     }
                                                                 }
                                                               else
@@ -1009,7 +1042,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000011xxxxx100000xxxxxxxxxx
                                                                      swpl.  */
-                                                                  return 1004;
+                                                                  return 1040;
                                                                 }
                                                             }
                                                           else
@@ -1022,7 +1055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000111xxxxx100000xxxxxxxxxx
                                                                          swpalb.  */
-                                                                      return 999;
+                                                                      return 1035;
                                                                     }
                                                                   else
                                                                     {
@@ -1030,7 +1063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000111xxxxx100000xxxxxxxxxx
                                                                          swpalh.  */
-                                                                      return 1002;
+                                                                      return 1038;
                                                                     }
                                                                 }
                                                               else
@@ -1039,7 +1072,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000111xxxxx100000xxxxxxxxxx
                                                                      swpal.  */
-                                                                  return 1005;
+                                                                  return 1041;
                                                                 }
                                                             }
                                                         }
@@ -1061,7 +1094,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000001xxxxx010000xxxxxxxxxx
                                                                          ldsmaxb.  */
-                                                                      return 1054;
+                                                                      return 1090;
                                                                     }
                                                                   else
                                                                     {
@@ -1069,7 +1102,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000001xxxxx010000xxxxxxxxxx
                                                                          ldsmaxh.  */
-                                                                      return 1055;
+                                                                      return 1091;
                                                                     }
                                                                 }
                                                               else
@@ -1078,7 +1111,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000001xxxxx010000xxxxxxxxxx
                                                                      ldsmax.  */
-                                                                  return 1056;
+                                                                  return 1092;
                                                                 }
                                                             }
                                                           else
@@ -1091,7 +1124,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000101xxxxx010000xxxxxxxxxx
                                                                          ldsmaxab.  */
-                                                                      return 1057;
+                                                                      return 1093;
                                                                     }
                                                                   else
                                                                     {
@@ -1099,7 +1132,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000101xxxxx010000xxxxxxxxxx
                                                                          ldsmaxah.  */
-                                                                      return 1060;
+                                                                      return 1096;
                                                                     }
                                                                 }
                                                               else
@@ -1108,7 +1141,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000101xxxxx010000xxxxxxxxxx
                                                                      ldsmaxa.  */
-                                                                  return 1063;
+                                                                  return 1099;
                                                                 }
                                                             }
                                                         }
@@ -1124,7 +1157,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000011xxxxx010000xxxxxxxxxx
                                                                          ldsmaxlb.  */
-                                                                      return 1058;
+                                                                      return 1094;
                                                                     }
                                                                   else
                                                                     {
@@ -1132,7 +1165,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000011xxxxx010000xxxxxxxxxx
                                                                          ldsmaxlh.  */
-                                                                      return 1061;
+                                                                      return 1097;
                                                                     }
                                                                 }
                                                               else
@@ -1141,7 +1174,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000011xxxxx010000xxxxxxxxxx
                                                                      ldsmaxl.  */
-                                                                  return 1064;
+                                                                  return 1100;
                                                                 }
                                                             }
                                                           else
@@ -1154,7 +1187,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          00111000111xxxxx010000xxxxxxxxxx
                                                                          ldsmaxalb.  */
-                                                                      return 1059;
+                                                                      return 1095;
                                                                     }
                                                                   else
                                                                     {
@@ -1162,7 +1195,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          01111000111xxxxx010000xxxxxxxxxx
                                                                          ldsmaxalh.  */
-                                                                      return 1062;
+                                                                      return 1098;
                                                                     }
                                                                 }
                                                               else
@@ -1171,7 +1204,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      1x111000111xxxxx010000xxxxxxxxxx
                                                                      ldsmaxal.  */
-                                                                  return 1065;
+                                                                  return 1101;
                                                                 }
                                                             }
                                                         }
@@ -1186,7 +1219,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00111000xx1xxxxx110000xxxxxxxxxx
                                                                  ldaprb.  */
-                                                              return 932;
+                                                              return 959;
                                                             }
                                                           else
                                                             {
@@ -1194,7 +1227,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01111000xx1xxxxx110000xxxxxxxxxx
                                                                  ldaprh.  */
-                                                              return 933;
+                                                              return 960;
                                                             }
                                                         }
                                                       else
@@ -1203,7 +1236,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              1x111000xx1xxxxx110000xxxxxxxxxx
                                                              ldapr.  */
-                                                          return 934;
+                                                          return 961;
                                                         }
                                                     }
                                                 }
@@ -1212,132 +1245,143 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000001xxxxxx01000xxxxxxxxxx
-                                                                     ldeorb.  */
-                                                                  return 1030;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000001xxxxx001000xxxxxxxxxx
+                                                                         ldeorb.  */
+                                                                      return 1066;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000001xxxxx001000xxxxxxxxxx
+                                                                         ldeorh.  */
+                                                                      return 1067;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000001xxxxxx01000xxxxxxxxxx
-                                                                     ldeorh.  */
-                                                                  return 1031;
+                                                                     1x111000001xxxxx001000xxxxxxxxxx
+                                                                     ldeor.  */
+                                                                  return 1068;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000001xxxxxx01000xxxxxxxxxx
-                                                                 ldeor.  */
-                                                              return 1032;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000101xxxxxx01000xxxxxxxxxx
-                                                                     ldeorab.  */
-                                                                  return 1033;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000101xxxxx001000xxxxxxxxxx
+                                                                         ldeorab.  */
+                                                                      return 1069;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000101xxxxx001000xxxxxxxxxx
+                                                                         ldeorah.  */
+                                                                      return 1072;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000101xxxxxx01000xxxxxxxxxx
-                                                                     ldeorah.  */
-                                                                  return 1036;
+                                                                     1x111000101xxxxx001000xxxxxxxxxx
+                                                                     ldeora.  */
+                                                                  return 1075;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000101xxxxxx01000xxxxxxxxxx
-                                                                 ldeora.  */
-                                                              return 1039;
-                                                            }
                                                         }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      else
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000011xxxxxx01000xxxxxxxxxx
-                                                                     ldeorlb.  */
-                                                                  return 1034;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000011xxxxx001000xxxxxxxxxx
+                                                                         ldeorlb.  */
+                                                                      return 1070;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000011xxxxx001000xxxxxxxxxx
+                                                                         ldeorlh.  */
+                                                                      return 1073;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000011xxxxxx01000xxxxxxxxxx
-                                                                     ldeorlh.  */
-                                                                  return 1037;
+                                                                     1x111000011xxxxx001000xxxxxxxxxx
+                                                                     ldeorl.  */
+                                                                  return 1076;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000011xxxxxx01000xxxxxxxxxx
-                                                                 ldeorl.  */
-                                                              return 1040;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000111xxxxxx01000xxxxxxxxxx
-                                                                     ldeoralb.  */
-                                                                  return 1035;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000111xxxxx001000xxxxxxxxxx
+                                                                         ldeoralb.  */
+                                                                      return 1071;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000111xxxxx001000xxxxxxxxxx
+                                                                         ldeoralh.  */
+                                                                      return 1074;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000111xxxxxx01000xxxxxxxxxx
-                                                                     ldeoralh.  */
-                                                                  return 1038;
+                                                                     1x111000111xxxxx001000xxxxxxxxxx
+                                                                     ldeoral.  */
+                                                                  return 1077;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000111xxxxxx01000xxxxxxxxxx
-                                                                 ldeoral.  */
-                                                              return 1041;
-                                                            }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx111000xx1xxxxx101000xxxxxxxxxx
+                                                         st64bv0.  */
+                                                      return 994;
+                                                    }
                                                 }
                                               else
                                                 {
@@ -1353,7 +1397,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000001xxxxxx11000xxxxxxxxxx
                                                                      ldumaxb.  */
-                                                                  return 1078;
+                                                                  return 1114;
                                                                 }
                                                               else
                                                                 {
@@ -1361,7 +1405,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000001xxxxxx11000xxxxxxxxxx
                                                                      ldumaxh.  */
-                                                                  return 1079;
+                                                                  return 1115;
                                                                 }
                                                             }
                                                           else
@@ -1370,7 +1414,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000001xxxxxx11000xxxxxxxxxx
                                                                  ldumax.  */
-                                                              return 1080;
+                                                              return 1116;
                                                             }
                                                         }
                                                       else
@@ -1383,7 +1427,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000101xxxxxx11000xxxxxxxxxx
                                                                      ldumaxab.  */
-                                                                  return 1081;
+                                                                  return 1117;
                                                                 }
                                                               else
                                                                 {
@@ -1391,7 +1435,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000101xxxxxx11000xxxxxxxxxx
                                                                      ldumaxah.  */
-                                                                  return 1084;
+                                                                  return 1120;
                                                                 }
                                                             }
                                                           else
@@ -1400,7 +1444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000101xxxxxx11000xxxxxxxxxx
                                                                  ldumaxa.  */
-                                                              return 1087;
+                                                              return 1123;
                                                             }
                                                         }
                                                     }
@@ -1416,7 +1460,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000011xxxxxx11000xxxxxxxxxx
                                                                      ldumaxlb.  */
-                                                                  return 1082;
+                                                                  return 1118;
                                                                 }
                                                               else
                                                                 {
@@ -1424,7 +1468,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000011xxxxxx11000xxxxxxxxxx
                                                                      ldumaxlh.  */
-                                                                  return 1085;
+                                                                  return 1121;
                                                                 }
                                                             }
                                                           else
@@ -1433,7 +1477,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000011xxxxxx11000xxxxxxxxxx
                                                                  ldumaxl.  */
-                                                              return 1088;
+                                                              return 1124;
                                                             }
                                                         }
                                                       else
@@ -1446,7 +1490,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000111xxxxxx11000xxxxxxxxxx
                                                                      ldumaxalb.  */
-                                                                  return 1083;
+                                                                  return 1119;
                                                                 }
                                                               else
                                                                 {
@@ -1454,7 +1498,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000111xxxxxx11000xxxxxxxxxx
                                                                      ldumaxalh.  */
-                                                                  return 1086;
+                                                                  return 1122;
                                                                 }
                                                             }
                                                           else
@@ -1463,7 +1507,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000111xxxxxx11000xxxxxxxxxx
                                                                  ldumaxal.  */
-                                                              return 1089;
+                                                              return 1125;
                                                             }
                                                         }
                                                     }
@@ -1476,393 +1520,426 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000001xxxxxx00100xxxxxxxxxx
-                                                                     ldclrb.  */
-                                                                  return 1018;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000001xxxxx000100xxxxxxxxxx
+                                                                         ldclrb.  */
+                                                                      return 1054;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000001xxxxx000100xxxxxxxxxx
+                                                                         ldclrh.  */
+                                                                      return 1055;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000001xxxxxx00100xxxxxxxxxx
-                                                                     ldclrh.  */
-                                                                  return 1019;
+                                                                     1x111000001xxxxx000100xxxxxxxxxx
+                                                                     ldclr.  */
+                                                                  return 1056;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000001xxxxxx00100xxxxxxxxxx
-                                                                 ldclr.  */
-                                                              return 1020;
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000101xxxxx000100xxxxxxxxxx
+                                                                         ldclrab.  */
+                                                                      return 1057;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000101xxxxx000100xxxxxxxxxx
+                                                                         ldclrah.  */
+                                                                      return 1060;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     1x111000101xxxxx000100xxxxxxxxxx
+                                                                     ldclra.  */
+                                                                  return 1063;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000101xxxxxx00100xxxxxxxxxx
-                                                                     ldclrab.  */
-                                                                  return 1021;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000011xxxxx000100xxxxxxxxxx
+                                                                         ldclrlb.  */
+                                                                      return 1058;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000011xxxxx000100xxxxxxxxxx
+                                                                         ldclrlh.  */
+                                                                      return 1061;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000101xxxxxx00100xxxxxxxxxx
-                                                                     ldclrah.  */
-                                                                  return 1024;
+                                                                     1x111000011xxxxx000100xxxxxxxxxx
+                                                                     ldclrl.  */
+                                                                  return 1064;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000101xxxxxx00100xxxxxxxxxx
-                                                                 ldclra.  */
-                                                              return 1027;
-                                                            }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000011xxxxxx00100xxxxxxxxxx
-                                                                     ldclrlb.  */
-                                                                  return 1022;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000111xxxxx000100xxxxxxxxxx
+                                                                         ldclralb.  */
+                                                                      return 1059;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000111xxxxx000100xxxxxxxxxx
+                                                                         ldclralh.  */
+                                                                      return 1062;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000011xxxxxx00100xxxxxxxxxx
-                                                                     ldclrlh.  */
-                                                                  return 1025;
+                                                                     1x111000111xxxxx000100xxxxxxxxxx
+                                                                     ldclral.  */
+                                                                  return 1065;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000011xxxxxx00100xxxxxxxxxx
-                                                                 ldclrl.  */
-                                                              return 1028;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000111xxxxxx00100xxxxxxxxxx
-                                                                     ldclralb.  */
-                                                                  return 1023;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     01111000111xxxxxx00100xxxxxxxxxx
-                                                                     ldclralh.  */
-                                                                  return 1026;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000111xxxxxx00100xxxxxxxxxx
-                                                                 ldclral.  */
-                                                              return 1029;
-                                                            }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx111000xx1xxxxx100100xxxxxxxxxx
+                                                         st64b.  */
+                                                      return 992;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000001xxxxxx10100xxxxxxxxxx
-                                                                     ldsminb.  */
-                                                                  return 1066;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000001xxxxx010100xxxxxxxxxx
+                                                                         ldsminb.  */
+                                                                      return 1102;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000001xxxxx010100xxxxxxxxxx
+                                                                         ldsminh.  */
+                                                                      return 1103;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000001xxxxxx10100xxxxxxxxxx
-                                                                     ldsminh.  */
-                                                                  return 1067;
+                                                                     1x111000001xxxxx010100xxxxxxxxxx
+                                                                     ldsmin.  */
+                                                                  return 1104;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000001xxxxxx10100xxxxxxxxxx
-                                                                 ldsmin.  */
-                                                              return 1068;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000101xxxxxx10100xxxxxxxxxx
-                                                                     ldsminab.  */
-                                                                  return 1069;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000101xxxxx010100xxxxxxxxxx
+                                                                         ldsminab.  */
+                                                                      return 1105;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000101xxxxx010100xxxxxxxxxx
+                                                                         ldsminah.  */
+                                                                      return 1108;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000101xxxxxx10100xxxxxxxxxx
-                                                                     ldsminah.  */
-                                                                  return 1072;
+                                                                     1x111000101xxxxx010100xxxxxxxxxx
+                                                                     ldsmina.  */
+                                                                  return 1111;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000101xxxxxx10100xxxxxxxxxx
-                                                                 ldsmina.  */
-                                                              return 1075;
-                                                            }
                                                         }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      else
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000011xxxxxx10100xxxxxxxxxx
-                                                                     ldsminlb.  */
-                                                                  return 1070;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000011xxxxx010100xxxxxxxxxx
+                                                                         ldsminlb.  */
+                                                                      return 1106;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000011xxxxx010100xxxxxxxxxx
+                                                                         ldsminlh.  */
+                                                                      return 1109;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000011xxxxxx10100xxxxxxxxxx
-                                                                     ldsminlh.  */
-                                                                  return 1073;
+                                                                     1x111000011xxxxx010100xxxxxxxxxx
+                                                                     ldsminl.  */
+                                                                  return 1112;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000011xxxxxx10100xxxxxxxxxx
-                                                                 ldsminl.  */
-                                                              return 1076;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000111xxxxxx10100xxxxxxxxxx
-                                                                     ldsminalb.  */
-                                                                  return 1071;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000111xxxxx010100xxxxxxxxxx
+                                                                         ldsminalb.  */
+                                                                      return 1107;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000111xxxxx010100xxxxxxxxxx
+                                                                         ldsminalh.  */
+                                                                      return 1110;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000111xxxxxx10100xxxxxxxxxx
-                                                                     ldsminalh.  */
-                                                                  return 1074;
+                                                                     1x111000111xxxxx010100xxxxxxxxxx
+                                                                     ldsminal.  */
+                                                                  return 1113;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000111xxxxxx10100xxxxxxxxxx
-                                                                 ldsminal.  */
-                                                              return 1077;
-                                                            }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx111000xx1xxxxx110100xxxxxxxxxx
+                                                         ld64b.  */
+                                                      return 991;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000001xxxxxx01100xxxxxxxxxx
-                                                                     ldsetb.  */
-                                                                  return 1042;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000001xxxxx001100xxxxxxxxxx
+                                                                         ldsetb.  */
+                                                                      return 1078;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000001xxxxx001100xxxxxxxxxx
+                                                                         ldseth.  */
+                                                                      return 1079;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000001xxxxxx01100xxxxxxxxxx
-                                                                     ldseth.  */
-                                                                  return 1043;
+                                                                     1x111000001xxxxx001100xxxxxxxxxx
+                                                                     ldset.  */
+                                                                  return 1080;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000001xxxxxx01100xxxxxxxxxx
-                                                                 ldset.  */
-                                                              return 1044;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000101xxxxxx01100xxxxxxxxxx
-                                                                     ldsetab.  */
-                                                                  return 1045;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000101xxxxx001100xxxxxxxxxx
+                                                                         ldsetab.  */
+                                                                      return 1081;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000101xxxxx001100xxxxxxxxxx
+                                                                         ldsetah.  */
+                                                                      return 1084;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000101xxxxxx01100xxxxxxxxxx
-                                                                     ldsetah.  */
-                                                                  return 1048;
+                                                                     1x111000101xxxxx001100xxxxxxxxxx
+                                                                     ldseta.  */
+                                                                  return 1087;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000101xxxxxx01100xxxxxxxxxx
-                                                                 ldseta.  */
-                                                              return 1051;
-                                                            }
                                                         }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      else
                                                         {
-                                                          if (((word >> 31) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000011xxxxxx01100xxxxxxxxxx
-                                                                     ldsetlb.  */
-                                                                  return 1046;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000011xxxxx001100xxxxxxxxxx
+                                                                         ldsetlb.  */
+                                                                      return 1082;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000011xxxxx001100xxxxxxxxxx
+                                                                         ldsetlh.  */
+                                                                      return 1085;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000011xxxxxx01100xxxxxxxxxx
-                                                                     ldsetlh.  */
-                                                                  return 1049;
+                                                                     1x111000011xxxxx001100xxxxxxxxxx
+                                                                     ldsetl.  */
+                                                                  return 1088;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000011xxxxxx01100xxxxxxxxxx
-                                                                 ldsetl.  */
-                                                              return 1052;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00111000111xxxxxx01100xxxxxxxxxx
-                                                                     ldsetalb.  */
-                                                                  return 1047;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000111xxxxx001100xxxxxxxxxx
+                                                                         ldsetalb.  */
+                                                                      return 1083;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000111xxxxx001100xxxxxxxxxx
+                                                                         ldsetalh.  */
+                                                                      return 1086;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     01111000111xxxxxx01100xxxxxxxxxx
-                                                                     ldsetalh.  */
-                                                                  return 1050;
+                                                                     1x111000111xxxxx001100xxxxxxxxxx
+                                                                     ldsetal.  */
+                                                                  return 1089;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 1x111000111xxxxxx01100xxxxxxxxxx
-                                                                 ldsetal.  */
-                                                              return 1053;
-                                                            }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx111000xx1xxxxx101100xxxxxxxxxx
+                                                         st64bv.  */
+                                                      return 993;
+                                                    }
                                                 }
                                               else
                                                 {
@@ -1878,7 +1955,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000001xxxxxx11100xxxxxxxxxx
                                                                      lduminb.  */
-                                                                  return 1090;
+                                                                  return 1126;
                                                                 }
                                                               else
                                                                 {
@@ -1886,7 +1963,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000001xxxxxx11100xxxxxxxxxx
                                                                      lduminh.  */
-                                                                  return 1091;
+                                                                  return 1127;
                                                                 }
                                                             }
                                                           else
@@ -1895,7 +1972,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000001xxxxxx11100xxxxxxxxxx
                                                                  ldumin.  */
-                                                              return 1092;
+                                                              return 1128;
                                                             }
                                                         }
                                                       else
@@ -1908,7 +1985,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000101xxxxxx11100xxxxxxxxxx
                                                                      lduminab.  */
-                                                                  return 1093;
+                                                                  return 1129;
                                                                 }
                                                               else
                                                                 {
@@ -1916,7 +1993,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000101xxxxxx11100xxxxxxxxxx
                                                                      lduminah.  */
-                                                                  return 1096;
+                                                                  return 1132;
                                                                 }
                                                             }
                                                           else
@@ -1925,7 +2002,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000101xxxxxx11100xxxxxxxxxx
                                                                  ldumina.  */
-                                                              return 1099;
+                                                              return 1135;
                                                             }
                                                         }
                                                     }
@@ -1941,7 +2018,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000011xxxxxx11100xxxxxxxxxx
                                                                      lduminlb.  */
-                                                                  return 1094;
+                                                                  return 1130;
                                                                 }
                                                               else
                                                                 {
@@ -1949,7 +2026,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000011xxxxxx11100xxxxxxxxxx
                                                                      lduminlh.  */
-                                                                  return 1097;
+                                                                  return 1133;
                                                                 }
                                                             }
                                                           else
@@ -1958,7 +2035,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000011xxxxxx11100xxxxxxxxxx
                                                                  lduminl.  */
-                                                              return 1100;
+                                                              return 1136;
                                                             }
                                                         }
                                                       else
@@ -1971,7 +2048,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00111000111xxxxxx11100xxxxxxxxxx
                                                                      lduminalb.  */
-                                                                  return 1095;
+                                                                  return 1131;
                                                                 }
                                                               else
                                                                 {
@@ -1979,7 +2056,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01111000111xxxxxx11100xxxxxxxxxx
                                                                      lduminalh.  */
-                                                                  return 1098;
+                                                                  return 1134;
                                                                 }
                                                             }
                                                           else
@@ -1988,7 +2065,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x111000111xxxxxx11100xxxxxxxxxx
                                                                  lduminal.  */
-                                                              return 1101;
+                                                              return 1137;
                                                             }
                                                         }
                                                     }
@@ -2013,7 +2090,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          00111000000xxxxxxxxx10xxxxxxxxxx
                                                          sttrb.  */
-                                                      return 887;
+                                                      return 913;
                                                     }
                                                   else
                                                     {
@@ -2021,7 +2098,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          01111000000xxxxxxxxx10xxxxxxxxxx
                                                          sttrh.  */
-                                                      return 890;
+                                                      return 916;
                                                     }
                                                 }
                                               else
@@ -2030,7 +2107,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x111000000xxxxxxxxx10xxxxxxxxxx
                                                      sttr.  */
-                                                  return 893;
+                                                  return 919;
                                                 }
                                             }
                                           else
@@ -2043,7 +2120,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          00111000010xxxxxxxxx10xxxxxxxxxx
                                                          ldtrb.  */
-                                                      return 888;
+                                                      return 914;
                                                     }
                                                   else
                                                     {
@@ -2051,7 +2128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          01111000010xxxxxxxxx10xxxxxxxxxx
                                                          ldtrh.  */
-                                                      return 891;
+                                                      return 917;
                                                     }
                                                 }
                                               else
@@ -2060,7 +2137,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x111000010xxxxxxxxx10xxxxxxxxxx
                                                      ldtr.  */
-                                                  return 894;
+                                                  return 920;
                                                 }
                                             }
                                         }
@@ -2074,7 +2151,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001110001x0xxxxxxxxx10xxxxxxxxxx
                                                      ldtrsb.  */
-                                                  return 889;
+                                                  return 915;
                                                 }
                                               else
                                                 {
@@ -2082,7 +2159,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101110001x0xxxxxxxxx10xxxxxxxxxx
                                                      ldtrsw.  */
-                                                  return 895;
+                                                  return 921;
                                                 }
                                             }
                                           else
@@ -2091,7 +2168,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x11110001x0xxxxxxxxx10xxxxxxxxxx
                                                  ldtrsh.  */
-                                              return 892;
+                                              return 918;
                                             }
                                         }
                                     }
@@ -2109,7 +2186,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          00111000001xxxxxxxxx10xxxxxxxxxx
                                                          strb.  */
-                                                      return 875;
+                                                      return 901;
                                                     }
                                                   else
                                                     {
@@ -2117,7 +2194,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          01111000001xxxxxxxxx10xxxxxxxxxx
                                                          strh.  */
-                                                      return 880;
+                                                      return 906;
                                                     }
                                                 }
                                               else
@@ -2126,7 +2203,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x111000001xxxxxxxxx10xxxxxxxxxx
                                                      str.  */
-                                                  return 883;
+                                                  return 909;
                                                 }
                                             }
                                           else
@@ -2139,7 +2216,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          00111000011xxxxxxxxx10xxxxxxxxxx
                                                          ldrb.  */
-                                                      return 876;
+                                                      return 902;
                                                     }
                                                   else
                                                     {
@@ -2147,7 +2224,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          01111000011xxxxxxxxx10xxxxxxxxxx
                                                          ldrh.  */
-                                                      return 881;
+                                                      return 907;
                                                     }
                                                 }
                                               else
@@ -2156,7 +2233,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x111000011xxxxxxxxx10xxxxxxxxxx
                                                      ldr.  */
-                                                  return 884;
+                                                  return 910;
                                                 }
                                             }
                                         }
@@ -2170,7 +2247,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001110001x1xxxxxxxxx10xxxxxxxxxx
                                                      ldrsb.  */
-                                                  return 877;
+                                                  return 903;
                                                 }
                                               else
                                                 {
@@ -2178,7 +2255,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101110001x1xxxxxxxxx10xxxxxxxxxx
                                                      ldrsw.  */
-                                                  return 885;
+                                                  return 911;
                                                 }
                                             }
                                           else
@@ -2189,7 +2266,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011110001x1xxxxxxxxx10xxxxxxxxxx
                                                      ldrsh.  */
-                                                  return 882;
+                                                  return 908;
                                                 }
                                               else
                                                 {
@@ -2197,7 +2274,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111110001x1xxxxxxxxx10xxxxxxxxxx
                                                      prfm.  */
-                                                  return 886;
+                                                  return 912;
                                                 }
                                             }
                                         }
@@ -2220,7 +2297,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      00111000000xxxxxxxxxx1xxxxxxxxxx
                                                      strb.  */
-                                                  return 852;
+                                                  return 870;
                                                 }
                                               else
                                                 {
@@ -2228,7 +2305,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      01111000000xxxxxxxxxx1xxxxxxxxxx
                                                      strh.  */
-                                                  return 857;
+                                                  return 875;
                                                 }
                                             }
                                           else
@@ -2237,7 +2314,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  1x111000000xxxxxxxxxx1xxxxxxxxxx
                                                  str.  */
-                                              return 860;
+                                              return 878;
                                             }
                                         }
                                       else
@@ -2250,7 +2327,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      00111000010xxxxxxxxxx1xxxxxxxxxx
                                                      ldrb.  */
-                                                  return 853;
+                                                  return 871;
                                                 }
                                               else
                                                 {
@@ -2258,7 +2335,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      01111000010xxxxxxxxxx1xxxxxxxxxx
                                                      ldrh.  */
-                                                  return 858;
+                                                  return 876;
                                                 }
                                             }
                                           else
@@ -2267,7 +2344,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  1x111000010xxxxxxxxxx1xxxxxxxxxx
                                                  ldr.  */
-                                              return 861;
+                                              return 879;
                                             }
                                         }
                                     }
@@ -2281,7 +2358,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  001110001x0xxxxxxxxxx1xxxxxxxxxx
                                                  ldrsb.  */
-                                              return 854;
+                                              return 872;
                                             }
                                           else
                                             {
@@ -2289,7 +2366,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  101110001x0xxxxxxxxxx1xxxxxxxxxx
                                                  ldrsw.  */
-                                              return 862;
+                                              return 880;
                                             }
                                         }
                                       else
@@ -2298,7 +2375,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x11110001x0xxxxxxxxxx1xxxxxxxxxx
                                              ldrsh.  */
-                                          return 859;
+                                          return 877;
                                         }
                                     }
                                 }
@@ -2310,7 +2387,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx1110000x1xxxxxxxxxx1xxxxxxxxxx
                                          ldraa.  */
-                                      return 908;
+                                      return 935;
                                     }
                                   else
                                     {
@@ -2318,7 +2395,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx1110001x1xxxxxxxxxx1xxxxxxxxxx
                                          ldrab.  */
-                                      return 909;
+                                      return 936;
                                     }
                                 }
                             }
@@ -2332,45 +2409,78 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               if (((word >> 29) & 0x1) == 0)
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             0001100100xxxxxxxxxxxxxxxxxxxxxx
-                                             stlurb.  */
-                                          return 2044;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             1001100100xxxxxxxxxxxxxxxxxxxxxx
-                                             stlur.  */
-                                          return 2052;
-                                        }
-                                    }
-                                  else
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             0101100100xxxxxxxxxxxxxxxxxxxxxx
-                                             stlurh.  */
-                                          return 2048;
-                                        }
-                                      else
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             1101100100xxxxxxxxxxxxxxxxxxxxxx
-                                             stlur.  */
-                                          return 2055;
-                                        }
-                                    }
-                                }
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         00011001000xxxxxxxxx00xxxxxxxxxx
+                                                         stlurb.  */
+                                                      return 2389;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         10011001000xxxxxxxxx00xxxxxxxxxx
+                                                         stlur.  */
+                                                      return 2397;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         01011001000xxxxxxxxx00xxxxxxxxxx
+                                                         stlurh.  */
+                                                      return 2393;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         11011001000xxxxxxxxx00xxxxxxxxxx
+                                                         stlur.  */
+                                                      return 2400;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx011001001xxxxxxxxx00xxxxxxxxxx
+                                                 stzgm.  */
+                                              return 964;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx01100100xxxxxxxxxx10xxxxxxxxxx
+                                             stg.  */
+                                          return 881;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xx01100100xxxxxxxxxxx1xxxxxxxxxx
+                                         stg.  */
+                                      return 885;
+                                    }
+                                }
                               else
                                 {
                                   if (((word >> 31) & 0x1) == 0)
@@ -2381,7 +2491,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0011100100xxxxxxxxxxxxxxxxxxxxxx
                                              strb.  */
-                                          return 863;
+                                          return 889;
                                         }
                                       else
                                         {
@@ -2389,7 +2499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0111100100xxxxxxxxxxxxxxxxxxxxxx
                                              strh.  */
-                                          return 868;
+                                          return 894;
                                         }
                                     }
                                   else
@@ -2398,7 +2508,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          1x11100100xxxxxxxxxxxxxxxxxxxxxx
                                          str.  */
-                                      return 871;
+                                      return 897;
                                     }
                                 }
                             }
@@ -2406,43 +2516,76 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               if (((word >> 29) & 0x1) == 0)
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             0001100101xxxxxxxxxxxxxxxxxxxxxx
-                                             ldapurb.  */
-                                          return 2045;
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         00011001010xxxxxxxxx00xxxxxxxxxx
+                                                         ldapurb.  */
+                                                      return 2390;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         10011001010xxxxxxxxx00xxxxxxxxxx
+                                                         ldapur.  */
+                                                      return 2398;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         01011001010xxxxxxxxx00xxxxxxxxxx
+                                                         ldapurh.  */
+                                                      return 2394;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         11011001010xxxxxxxxx00xxxxxxxxxx
+                                                         ldapur.  */
+                                                      return 2401;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx011001011xxxxxxxxx00xxxxxxxxxx
+                                                 ldg.  */
+                                              return 934;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             1001100101xxxxxxxxxxxxxxxxxxxxxx
-                                             ldapur.  */
-                                          return 2053;
+                                             xx01100101xxxxxxxxxx10xxxxxxxxxx
+                                             stzg.  */
+                                          return 882;
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             0101100101xxxxxxxxxxxxxxxxxxxxxx
-                                             ldapurh.  */
-                                          return 2049;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             1101100101xxxxxxxxxxxxxxxxxxxxxx
-                                             ldapur.  */
-                                          return 2056;
-                                        }
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xx01100101xxxxxxxxxxx1xxxxxxxxxx
+                                         stzg.  */
+                                      return 886;
                                     }
                                 }
                               else
@@ -2455,7 +2598,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0011100101xxxxxxxxxxxxxxxxxxxxxx
                                              ldrb.  */
-                                          return 864;
+                                          return 890;
                                         }
                                       else
                                         {
@@ -2463,7 +2606,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              0111100101xxxxxxxxxxxxxxxxxxxxxx
                                              ldrh.  */
-                                          return 869;
+                                          return 895;
                                         }
                                     }
                                   else
@@ -2472,7 +2615,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          1x11100101xxxxxxxxxxxxxxxxxxxxxx
                                          ldr.  */
-                                      return 872;
+                                      return 898;
                                     }
                                 }
                             }
@@ -2481,53 +2624,119 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 22) & 0x1) == 0)
+                              if (((word >> 10) & 0x1) == 0)
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 11) & 0x1) == 0)
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         00011001100xxxxxxxxx00xxxxxxxxxx
+                                                         ldapursb.  */
+                                                      return 2392;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         10011001100xxxxxxxxx00xxxxxxxxxx
+                                                         ldapursw.  */
+                                                      return 2399;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011001100xxxxxxxxx00xxxxxxxxxx
+                                                     ldapursh.  */
+                                                  return 2396;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0011001110xxxxxxxxx00xxxxxxxxxx
+                                                     ldapursb.  */
+                                                  return 2391;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011001110xxxxxxxxx00xxxxxxxxxx
+                                                     ldapursh.  */
+                                                  return 2395;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx011001101xxxxxxxxx00xxxxxxxxxx
+                                                 stgm.  */
+                                              return 963;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx011001111xxxxxxxxx00xxxxxxxxxx
+                                                 ldgm.  */
+                                              return 962;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             0001100110xxxxxxxxxxxxxxxxxxxxxx
-                                             ldapursb.  */
-                                          return 2047;
+                                             xx01100110xxxxxxxxxx10xxxxxxxxxx
+                                             st2g.  */
+                                          return 883;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             1001100110xxxxxxxxxxxxxxxxxxxxxx
-                                             ldapursw.  */
-                                          return 2054;
+                                             xx01100111xxxxxxxxxx10xxxxxxxxxx
+                                             stz2g.  */
+                                          return 884;
                                         }
                                     }
-                                  else
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         x101100110xxxxxxxxxxxxxxxxxxxxxx
-                                         ldapursh.  */
-                                      return 2051;
-                                    }
                                 }
                               else
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 22) & 0x1) == 0)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         x001100111xxxxxxxxxxxxxxxxxxxxxx
-                                         ldapursb.  */
-                                      return 2046;
+                                         xx01100110xxxxxxxxxxx1xxxxxxxxxx
+                                         st2g.  */
+                                      return 887;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         x101100111xxxxxxxxxxxxxxxxxxxxxx
-                                         ldapursh.  */
-                                      return 2050;
+                                         xx01100111xxxxxxxxxxx1xxxxxxxxxx
+                                         stz2g.  */
+                                      return 888;
                                     }
                                 }
                             }
@@ -2541,7 +2750,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          001110011xxxxxxxxxxxxxxxxxxxxxxx
                                          ldrsb.  */
-                                      return 865;
+                                      return 891;
                                     }
                                   else
                                     {
@@ -2549,7 +2758,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          101110011xxxxxxxxxxxxxxxxxxxxxxx
                                          ldrsw.  */
-                                      return 873;
+                                      return 899;
                                     }
                                 }
                               else
@@ -2560,7 +2769,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          011110011xxxxxxxxxxxxxxxxxxxxxxx
                                          ldrsh.  */
-                                      return 870;
+                                      return 896;
                                     }
                                   else
                                     {
@@ -2568,7 +2777,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          111110011xxxxxxxxxxxxxxxxxxxxxxx
                                          prfm.  */
-                                      return 874;
+                                      return 900;
                                     }
                                 }
                             }
@@ -2593,7 +2802,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x00x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  and.  */
-                              return 959;
+                              return 995;
                             }
                           else
                             {
@@ -2601,7 +2810,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x10x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  eor.  */
-                              return 963;
+                              return 999;
                             }
                         }
                       else
@@ -2612,7 +2821,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x01x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  orr.  */
-                              return 961;
+                              return 997;
                             }
                           else
                             {
@@ -2620,7 +2829,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x11x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  ands.  */
-                              return 964;
+                              return 1000;
                             }
                         }
                     }
@@ -2634,7 +2843,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x00x00101xxxxxxxxxxxxxxxxxxxxxxx
                                  movn.  */
-                              return 1150;
+                              return 1186;
                             }
                           else
                             {
@@ -2642,7 +2851,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x10x00101xxxxxxxxxxxxxxxxxxxxxxx
                                  movz.  */
-                              return 1152;
+                              return 1188;
                             }
                         }
                       else
@@ -2651,7 +2860,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx1x00101xxxxxxxxxxxxxxxxxxxxxxx
                              movk.  */
-                          return 1154;
+                          return 1190;
                         }
                     }
                 }
@@ -2669,7 +2878,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x0001010xx0xxxxxxxxxxxxxxxxxxxxx
                                      and.  */
-                                  return 966;
+                                  return 1002;
                                 }
                               else
                                 {
@@ -2677,7 +2886,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x1001010xx0xxxxxxxxxxxxxxxxxxxxx
                                      eor.  */
-                                  return 973;
+                                  return 1009;
                                 }
                             }
                           else
@@ -2688,7 +2897,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x0101010xx0xxxxxxxxxxxxxxxxxxxxx
                                      orr.  */
-                                  return 968;
+                                  return 1004;
                                 }
                               else
                                 {
@@ -2696,7 +2905,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x1101010xx0xxxxxxxxxxxxxxxxxxxxx
                                      ands.  */
-                                  return 975;
+                                  return 1011;
                                 }
                             }
                         }
@@ -2757,7 +2966,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0x11010100xxxxxxxxx00xxxxxxxxxx
                                                  csel.  */
-                                              return 656;
+                                              return 662;
                                             }
                                           else
                                             {
@@ -2765,7 +2974,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x11010100xxxxxxxxx00xxxxxxxxxx
                                                  csinv.  */
-                                              return 660;
+                                              return 666;
                                             }
                                         }
                                     }
@@ -2779,7 +2988,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0x11010010xxxxxxxxx00xxxxxxxxxx
                                                  ccmn.  */
-                                              return 654;
+                                              return 660;
                                             }
                                           else
                                             {
@@ -2787,7 +2996,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x11010010xxxxxxxxx00xxxxxxxxxx
                                                  ccmp.  */
-                                              return 655;
+                                              return 661;
                                             }
                                         }
                                       else
@@ -2798,21 +3007,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11010110xxxx0x00000xxxxxxxxxx
-                                                             rbit.  */
-                                                          return 679;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x0011010110xxxxxx00000xxxxxxxxxx
+                                                                 subp.  */
+                                                              return 721;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 16) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     x1011010110xxxx0x00000xxxxxxxxxx
+                                                                     rbit.  */
+                                                                  return 685;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     x1011010110xxxx1x00000xxxxxxxxxx
+                                                                     pacia.  */
+                                                                  return 693;
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx11010110xxxx1x00000xxxxxxxxxx
-                                                             pacia.  */
-                                                          return 687;
+                                                             xx111010110xxxxxx00000xxxxxxxxxx
+                                                             subps.  */
+                                                          return 722;
                                                         }
                                                     }
                                                   else
@@ -2823,7 +3054,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0x11010110xxxxxx10000xxxxxxxxxx
                                                              crc32b.  */
-                                                          return 716;
+                                                          return 727;
                                                         }
                                                       else
                                                         {
@@ -2831,7 +3062,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1x11010110xxxxxx10000xxxxxxxxxx
                                                              xpaci.  */
-                                                          return 703;
+                                                          return 709;
                                                         }
                                                     }
                                                 }
@@ -2843,7 +3074,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x11010110xxxxxxx1000xxxxxxxxxx
                                                          lslv.  */
-                                                      return 707;
+                                                      return 713;
                                                     }
                                                   else
                                                     {
@@ -2851,7 +3082,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11010110xxxxxxx1000xxxxxxxxxx
                                                          paciza.  */
-                                                      return 695;
+                                                      return 701;
                                                     }
                                                 }
                                             }
@@ -2861,21 +3092,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx11010110xxxx0x00100xxxxxxxxxx
-                                                             clz.  */
-                                                          return 684;
+                                                             x0x11010110xxxxxx00100xxxxxxxxxx
+                                                             irg.  */
+                                                          return 724;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11010110xxxx1x00100xxxxxxxxxx
-                                                             autia.  */
-                                                          return 691;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1x11010110xxxx0x00100xxxxxxxxxx
+                                                                 clz.  */
+                                                              return 690;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1x11010110xxxx1x00100xxxxxxxxxx
+                                                                 autia.  */
+                                                              return 697;
+                                                            }
                                                         }
                                                     }
                                                   else
@@ -2884,7 +3126,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11010110xxxxxx10100xxxxxxxxxx
                                                          crc32cb.  */
-                                                      return 720;
+                                                      return 731;
                                                     }
                                                 }
                                               else
@@ -2895,7 +3137,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x11010110xxxxxxx1100xxxxxxxxxx
                                                          pacga.  */
-                                                      return 715;
+                                                      return 726;
                                                     }
                                                   else
                                                     {
@@ -2903,7 +3145,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11010110xxxxxxx1100xxxxxxxxxx
                                                          autiza.  */
-                                                      return 699;
+                                                      return 705;
                                                     }
                                                 }
                                             }
@@ -2920,7 +3162,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxx11010x00xxxxxx0xx10xxxxxxxxxx
                                              setf8.  */
-                                          return 2042;
+                                          return 2387;
                                         }
                                       else
                                         {
@@ -2928,7 +3170,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxx11010x00xxxxxx1xx10xxxxxxxxxx
                                              setf16.  */
-                                          return 2043;
+                                          return 2388;
                                         }
                                     }
                                   else
@@ -2941,7 +3183,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0x11010010xxxxxxxxx10xxxxxxxxxx
                                                  ccmn.  */
-                                              return 652;
+                                              return 658;
                                             }
                                           else
                                             {
@@ -2949,7 +3191,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x11010010xxxxxxxxx10xxxxxxxxxx
                                                  ccmp.  */
-                                              return 653;
+                                              return 659;
                                             }
                                         }
                                       else
@@ -2966,7 +3208,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0x11010110xxxxxx00010xxxxxxxxxx
                                                              udiv.  */
-                                                          return 705;
+                                                          return 711;
                                                         }
                                                       else
                                                         {
@@ -2978,7 +3220,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01x11010110xxxx0x00010xxxxxxxxxx
                                                                      rev.  */
-                                                                  return 681;
+                                                                  return 687;
                                                                 }
                                                               else
                                                                 {
@@ -2986,7 +3228,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      11x11010110xxxx0x00010xxxxxxxxxx
                                                                      rev32.  */
-                                                                  return 686;
+                                                                  return 692;
                                                                 }
                                                             }
                                                           else
@@ -2995,7 +3237,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1x11010110xxxx1x00010xxxxxxxxxx
                                                                  pacda.  */
-                                                              return 689;
+                                                              return 695;
                                                             }
                                                         }
                                                     }
@@ -3005,7 +3247,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11010110xxxxxx10010xxxxxxxxxx
                                                          crc32w.  */
-                                                      return 718;
+                                                      return 729;
                                                     }
                                                 }
                                               else
@@ -3016,7 +3258,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x11010110xxxxxxx1010xxxxxxxxxx
                                                          asrv.  */
-                                                      return 711;
+                                                      return 717;
                                                     }
                                                   else
                                                     {
@@ -3024,7 +3266,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11010110xxxxxxx1010xxxxxxxxxx
                                                          pacdza.  */
-                                                      return 697;
+                                                      return 703;
                                                     }
                                                 }
                                             }
@@ -3038,7 +3280,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11010110xxxxxx00110xxxxxxxxxx
                                                          autda.  */
-                                                      return 693;
+                                                      return 699;
                                                     }
                                                   else
                                                     {
@@ -3046,7 +3288,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11010110xxxxxx10110xxxxxxxxxx
                                                          crc32cw.  */
-                                                      return 722;
+                                                      return 733;
                                                     }
                                                 }
                                               else
@@ -3055,7 +3297,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11010110xxxxxxx1110xxxxxxxxxx
                                                      autdza.  */
-                                                  return 701;
+                                                  return 707;
                                                 }
                                             }
                                         }
@@ -3074,7 +3316,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxx11010000xxxxxxxxx01xxxxxxxxxx
                                              rmif.  */
-                                          return 2041;
+                                          return 2386;
                                         }
                                       else
                                         {
@@ -3084,7 +3326,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0x11010100xxxxxxxxx01xxxxxxxxxx
                                                  csinc.  */
-                                              return 657;
+                                              return 663;
                                             }
                                           else
                                             {
@@ -3092,7 +3334,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x11010100xxxxxxxxx01xxxxxxxxxx
                                                  csneg.  */
-                                              return 663;
+                                              return 669;
                                             }
                                         }
                                     }
@@ -3110,7 +3352,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11010x10xxxx0x00001xxxxxxxxxx
                                                          rev16.  */
-                                                      return 680;
+                                                      return 686;
                                                     }
                                                   else
                                                     {
@@ -3118,7 +3360,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11010x10xxxx1x00001xxxxxxxxxx
                                                          pacib.  */
-                                                      return 688;
+                                                      return 694;
                                                     }
                                                 }
                                               else
@@ -3129,7 +3371,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x11010x10xxxxxx10001xxxxxxxxxx
                                                          crc32h.  */
-                                                      return 717;
+                                                      return 728;
                                                     }
                                                   else
                                                     {
@@ -3137,7 +3379,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11010x10xxxxxx10001xxxxxxxxxx
                                                          xpacd.  */
-                                                      return 704;
+                                                      return 710;
                                                     }
                                                 }
                                             }
@@ -3149,7 +3391,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0x11010x10xxxxxxx1001xxxxxxxxxx
                                                      lsrv.  */
-                                                  return 709;
+                                                  return 715;
                                                 }
                                               else
                                                 {
@@ -3157,7 +3399,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1x11010x10xxxxxxx1001xxxxxxxxxx
                                                      pacizb.  */
-                                                  return 696;
+                                                  return 702;
                                                 }
                                             }
                                         }
@@ -3167,21 +3409,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxx11010x10xxxx0x00101xxxxxxxxxx
-                                                         cls.  */
-                                                      return 685;
+                                                         x0x11010x10xxxxxx00101xxxxxxxxxx
+                                                         gmi.  */
+                                                      return 725;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx11010x10xxxx1x00101xxxxxxxxxx
-                                                         autib.  */
-                                                      return 692;
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1x11010x10xxxx0x00101xxxxxxxxxx
+                                                             cls.  */
+                                                          return 691;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1x11010x10xxxx1x00101xxxxxxxxxx
+                                                             autib.  */
+                                                          return 698;
+                                                        }
                                                     }
                                                 }
                                               else
@@ -3190,7 +3443,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11010x10xxxxxx10101xxxxxxxxxx
                                                      crc32ch.  */
-                                                  return 721;
+                                                  return 732;
                                                 }
                                             }
                                           else
@@ -3199,7 +3452,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxx11010x10xxxxxxx1101xxxxxxxxxx
                                                  autizb.  */
-                                              return 700;
+                                              return 706;
                                             }
                                         }
                                     }
@@ -3218,7 +3471,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0x11010xx0xxxxxx00011xxxxxxxxxx
                                                      sdiv.  */
-                                                  return 706;
+                                                  return 712;
                                                 }
                                               else
                                                 {
@@ -3228,7 +3481,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11010xx0xxxx0x00011xxxxxxxxxx
                                                          rev.  */
-                                                      return 682;
+                                                      return 688;
                                                     }
                                                   else
                                                     {
@@ -3236,7 +3489,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11010xx0xxxx1x00011xxxxxxxxxx
                                                          pacdb.  */
-                                                      return 690;
+                                                      return 696;
                                                     }
                                                 }
                                             }
@@ -3246,7 +3499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxx11010xx0xxxxxx10011xxxxxxxxxx
                                                  crc32x.  */
-                                              return 719;
+                                              return 730;
                                             }
                                         }
                                       else
@@ -3257,7 +3510,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0x11010xx0xxxxxxx1011xxxxxxxxxx
                                                  rorv.  */
-                                              return 713;
+                                              return 719;
                                             }
                                           else
                                             {
@@ -3265,7 +3518,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x11010xx0xxxxxxx1011xxxxxxxxxx
                                                  pacdzb.  */
-                                              return 698;
+                                              return 704;
                                             }
                                         }
                                     }
@@ -3279,7 +3532,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxx11010xx0xxxxxx00111xxxxxxxxxx
                                                  autdb.  */
-                                              return 694;
+                                              return 700;
                                             }
                                           else
                                             {
@@ -3287,7 +3540,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xxx11010xx0xxxxxx10111xxxxxxxxxx
                                                  crc32cx.  */
-                                              return 723;
+                                              return 734;
                                             }
                                         }
                                       else
@@ -3296,7 +3549,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xxx11010xx0xxxxxxx1111xxxxxxxxxx
                                              autdzb.  */
-                                          return 702;
+                                          return 708;
                                         }
                                     }
                                 }
@@ -3313,7 +3566,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x00x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  bic.  */
-                              return 967;
+                              return 1003;
                             }
                           else
                             {
@@ -3321,7 +3574,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x10x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  eon.  */
-                              return 974;
+                              return 1010;
                             }
                         }
                       else
@@ -3332,7 +3585,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x01x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  orn.  */
-                              return 971;
+                              return 1007;
                             }
                           else
                             {
@@ -3340,7 +3593,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x11x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  bics.  */
-                              return 977;
+                              return 1013;
                             }
                         }
                     }
@@ -3360,7 +3613,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x00x00110xxxxxxxxxxxxxxxxxxxxxxx
                                  sbfm.  */
-                              return 612;
+                              return 618;
                             }
                           else
                             {
@@ -3368,7 +3621,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  x10x00110xxxxxxxxxxxxxxxxxxxxxxx
                                  ubfm.  */
-                              return 623;
+                              return 629;
                             }
                         }
                       else
@@ -3377,7 +3630,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx1x00110xxxxxxxxxxxxxxxxxxxxxxx
                              bfm.  */
-                          return 619;
+                          return 625;
                         }
                     }
                   else
@@ -3386,7 +3639,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                          10987654321098765432109876543210
                          xxxx00111xxxxxxxxxxxxxxxxxxxxxxx
                          extr.  */
-                      return 746;
+                      return 758;
                     }
                 }
               else
@@ -3403,7 +3656,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x0001011xx0xxxxxxxxxxxxxxxxxxxxx
                                      add.  */
-                                  return 19;
+                                  return 21;
                                 }
                               else
                                 {
@@ -3411,7 +3664,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x1001011xx0xxxxxxxxxxxxxxxxxxxxx
                                      sub.  */
-                                  return 22;
+                                  return 24;
                                 }
                             }
                           else
@@ -3422,7 +3675,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x0101011xx0xxxxxxxxxxxxxxxxxxxxx
                                      adds.  */
-                                  return 20;
+                                  return 22;
                                 }
                               else
                                 {
@@ -3430,7 +3683,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      x1101011xx0xxxxxxxxxxxxxxxxxxxxx
                                      subs.  */
-                                  return 24;
+                                  return 26;
                                 }
                             }
                         }
@@ -3444,7 +3697,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxx11011x00xxxxx0xxxxxxxxxxxxxxx
                                      madd.  */
-                                  return 724;
+                                  return 735;
                                 }
                               else
                                 {
@@ -3454,7 +3707,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxx11011010xxxxx0xxxxxxxxxxxxxxx
                                          smulh.  */
-                                      return 732;
+                                      return 743;
                                     }
                                   else
                                     {
@@ -3462,7 +3715,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xxx11011110xxxxx0xxxxxxxxxxxxxxx
                                          umulh.  */
-                                      return 737;
+                                      return 748;
                                     }
                                 }
                             }
@@ -3472,7 +3725,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxx11011xx0xxxxx1xxxxxxxxxxxxxxx
                                  msub.  */
-                              return 726;
+                              return 737;
                             }
                         }
                     }
@@ -3529,7 +3782,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxx110110x1xxxxx0xxxxxxxxxxxxxxx
                                      smaddl.  */
-                                  return 728;
+                                  return 739;
                                 }
                               else
                                 {
@@ -3537,7 +3790,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xxx110110x1xxxxx1xxxxxxxxxxxxxxx
                                      smsubl.  */
-                                  return 730;
+                                  return 741;
                                 }
                             }
                         }
@@ -3549,7 +3802,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxx10111x1xxxxx0xxxxxxxxxxxxxxx
                                  umaddl.  */
-                              return 733;
+                              return 744;
                             }
                           else
                             {
@@ -3557,7 +3810,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xxxx10111x1xxxxx1xxxxxxxxxxxxxxx
                                  umsubl.  */
-                              return 735;
+                              return 746;
                             }
                         }
                     }
@@ -3601,7 +3854,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx000000000xxxxxxxxxxxxx
                                                                      add.  */
-                                                                  return 1233;
+                                                                  return 1288;
                                                                 }
                                                               else
                                                                 {
@@ -3609,7 +3862,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx010000000xxxxxxxxxxxxx
                                                                      mul.  */
-                                                                  return 1702;
+                                                                  return 1757;
                                                                 }
                                                             }
                                                           else
@@ -3620,7 +3873,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx001000000xxxxxxxxxxxxx
                                                                      smax.  */
-                                                                  return 1781;
+                                                                  return 1836;
                                                                 }
                                                               else
                                                                 {
@@ -3628,7 +3881,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx011000000xxxxxxxxxxxxx
                                                                      orr.  */
-                                                                  return 1713;
+                                                                  return 1768;
                                                                 }
                                                             }
                                                         }
@@ -3640,7 +3893,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x0100000xxxxxxxxxxxxx
                                                                  sdiv.  */
-                                                              return 1772;
+                                                              return 1827;
                                                             }
                                                           else
                                                             {
@@ -3648,7 +3901,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x1100000xxxxxxxxxxxxx
                                                                  sabd.  */
-                                                              return 1763;
+                                                              return 1818;
                                                             }
                                                         }
                                                     }
@@ -3662,7 +3915,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x0010000xxxxxxxxxxxxx
                                                                  smulh.  */
-                                                              return 1786;
+                                                              return 1841;
                                                             }
                                                           else
                                                             {
@@ -3672,7 +3925,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx001010000xxxxxxxxxxxxx
                                                                      smin.  */
-                                                                  return 1784;
+                                                                  return 1839;
                                                                 }
                                                               else
                                                                 {
@@ -3680,7 +3933,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx011010000xxxxxxxxxxxxx
                                                                      and.  */
-                                                                  return 1241;
+                                                                  return 1296;
                                                                 }
                                                             }
                                                         }
@@ -3690,7 +3943,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx0xx110000xxxxxxxxxxxxx
                                                              sdivr.  */
-                                                          return 1773;
+                                                          return 1828;
                                                         }
                                                     }
                                                 }
@@ -3706,7 +3959,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x0001000xxxxxxxxxxxxx
                                                                  sub.  */
-                                                              return 1902;
+                                                              return 1957;
                                                             }
                                                           else
                                                             {
@@ -3716,7 +3969,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx001001000xxxxxxxxxxxxx
                                                                      umax.  */
-                                                                  return 1930;
+                                                                  return 1985;
                                                                 }
                                                               else
                                                                 {
@@ -3724,7 +3977,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx011001000xxxxxxxxxxxxx
                                                                      eor.  */
-                                                                  return 1328;
+                                                                  return 1383;
                                                                 }
                                                             }
                                                         }
@@ -3736,7 +3989,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x0101000xxxxxxxxxxxxx
                                                                  udiv.  */
-                                                              return 1924;
+                                                              return 1979;
                                                             }
                                                           else
                                                             {
@@ -3744,7 +3997,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  000001x0xx0x1101000xxxxxxxxxxxxx
                                                                  uabd.  */
-                                                              return 1915;
+                                                              return 1970;
                                                             }
                                                         }
                                                     }
@@ -3760,7 +4013,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx000011000xxxxxxxxxxxxx
                                                                      subr.  */
-                                                                  return 1904;
+                                                                  return 1959;
                                                                 }
                                                               else
                                                                 {
@@ -3768,7 +4021,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx010011000xxxxxxxxxxxxx
                                                                      umulh.  */
-                                                                  return 1935;
+                                                                  return 1990;
                                                                 }
                                                             }
                                                           else
@@ -3779,7 +4032,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx001011000xxxxxxxxxxxxx
                                                                      umin.  */
-                                                                  return 1933;
+                                                                  return 1988;
                                                                 }
                                                               else
                                                                 {
@@ -3787,7 +4040,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      000001x0xx011011000xxxxxxxxxxxxx
                                                                      bic.  */
-                                                                  return 1253;
+                                                                  return 1308;
                                                                 }
                                                             }
                                                         }
@@ -3797,7 +4050,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx0xx111000xxxxxxxxxxxxx
                                                              udivr.  */
-                                                          return 1925;
+                                                          return 1980;
                                                         }
                                                     }
                                                 }
@@ -3810,7 +4063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      100001x00x0xxxxx000xxxxxxxxxxxxx
                                                      ld1sb.  */
-                                                  return 1515;
+                                                  return 1570;
                                                 }
                                               else
                                                 {
@@ -3818,48 +4071,81 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      100001x01x0xxxxx000xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1526;
+                                                  return 1581;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx000xxxxxxxxxxxxx
-                                                 ld1sb.  */
-                                              return 1519;
-                                            }
-                                          else
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
                                                   if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         010001x01x0xxxxx000xx0xxxxxxxxxx
-                                                         sdot.  */
-                                                      return 1774;
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx000000xxxxxxxxxx
+                                                             sdot.  */
+                                                          return 1829;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx000010xxxxxxxxxx
+                                                             sqdmlalbt.  */
+                                                          return 2179;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         010001x01x0xxxxx000xx1xxxxxxxxxx
-                                                         udot.  */
-                                                      return 1926;
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx000001xxxxxxxxxx
+                                                             udot.  */
+                                                          return 1981;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx000011xxxxxxxxxx
+                                                             sqdmlslbt.  */
+                                                          return 2186;
+                                                        }
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     010001x0xx0xxxxx0001xxxxxxxxxxxx
+                                                     cdot.  */
+                                                  return 2068;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x00x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1sb.  */
+                                                  return 1574;
+                                                }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
                                                      110001x01x0xxxxx000xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1530;
+                                                  return 1585;
                                                 }
                                             }
                                         }
@@ -3880,7 +4166,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000000xxxxxxxxxx
                                                              add.  */
-                                                          return 1231;
+                                                          return 1286;
                                                         }
                                                       else
                                                         {
@@ -3888,7 +4174,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000100xxxxxxxxxx
                                                              sqadd.  */
-                                                          return 1788;
+                                                          return 1843;
                                                         }
                                                     }
                                                   else
@@ -3897,7 +4183,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          000001x0xx1xxxxx000x10xxxxxxxxxx
                                                          sqsub.  */
-                                                      return 1818;
+                                                      return 1873;
                                                     }
                                                 }
                                               else
@@ -3910,7 +4196,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000001xxxxxxxxxx
                                                              sub.  */
-                                                          return 1900;
+                                                          return 1955;
                                                         }
                                                       else
                                                         {
@@ -3918,7 +4204,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              000001x0xx1xxxxx000101xxxxxxxxxx
                                                              uqadd.  */
-                                                          return 1936;
+                                                          return 1991;
                                                         }
                                                     }
                                                   else
@@ -3927,7 +4213,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          000001x0xx1xxxxx000x11xxxxxxxxxx
                                                          uqsub.  */
-                                                      return 1966;
+                                                      return 2021;
                                                     }
                                                 }
                                             }
@@ -3939,7 +4225,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      100001x00x1xxxxx000xxxxxxxxxxxxx
                                                      prfb.  */
-                                                  return 1721;
+                                                  return 1776;
                                                 }
                                               else
                                                 {
@@ -3947,60 +4233,52 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      100001x01x1xxxxx000xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1527;
+                                                  return 1582;
                                                 }
                                             }
                                         }
                                       else
                                         {
                                           if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x1xxxxx000xxxxxxxxxxxxx
-                                                 prfb.  */
-                                              return 1722;
-                                            }
-                                          else
                                             {
                                               if (((word >> 31) & 0x1) == 0)
                                                 {
                                                   if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             010001x0101xxxxx000xx0xxxxxxxxxx
-                                                             sdot.  */
-                                                          return 1775;
+                                                             010001x00x1xxxxx000x00xxxxxxxxxx
+                                                             sqrdmlah.  */
+                                                          return 2204;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             010001x0111xxxxx000xx0xxxxxxxxxx
-                                                             sdot.  */
-                                                          return 1776;
+                                                             010001x00x1xxxxx000x10xxxxxxxxxx
+                                                             mla.  */
+                                                          return 2111;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             010001x0101xxxxx000xx1xxxxxxxxxx
-                                                             udot.  */
-                                                          return 1927;
+                                                             010001x00x1xxxxx000x01xxxxxxxxxx
+                                                             sqrdmlsh.  */
+                                                          return 2208;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             010001x0111xxxxx000xx1xxxxxxxxxx
-                                                             udot.  */
-                                                          return 1928;
+                                                             010001x00x1xxxxx000x11xxxxxxxxxx
+                                                             mls.  */
+                                                          return 2114;
                                                         }
                                                     }
                                                 }
@@ -4008,849 +4286,967 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     110001x01x1xxxxx000xxxxxxxxxxxxx
-                                                     ld1sh.  */
-                                                  return 1531;
+                                                     110001x00x1xxxxx000xxxxxxxxxxxxx
+                                                     prfb.  */
+                                                  return 1777;
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 18) & 0x1) == 0)
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 12) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0000x0100xxxxxxxxxxxxx
-                                                                 asr.  */
-                                                              return 1249;
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0101xxxxx000000xxxxxxxxxx
+                                                                     sdot.  */
+                                                                  return 1830;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0111xxxxx000000xxxxxxxxxx
+                                                                     sdot.  */
+                                                                  return 1831;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0100x0100xxxxxxxxxxxxx
-                                                                 asr.  */
-                                                              return 1247;
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0101xxxxx000100xxxxxxxxxx
+                                                                     sqrdmlah.  */
+                                                                  return 2205;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0111xxxxx000100xxxxxxxxxx
+                                                                     sqrdmlah.  */
+                                                                  return 2206;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx0x10x0100xxxxxxxxxxxxx
-                                                             asr.  */
-                                                          return 1248;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 20) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx00x1x0100xxxxxxxxxxxxx
-                                                             asrd.  */
-                                                          return 1250;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx01x1x0100xxxxxxxxxxxxx
-                                                             asrr.  */
-                                                          return 1251;
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 17) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 12) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x0xx000001100xxxxxxxxxxxxx
-                                                                     lsr.  */
-                                                                  return 1693;
+                                                                     010001x0101xxxxx000010xxxxxxxxxx
+                                                                     mla.  */
+                                                                  return 2112;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x0xx010001100xxxxxxxxxxxxx
-                                                                     lsr.  */
-                                                                  return 1691;
+                                                                     010001x0111xxxxx000010xxxxxxxxxx
+                                                                     mla.  */
+                                                                  return 2113;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x1001100xxxxxxxxxxxxx
-                                                                 lsr.  */
-                                                              return 1692;
+                                                                 010001x01x1xxxxx000110xxxxxxxxxx
+                                                                 usdot.  */
+                                                              return 2406;
                                                             }
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx0xx101100xxxxxxxxxxxxx
-                                                             lsrr.  */
-                                                          return 1694;
-                                                        }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 12) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x0xx000011100xxxxxxxxxxxxx
-                                                                     lsl.  */
-                                                                  return 1687;
+                                                                     010001x0101xxxxx000001xxxxxxxxxx
+                                                                     udot.  */
+                                                                  return 1982;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x0xx010011100xxxxxxxxxxxxx
-                                                                     lsl.  */
-                                                                  return 1685;
+                                                                     010001x0111xxxxx000001xxxxxxxxxx
+                                                                     udot.  */
+                                                                  return 1983;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1011100xxxxxxxxxxxxx
-                                                                 lsl.  */
-                                                              return 1686;
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0101xxxxx000101xxxxxxxxxx
+                                                                     sqrdmlsh.  */
+                                                                  return 2209;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0111xxxxx000101xxxxxxxxxx
+                                                                     sqrdmlsh.  */
+                                                                  return 2210;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx0xx111100xxxxxxxxxxxxx
-                                                             lslr.  */
-                                                          return 1688;
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0101xxxxx000011xxxxxxxxxx
+                                                                     mls.  */
+                                                                  return 2115;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0111xxxxx000011xxxxxxxxxx
+                                                                     mls.  */
+                                                                  return 2116;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x01x1xxxxx000111xxxxxxxxxx
+                                                                 sudot.  */
+                                                              return 2407;
+                                                            }
                                                         }
                                                     }
                                                 }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 10) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 12) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x0xx1xxxxx1000x0xxxxxxxxxx
-                                                         asr.  */
-                                                      return 1245;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x0xx1xxxxx1001x0xxxxxxxxxx
-                                                         asr.  */
-                                                      return 1246;
-                                                    }
-                                                }
                                               else
                                                 {
-                                                  if (((word >> 11) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 12) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx100001xxxxxxxxxx
-                                                             lsr.  */
-                                                          return 1689;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx100101xxxxxxxxxx
-                                                             lsr.  */
-                                                          return 1690;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 12) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx100011xxxxxxxxxx
-                                                             lsl.  */
-                                                          return 1683;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx100111xxxxxxxxxx
-                                                             lsl.  */
-                                                          return 1684;
-                                                        }
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x01x1xxxxx000xxxxxxxxxxxxx
+                                                     ld1sh.  */
+                                                  return 1586;
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 16) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 17) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x000xxxxxx100xxxxxxxxxxxxx
-                                                     ld1sb.  */
-                                                  return 1521;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x010xxxxxx100xxxxxxxxxxxxx
-                                                     ld1sh.  */
-                                                  return 1534;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x001xxxxxx100xxxxxxxxxxxxx
-                                                     ld1rb.  */
-                                                  return 1491;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x011xxxxxx100xxxxxxxxxxxxx
-                                                     ld1rsw.  */
-                                                  return 1512;
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx100xxxxxxxxxxxxx
-                                                 ld1sb.  */
-                                              return 1520;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x0xxxxx100xxxxxxxxxxxxx
-                                                 ld1sh.  */
-                                              return 1532;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0001xxxxx100xxxxxxxxxxxxx
-                                                     ld1sb.  */
-                                                  return 1525;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0101xxxxx100xxxxxxxxxxxxx
-                                                     ld1sh.  */
-                                                  return 1537;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0011xxxxx100xxxxxxxxxxxxx
-                                                     prfb.  */
-                                                  return 1723;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0111xxxxx100xxxxxxxxxxxxx
-                                                     ld1sh.  */
-                                                  return 1533;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 15) & 0x1) == 0)
-                                {
-                                  if (((word >> 21) & 0x1) == 0)
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x0xx0xxxxx010xxxxxxxxxxxxx
-                                                 mla.  */
-                                              return 1696;
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x00x0xxxxx010xxxxxxxxxxxxx
-                                                     ld1b.  */
-                                                  return 1457;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x01x0xxxxx010xxxxxxxxxxxxx
-                                                     ld1h.  */
-                                                  return 1477;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx010xxxxxxxxxxxxx
-                                                 ld1b.  */
-                                              return 1462;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x0xxxxx010xxxxxxxxxxxxx
-                                                 ld1h.  */
-                                              return 1482;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              if (((word >> 11) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 12) & 0x1) == 0)
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 10) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx010000xxxxxxxxxx
-                                                             index.  */
-                                                          return 1448;
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx000000100xxxxxxxxxxxxx
+                                                                 asr.  */
+                                                              return 1304;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010000100xxxxxxxxxxxxx
+                                                                     asr.  */
+                                                                  return 1302;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx010000100xxxxxxxxxxxxx
+                                                                     shadd.  */
+                                                                  return 2145;
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx010001xxxxxxxxxx
-                                                             index.  */
-                                                          return 1449;
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx001000100xxxxxxxxxxxxx
+                                                                 sqshl.  */
+                                                              return 2223;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx011000100xxxxxxxxxxxxx
+                                                                     asr.  */
+                                                                  return 1303;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx011000100xxxxxxxxxxxxx
+                                                                     sqadd.  */
+                                                                  return 2174;
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0001xxxxx01010xxxxxxxxxxx
-                                                                 addvl.  */
-                                                              return 1235;
+                                                                 0x0001x0xx000100100xxxxxxxxxxxxx
+                                                                 asrd.  */
+                                                              return 1305;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0101xxxxx01010xxxxxxxxxxx
-                                                                 rdvl.  */
-                                                              return 1757;
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010100100xxxxxxxxxxxxx
+                                                                     asrr.  */
+                                                                  return 1306;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx010100100xxxxxxxxxxxxx
+                                                                     srhadd.  */
+                                                                  return 2236;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0x11xxxxx01010xxxxxxxxxxx
-                                                             addpl.  */
-                                                          return 1234;
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001100100xxxxxxxxxxxxx
+                                                                     srshr.  */
+                                                                  return 2240;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx001100100xxxxxxxxxxxxx
+                                                                     sqshlr.  */
+                                                                  return 2224;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx011100100xxxxxxxxxxxxx
+                                                                 suqadd.  */
+                                                              return 2260;
+                                                            }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 10) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x0xx1xxxxx010x10xxxxxxxxxx
-                                                         index.  */
-                                                      return 1450;
-                                                    }
-                                                  else
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x0xx1xxxxx010x11xxxxxxxxxx
-                                                         index.  */
-                                                      return 1447;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x00x1xxxxx010xxxxxxxxxxxxx
-                                                     prfw.  */
-                                                  return 1741;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x01x1xxxxx010xxxxxxxxxxxxx
-                                                     ld1h.  */
-                                                  return 1478;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx000010100xxxxxxxxxxxxx
+                                                                 srshl.  */
+                                                              return 2238;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx010010100xxxxxxxxxxxxx
+                                                                 shsub.  */
+                                                              return 2148;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx001010100xxxxxxxxxxxxx
+                                                                 sqrshl.  */
+                                                              return 2216;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx011010100xxxxxxxxxxxxx
+                                                                 sqsub.  */
+                                                              return 2230;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000110100xxxxxxxxxxxxx
+                                                                     sqshl.  */
+                                                                  return 2222;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx000110100xxxxxxxxxxxxx
+                                                                     srshlr.  */
+                                                                  return 2239;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx010110100xxxxxxxxxxxxx
+                                                                 shsubr.  */
+                                                              return 2149;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx001110100xxxxxxxxxxxxx
+                                                                 sqrshlr.  */
+                                                              return 2217;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx011110100xxxxxxxxxxxxx
+                                                                 sqsubr.  */
+                                                              return 2231;
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x1xxxxx010xxxxxxxxxxxxx
-                                                 prfw.  */
-                                              return 1743;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x1xxxxx010xxxxxxxxxxxxx
-                                                 ld1h.  */
-                                              return 1483;
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          if (((word >> 21) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x0xx0xxxxx110xxxxxxxxxxxxx
-                                                 mad.  */
-                                              return 1695;
-                                            }
                                           else
                                             {
-                                              if (((word >> 10) & 0x1) == 0)
+                                              if (((word >> 17) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 11) & 0x1) == 0)
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0x010xxxx110x00xxxxxxxxxx
-                                                                 sqincw.  */
-                                                              return 1815;
+                                                                 0x0001x0xx000001100xxxxxxxxxxxxx
+                                                                 lsr.  */
+                                                              return 1748;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
+                                                              if (((word >> 30) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x00110xxxx110x00xxxxxxxxxx
-                                                                     sqinch.  */
-                                                                  return 1809;
+                                                                     000001x0xx010001100xxxxxxxxxxxxx
+                                                                     lsr.  */
+                                                                  return 1746;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x01110xxxx110x00xxxxxxxxxx
-                                                                     sqincd.  */
-                                                                  return 1806;
+                                                                     010001x0xx010001100xxxxxxxxxxxxx
+                                                                     uhadd.  */
+                                                                  return 2273;
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0x011xxxx110x00xxxxxxxxxx
-                                                                 incw.  */
-                                                              return 1445;
+                                                                 0x0001x0xx001001100xxxxxxxxxxxxx
+                                                                 uqshl.  */
+                                                              return 2303;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
+                                                              if (((word >> 30) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x00111xxxx110x00xxxxxxxxxx
-                                                                     inch.  */
-                                                                  return 1441;
+                                                                     000001x0xx011001100xxxxxxxxxxxxx
+                                                                     lsr.  */
+                                                                  return 1747;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x01111xxxx110x00xxxxxxxxxx
-                                                                     incd.  */
-                                                                  return 1439;
+                                                                     010001x0xx011001100xxxxxxxxxxxxx
+                                                                     uqadd.  */
+                                                                  return 2297;
                                                                 }
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0x01xxxxx110x10xxxxxxxxxx
-                                                             sqdecw.  */
-                                                          return 1801;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0101100xxxxxxxxxxxxx
+                                                                 lsrr.  */
+                                                              return 1749;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x0101100xxxxxxxxxxxxx
+                                                                 urhadd.  */
+                                                              return 2312;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0011xxxxx110x10xxxxxxxxxx
-                                                                 sqdech.  */
-                                                              return 1795;
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001101100xxxxxxxxxxxxx
+                                                                     urshr.  */
+                                                                  return 2315;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx001101100xxxxxxxxxxxxx
+                                                                     uqshlr.  */
+                                                                  return 2304;
+                                                                }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0111xxxxx110x10xxxxxxxxxx
-                                                                 sqdecd.  */
-                                                              return 1792;
+                                                                 0x0001x0xx011101100xxxxxxxxxxxxx
+                                                                 usqadd.  */
+                                                              return 2320;
                                                             }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 11) & 0x1) == 0)
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0x010xxxx110x01xxxxxxxxxx
-                                                                 uqincw.  */
-                                                              return 1963;
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000011100xxxxxxxxxxxxx
+                                                                     lsl.  */
+                                                                  return 1742;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx000011100xxxxxxxxxxxxx
+                                                                     urshl.  */
+                                                                  return 2313;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
+                                                              if (((word >> 30) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x00110xxxx110x01xxxxxxxxxx
-                                                                     uqinch.  */
-                                                                  return 1957;
+                                                                     000001x0xx010011100xxxxxxxxxxxxx
+                                                                     lsl.  */
+                                                                  return 1740;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x01110xxxx110x01xxxxxxxxxx
-                                                                     uqincd.  */
-                                                                  return 1954;
+                                                                     010001x0xx010011100xxxxxxxxxxxxx
+                                                                     uhsub.  */
+                                                                  return 2274;
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0x011xxxx110x01xxxxxxxxxx
-                                                                 decw.  */
-                                                              return 1320;
+                                                                 0x0001x0xx001011100xxxxxxxxxxxxx
+                                                                 uqrshl.  */
+                                                              return 2298;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
+                                                              if (((word >> 30) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x00111xxxx110x01xxxxxxxxxx
-                                                                     dech.  */
-                                                                  return 1316;
+                                                                     000001x0xx011011100xxxxxxxxxxxxx
+                                                                     lsl.  */
+                                                                  return 1741;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     000001x01111xxxx110x01xxxxxxxxxx
-                                                                     decd.  */
-                                                                  return 1314;
+                                                                     010001x0xx011011100xxxxxxxxxxxxx
+                                                                     uqsub.  */
+                                                                  return 2307;
                                                                 }
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0x01xxxxx110x11xxxxxxxxxx
-                                                             uqdecw.  */
-                                                          return 1949;
-                                                        }
-                                                      else
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0011xxxxx110x11xxxxxxxxxx
-                                                                 uqdech.  */
-                                                              return 1943;
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx000111100xxxxxxxxxxxxx
+                                                                     uqshl.  */
+                                                                  return 2302;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx000111100xxxxxxxxxxxxx
+                                                                     urshlr.  */
+                                                                  return 2314;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0111xxxxx110x11xxxxxxxxxx
-                                                                 uqdecd.  */
-                                                              return 1940;
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx010111100xxxxxxxxxxxxx
+                                                                     lslr.  */
+                                                                  return 1743;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx010111100xxxxxxxxxxxxx
+                                                                     uhsubr.  */
+                                                                  return 2275;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0xx001111100xxxxxxxxxxxxx
+                                                                     sqshlu.  */
+                                                                  return 2225;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx001111100xxxxxxxxxxxxx
+                                                                     uqrshlr.  */
+                                                                  return 2299;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x0001x0xx011111100xxxxxxxxxxxxx
+                                                                 uqsubr.  */
+                                                              return 2308;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 10) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x0000xxxxx110xxxxxxxxxxxxx
-                                                         prfb.  */
-                                                      return 1720;
+                                                         000001x0xx1xxxxx1000x0xxxxxxxxxx
+                                                         asr.  */
+                                                      return 1300;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         100001x0100xxxxx110xxxxxxxxxxxxx
-                                                         prfh.  */
-                                                      return 1735;
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x01xxxxx1000x0xxxxxxxxxx
+                                                             smlalb.  */
+                                                          return 2153;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x11xxxxx1000x0xxxxxxxxxx
+                                                             smlalb.  */
+                                                          return 2154;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x0001xxxxx110xxxxxxxxxxxxx
-                                                         ld1b.  */
-                                                      return 1464;
+                                                         000001x0xx1xxxxx1001x0xxxxxxxxxx
+                                                         asr.  */
+                                                      return 1301;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         100001x0101xxxxx110xxxxxxxxxxxxx
-                                                         ld1h.  */
-                                                      return 1486;
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x01xxxxx1001x0xxxxxxxxxx
+                                                             umlalb.  */
+                                                          return 2278;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x11xxxxx1001x0xxxxxxxxxx
+                                                             umlalb.  */
+                                                          return 2279;
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x001xxxxxx110xxxxxxxxxxxxx
-                                                     ld1rb.  */
-                                                  return 1493;
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx100001xxxxxxxxxx
+                                                             lsr.  */
+                                                          return 1744;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx100011xxxxxxxxxx
+                                                             lsl.  */
+                                                          return 1738;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x01xxxxx1000x1xxxxxxxxxx
+                                                             smlalt.  */
+                                                          return 2156;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x11xxxxx1000x1xxxxxxxxxx
+                                                             smlalt.  */
+                                                          return 2157;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x011xxxxxx110xxxxxxxxxxxxx
-                                                     ld1rh.  */
-                                                  return 1497;
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx100101xxxxxxxxxx
+                                                             lsr.  */
+                                                          return 1745;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx100111xxxxxxxxxx
+                                                             lsl.  */
+                                                          return 1739;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x01xxxxx1001x1xxxxxxxxxx
+                                                             umlalt.  */
+                                                          return 2281;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0x11xxxxx1001x1xxxxxxxxxx
+                                                             umlalt.  */
+                                                          return 2282;
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 21) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 21) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx110xxxxxxxxxxxxx
-                                                 ld1b.  */
-                                              return 1463;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     1x0001x0000xxxxx100xxxxxxxxxxxxx
+                                                     ldnt1sb.  */
+                                                  return 2105;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     1x0001x0100xxxxx100xxxxxxxxxxxxx
+                                                     ldnt1sh.  */
+                                                  return 2106;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x0xxxxx110xxxxxxxxxxxxx
-                                                 ld1h.  */
-                                              return 1484;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0001xxxxx100xxxxxxxxxxxxx
+                                                         ld1sb.  */
+                                                      return 1576;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0001xxxxx100xxxxxxxxxxxxx
+                                                         ld1sb.  */
+                                                      return 1580;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0101xxxxx100xxxxxxxxxxxxx
+                                                         ld1sh.  */
+                                                      return 1589;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0101xxxxx100xxxxxxxxxxxxx
+                                                         ld1sh.  */
+                                                      return 1592;
+                                                    }
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 30) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0001xxxxx110xxxxxxxxxxxxx
-                                                     ld1b.  */
-                                                  return 1469;
+                                                     100001x001xxxxxx100xxxxxxxxxxxxx
+                                                     ld1rb.  */
+                                                  return 1546;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0101xxxxx110xxxxxxxxxxxxx
-                                                     ld1h.  */
-                                                  return 1490;
+                                                  if (((word >> 21) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0010xxxxx100xxxxxxxxxxxxx
+                                                         ld1sb.  */
+                                                      return 1575;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0011xxxxx100xxxxxxxxxxxxx
+                                                         prfb.  */
+                                                      return 1778;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 30) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0011xxxxx110xxxxxxxxxxxxx
-                                                     prfw.  */
-                                                  return 1744;
+                                                     100001x011xxxxxx100xxxxxxxxxxxxx
+                                                     ld1rsw.  */
+                                                  return 1567;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0111xxxxx110xxxxxxxxxxxxx
-                                                     ld1h.  */
-                                                  return 1485;
+                                                  if (((word >> 21) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0110xxxxx100xxxxxxxxxxxxx
+                                                         ld1sh.  */
+                                                      return 1587;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0111xxxxx100xxxxxxxxxxxxx
+                                                         ld1sh.  */
+                                                      return 1588;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
-                        }
-                      else
-                        {
-                          if (((word >> 14) & 0x1) == 0)
+                          else
                             {
                               if (((word >> 15) & 0x1) == 0)
                                 {
@@ -4860,108 +5256,116 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 17) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x0xx0xxxxx010xxxxxxxxxxxxx
+                                                 mla.  */
+                                              return 1751;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x00x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1b.  */
+                                                  return 1512;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x01x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1532;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 16) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx000x00001xxxxxxxxxxxxx
-                                                                 saddv.  */
-                                                              return 1764;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx000x01001xxxxxxxxxxxxx
-                                                                 uaddv.  */
-                                                              return 1916;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx010000xxxxxxxxxx
+                                                             smlalb.  */
+                                                          return 2155;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x0xx010x0x001xxxxxxxxxxxxx
-                                                             movprfx.  */
-                                                          return 1699;
+                                                             010001x0xx0xxxxx010100xxxxxxxxxx
+                                                             smlslb.  */
+                                                          return 2161;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx001x00001xxxxxxxxxxxxx
-                                                                 smaxv.  */
-                                                              return 1782;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx011x00001xxxxxxxxxxxxx
-                                                                 orv.  */
-                                                              return 1716;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx010010xxxxxxxxxx
+                                                             umlalb.  */
+                                                          return 2280;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx001x01001xxxxxxxxxxxxx
-                                                                 umaxv.  */
-                                                              return 1931;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx011x01001xxxxxxxxxxxxx
-                                                                 eorv.  */
-                                                              return 1331;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx010110xxxxxxxxxx
+                                                             umlslb.  */
+                                                          return 2286;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x0xx00xx10001xxxxxxxxxxxxx
-                                                             sminv.  */
-                                                          return 1785;
+                                                             010001x0xx0xxxxx010001xxxxxxxxxx
+                                                             smlalt.  */
+                                                          return 2158;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x0xx01xx10001xxxxxxxxxxxxx
-                                                             andv.  */
-                                                          return 1244;
+                                                             010001x0xx0xxxxx010101xxxxxxxxxx
+                                                             smlslt.  */
+                                                          return 2164;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x0xx0xxx11001xxxxxxxxxxxxx
-                                                         uminv.  */
-                                                      return 1934;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx010011xxxxxxxxxx
+                                                             umlalt.  */
+                                                          return 2283;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx010111xxxxxxxxxx
+                                                             umlslt.  */
+                                                          return 2289;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -4971,86 +5375,130 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x00x0xxxxx001xxxxxxxxxxxxx
-                                                     ldff1sb.  */
-                                                  return 1615;
+                                                     110001x00x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1b.  */
+                                                  return 1517;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x01x0xxxxx001xxxxxxxxxxxxx
-                                                     ldff1sh.  */
-                                                  return 1626;
+                                                     110001x01x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1537;
                                                 }
                                             }
                                         }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx001xxxxxxxxxxxxx
-                                                 ldff1sb.  */
-                                              return 1622;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x0xxxxx001xxxxxxxxxxxxx
-                                                 ldff1sh.  */
-                                              return 1632;
-                                            }
-                                        }
                                     }
                                   else
                                     {
-                                      if (((word >> 23) & 0x1) == 0)
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx010000xxxxxxxxxx
+                                                             index.  */
+                                                          return 1503;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx010001xxxxxxxxxx
+                                                             index.  */
+                                                          return 1504;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0001xxxxx01010xxxxxxxxxxx
+                                                                 addvl.  */
+                                                              return 1290;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0101xxxxx01010xxxxxxxxxxx
+                                                                 rdvl.  */
+                                                              return 1812;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0x11xxxxx01010xxxxxxxxxxx
+                                                             addpl.  */
+                                                          return 1289;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x0001xxxxx001xxxxxxxxxxxxx
-                                                         and.  */
-                                                      return 1239;
+                                                         000001x0xx1xxxxx010x10xxxxxxxxxx
+                                                         index.  */
+                                                      return 1505;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x0011xxxxx001xxxxxxxxxxxxx
-                                                         orr.  */
-                                                      return 1711;
+                                                         000001x0xx1xxxxx010x11xxxxxxxxxx
+                                                         index.  */
+                                                      return 1502;
                                                     }
                                                 }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x00x1xxxxx010xxxxxxxxxxxxx
+                                                     prfw.  */
+                                                  return 1796;
+                                                }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x00x1xxxxx001xxxxxxxxxxxxx
-                                                     prfh.  */
-                                                  return 1734;
+                                                     100001x01x1xxxxx010xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1533;
                                                 }
                                             }
-                                          else
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 x10001x00x1xxxxx001xxxxxxxxxxxxx
-                                                 prfh.  */
-                                              return 1736;
+                                                 x10001x00x1xxxxx010xxxxxxxxxxxxx
+                                                 prfw.  */
+                                              return 1798;
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          else
                                             {
                                               if (((word >> 31) & 0x1) == 0)
                                                 {
@@ -5058,36 +5506,28 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x0101xxxxx001xxxxxxxxxxxxx
-                                                         eor.  */
-                                                      return 1326;
+                                                         010001x0101xxxxx010xxxxxxxxxxxxx
+                                                         cdot.  */
+                                                      return 2070;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x0111xxxxx001xxxxxxxxxxxxx
-                                                         bic.  */
-                                                      return 1252;
+                                                         010001x0111xxxxx010xxxxxxxxxxxxx
+                                                         cdot.  */
+                                                      return 2069;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x01x1xxxxx001xxxxxxxxxxxxx
-                                                     ldff1sh.  */
-                                                  return 1627;
+                                                     110001x01x1xxxxx010xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1538;
                                                 }
                                             }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x1xxxxx001xxxxxxxxxxxxx
-                                                 ldff1sh.  */
-                                              return 1633;
-                                            }
                                         }
                                     }
                                 }
@@ -5099,268 +5539,268 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 21) & 0x1) == 0)
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x0xx0xxxxx110xxxxxxxxxxxxx
+                                                 mad.  */
+                                              return 1750;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 20) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0000101xxxxxxxxxxxxx
-                                                                 sxtb.  */
-                                                              return 1907;
+                                                                 000001x0x010xxxx110x00xxxxxxxxxx
+                                                                 sqincw.  */
+                                                              return 1870;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1000101xxxxxxxxxxxxx
-                                                                 cls.  */
-                                                              return 1272;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00110xxxx110x00xxxxxxxxxx
+                                                                     sqinch.  */
+                                                                  return 1864;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01110xxxx110x00xxxxxxxxxx
+                                                                     sqincd.  */
+                                                                  return 1861;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0100101xxxxxxxxxxxxx
-                                                                 sxtw.  */
-                                                              return 1909;
+                                                                 000001x0x011xxxx110x00xxxxxxxxxx
+                                                                 incw.  */
+                                                              return 1500;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1100101xxxxxxxxxxxxx
-                                                                 fabs.  */
-                                                              return 1334;
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00111xxxx110x00xxxxxxxxxx
+                                                                     inch.  */
+                                                                  return 1496;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01111xxxx110x00xxxxxxxxxx
+                                                                     incd.  */
+                                                                  return 1494;
+                                                                }
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x0010101xxxxxxxxxxxxx
-                                                                 sxth.  */
-                                                              return 1908;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1010101xxxxxxxxxxxxx
-                                                                 cnt.  */
-                                                              return 1301;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0x01xxxxx110x10xxxxxxxxxx
+                                                             sqdecw.  */
+                                                          return 1856;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0110101xxxxxxxxxxxxx
-                                                                 abs.  */
-                                                              return 1230;
+                                                                 000001x0011xxxxx110x10xxxxxxxxxx
+                                                                 sqdech.  */
+                                                              return 1850;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x1110101xxxxxxxxxxxxx
-                                                                 not.  */
-                                                              return 1708;
+                                                                 000001x0111xxxxx110x10xxxxxxxxxx
+                                                                 sqdecd.  */
+                                                              return 1847;
                                                             }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 20) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0001101xxxxxxxxxxxxx
-                                                                 uxtb.  */
-                                                              return 1970;
+                                                                 000001x0x010xxxx110x01xxxxxxxxxx
+                                                                 uqincw.  */
+                                                              return 2018;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1001101xxxxxxxxxxxxx
-                                                                 clz.  */
-                                                              return 1273;
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00110xxxx110x01xxxxxxxxxx
+                                                                     uqinch.  */
+                                                                  return 2012;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01110xxxx110x01xxxxxxxxxx
+                                                                     uqincd.  */
+                                                                  return 2009;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0101101xxxxxxxxxxxxx
-                                                                 uxtw.  */
-                                                              return 1972;
+                                                                 000001x0x011xxxx110x01xxxxxxxxxx
+                                                                 decw.  */
+                                                              return 1375;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x0xx0x1101101xxxxxxxxxxxxx
-                                                                 fneg.  */
-                                                              return 1411;
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00111xxxx110x01xxxxxxxxxx
+                                                                     dech.  */
+                                                                  return 1371;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01111xxxx110x01xxxxxxxxxx
+                                                                     decd.  */
+                                                                  return 1369;
+                                                                }
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0x01xxxxx110x11xxxxxxxxxx
+                                                             uqdecw.  */
+                                                          return 2004;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x0011101xxxxxxxxxxxxx
-                                                                 uxth.  */
-                                                              return 1971;
+                                                                 000001x0011xxxxx110x11xxxxxxxxxx
+                                                                 uqdech.  */
+                                                              return 1998;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x0xx0x1011101xxxxxxxxxxxxx
-                                                                 cnot.  */
-                                                              return 1300;
+                                                                 000001x0111xxxxx110x11xxxxxxxxxx
+                                                                 uqdecd.  */
+                                                              return 1995;
                                                             }
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx0xx111101xxxxxxxxxxxxx
-                                                             neg.  */
-                                                          return 1705;
-                                                        }
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 12) & 0x1) == 0)
+                                              if (((word >> 21) & 0x1) == 0)
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0001xxxxx1010xxxxxxxxxxxx
-                                                             adr.  */
-                                                          return 1236;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0011xxxxx1010xxxxxxxxxxxx
-                                                             adr.  */
-                                                          return 1237;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0000xxxxx110xxxxxxxxxxxxx
+                                                         prfb.  */
+                                                      return 1775;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x01x1xxxxx1010xxxxxxxxxxxx
-                                                         adr.  */
-                                                      return 1238;
+                                                         100001x0100xxxxx110xxxxxxxxxxxxx
+                                                         prfh.  */
+                                                      return 1790;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 10) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 11) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx101100xxxxxxxxxx
-                                                             ftssel.  */
-                                                          return 1437;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x0xx1xxxxx101110xxxxxxxxxx
-                                                             fexpa.  */
-                                                          return 1381;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0001xxxxx110xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1519;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         000001x0xx1xxxxx1011x1xxxxxxxxxx
-                                                         movprfx.  */
-                                                      return 1698;
+                                                         100001x0101xxxxx110xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1541;
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x000xxxxxx101xxxxxxxxxxxxx
-                                                     ldff1sb.  */
-                                                  return 1624;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x010xxxxxx101xxxxxxxxxxxxx
-                                                     ldff1sh.  */
-                                                  return 1636;
-                                                }
-                                            }
                                           else
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x001xxxxxx101xxxxxxxxxxxxx
+                                                     100001x001xxxxxx110xxxxxxxxxxxxx
                                                      ld1rb.  */
-                                                  return 1492;
+                                                  return 1548;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x011xxxxxx101xxxxxxxxxxxxx
+                                                     100001x011xxxxxx110xxxxxxxxxxxxx
                                                      ld1rh.  */
-                                                  return 1496;
+                                                  return 1552;
                                                 }
                                             }
                                         }
@@ -5368,25 +5808,6 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                   else
                                     {
                                       if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx101xxxxxxxxxxxxx
-                                                 ldff1sb.  */
-                                              return 1623;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x0xxxxx101xxxxxxxxxxxxx
-                                                 ldff1sh.  */
-                                              return 1634;
-                                            }
-                                        }
-                                      else
                                         {
                                           if (((word >> 22) & 0x1) == 0)
                                             {
@@ -5394,17 +5815,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0001xxxxx101xxxxxxxxxxxxx
-                                                     ldff1sb.  */
-                                                  return 1625;
+                                                     x10001x0000xxxxx110xxxxxxxxxxxxx
+                                                     ldnt1b.  */
+                                                  return 2101;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0101xxxxx101xxxxxxxxxxxxx
-                                                     ldff1sh.  */
-                                                  return 1637;
+                                                     x10001x0100xxxxx110xxxxxxxxxxxxx
+                                                     ldnt1h.  */
+                                                  return 2104;
                                                 }
                                             }
                                           else
@@ -5413,24 +5834,156 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0011xxxxx101xxxxxxxxxxxxx
-                                                     prfh.  */
-                                                  return 1737;
+                                                     x10001x0010xxxxx110xxxxxxxxxxxxx
+                                                     ld1b.  */
+                                                  return 1518;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0111xxxxx101xxxxxxxxxxxxx
-                                                     ldff1sh.  */
-                                                  return 1635;
+                                                     x10001x0110xxxxx110xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1539;
                                                 }
                                             }
                                         }
-                                    }
-                                }
-                            }
-                          else
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x0001xxxxx110xxxxxxxxxxxxx
+                                                     ld1b.  */
+                                                  return 1524;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1100x0xxxxxxxxxx
+                                                                 smullb.  */
+                                                              return 2166;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1101x0xxxxxxxxxx
+                                                                 umullb.  */
+                                                              return 2291;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1100x1xxxxxxxxxx
+                                                                 smullt.  */
+                                                              return 2169;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1101x1xxxxxxxxxx
+                                                                 umullt.  */
+                                                              return 2294;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0101xxxxx110xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1545;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x0011xxxxx110xxxxxxxxxxxxx
+                                                     prfw.  */
+                                                  return 1799;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1100x0xxxxxxxxxx
+                                                                 smullb.  */
+                                                              return 2167;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1101x0xxxxxxxxxx
+                                                                 umullb.  */
+                                                              return 2292;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1100x1xxxxxxxxxx
+                                                                 smullt.  */
+                                                              return 2170;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1101x1xxxxxxxxxx
+                                                                 umullt.  */
+                                                              return 2295;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0111xxxxx110xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1540;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 14) & 0x1) == 0)
                             {
                               if (((word >> 15) & 0x1) == 0)
                                 {
@@ -5440,11 +5993,110 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x0xx0xxxxx011xxxxxxxxxxxxx
-                                                 mls.  */
-                                              return 1697;
+                                              if (((word >> 17) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx000x00001xxxxxxxxxxxxx
+                                                                 saddv.  */
+                                                              return 1819;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx000x01001xxxxxxxxxxxxx
+                                                                 uaddv.  */
+                                                              return 1971;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx010x0x001xxxxxxxxxxxxx
+                                                             movprfx.  */
+                                                          return 1754;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx001x00001xxxxxxxxxxxxx
+                                                                 smaxv.  */
+                                                              return 1837;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx011x00001xxxxxxxxxxxxx
+                                                                 orv.  */
+                                                              return 1771;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx001x01001xxxxxxxxxxxxx
+                                                                 umaxv.  */
+                                                              return 1986;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx011x01001xxxxxxxxxxxxx
+                                                                 eorv.  */
+                                                              return 1386;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx00xx10001xxxxxxxxxxxxx
+                                                             sminv.  */
+                                                          return 1840;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx01xx10001xxxxxxxxxxxxx
+                                                             andv.  */
+                                                          return 1299;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x0xx0xxx11001xxxxxxxxxxxxx
+                                                         uminv.  */
+                                                      return 1989;
+                                                    }
+                                                }
                                             }
                                           else
                                             {
@@ -5452,599 +6104,566 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x00x0xxxxx011xxxxxxxxxxxxx
-                                                     ldff1b.  */
-                                                  return 1581;
+                                                     100001x00x0xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sb.  */
+                                                  return 1670;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x01x0xxxxx011xxxxxxxxxxxxx
-                                                     ldff1h.  */
-                                                  return 1601;
+                                                     100001x01x0xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1681;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x0xxxxx011xxxxxxxxxxxxx
-                                                 ldff1b.  */
-                                              return 1590;
+                                              if (((word >> 12) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     010001x0xx0xxxxx0010xxxxxxxxxxxx
+                                                     cmla.  */
+                                                  return 2071;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     010001x0xx0xxxxx0011xxxxxxxxxxxx
+                                                     sqrdcmlah.  */
+                                                  return 2203;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x0xxxxx011xxxxxxxxxxxxx
-                                                 ldff1h.  */
-                                              return 1609;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x00x0xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sb.  */
+                                                  return 1677;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x01x0xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1687;
+                                                }
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 23) & 0x1) == 0)
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x00001x00x1xxxxx011xxxxxxxxxxxxx
-                                                 prfd.  */
-                                              return 1727;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x00x1xxxxx011xxxxxxxxxxxxx
-                                                 prfd.  */
-                                              return 1729;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x00001x01x1xxxxx011xxxxxxxxxxxxx
-                                                 ldff1h.  */
-                                              return 1602;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x01x1xxxxx011xxxxxxxxxxxxx
-                                                 ldff1h.  */
-                                              return 1610;
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          if (((word >> 21) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x0xx0xxxxx111xxxxxxxxxxxxx
-                                                 msb.  */
-                                              return 1700;
-                                            }
-                                          else
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
                                               if (((word >> 10) & 0x1) == 0)
                                                 {
                                                   if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 12) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00010xxxx111000xxxxxxxxxx
-                                                                         cntb.  */
-                                                                      return 1302;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01010xxxx111000xxxxxxxxxx
-                                                                         cntw.  */
-                                                                      return 1306;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00110xxxx111000xxxxxxxxxx
-                                                                         cnth.  */
-                                                                      return 1304;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01110xxxx111000xxxxxxxxxx
-                                                                         cntd.  */
-                                                                      return 1303;
-                                                                    }
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0001xxxxx001x00xxxxxxxxxx
+                                                                 and.  */
+                                                              return 1294;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00011xxxx111000xxxxxxxxxx
-                                                                         incb.  */
-                                                                      return 1438;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01011xxxx111000xxxxxxxxxx
-                                                                         incw.  */
-                                                                      return 1446;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00111xxxx111000xxxxxxxxxx
-                                                                         inch.  */
-                                                                      return 1442;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01111xxxx111000xxxxxxxxxx
-                                                                         incd.  */
-                                                                      return 1440;
-                                                                    }
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0101xxxxx001x00xxxxxxxxxx
+                                                                 eor.  */
+                                                              return 1381;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00010xxxx111100xxxxxxxxxx
-                                                                         sqincb.  */
-                                                                      return 1805;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01010xxxx111100xxxxxxxxxx
-                                                                         sqincw.  */
-                                                                      return 1817;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00110xxxx111100xxxxxxxxxx
-                                                                         sqinch.  */
-                                                                      return 1811;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01110xxxx111100xxxxxxxxxx
-                                                                         sqincd.  */
-                                                                      return 1808;
-                                                                    }
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0011xxxxx001x00xxxxxxxxxx
+                                                                 orr.  */
+                                                              return 1766;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00011xxxx111100xxxxxxxxxx
-                                                                         sqincb.  */
-                                                                      return 1804;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01011xxxx111100xxxxxxxxxx
-                                                                         sqincw.  */
-                                                                      return 1816;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00111xxxx111100xxxxxxxxxx
-                                                                         sqinch.  */
-                                                                      return 1810;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01111xxxx111100xxxxxxxxxx
-                                                                         sqincd.  */
-                                                                      return 1807;
-                                                                    }
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0111xxxxx001x00xxxxxxxxxx
+                                                                 bic.  */
+                                                              return 1307;
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0x01xxxxx001x10xxxxxxxxxx
+                                                             eor3.  */
+                                                          return 2074;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0x11xxxxx001x10xxxxxxxxxx
+                                                             bcax.  */
+                                                          return 2063;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x0xx1xxxxx001x01xxxxxxxxxx
+                                                         xar.  */
+                                                      return 2336;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00010xxxx111x10xxxxxxxxxx
-                                                                     sqdecb.  */
-                                                                  return 1791;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01010xxxx111x10xxxxxxxxxx
-                                                                     sqdecw.  */
-                                                                  return 1803;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0001xxxxx001x11xxxxxxxxxx
+                                                                 bsl.  */
+                                                              return 2064;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00110xxxx111x10xxxxxxxxxx
-                                                                     sqdech.  */
-                                                                  return 1797;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01110xxxx111x10xxxxxxxxxx
-                                                                     sqdecd.  */
-                                                                  return 1794;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0101xxxxx001x11xxxxxxxxxx
+                                                                 bsl2n.  */
+                                                              return 2066;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00011xxxx111x10xxxxxxxxxx
-                                                                     sqdecb.  */
-                                                                  return 1790;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01011xxxx111x10xxxxxxxxxx
-                                                                     sqdecw.  */
-                                                                  return 1802;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0011xxxxx001x11xxxxxxxxxx
+                                                                 bsl1n.  */
+                                                              return 2065;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00111xxxx111x10xxxxxxxxxx
-                                                                     sqdech.  */
-                                                                  return 1796;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01111xxxx111x10xxxxxxxxxx
-                                                                     sqdecd.  */
-                                                                  return 1793;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0111xxxxx001x11xxxxxxxxxx
+                                                                 nbsl.  */
+                                                              return 2121;
                                                             }
                                                         }
                                                     }
                                                 }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x00x1xxxxx001xxxxxxxxxxxxx
+                                                     prfh.  */
+                                                  return 1789;
+                                                }
                                               else
                                                 {
-                                                  if (((word >> 11) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x01x1xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1682;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x10001x00x1xxxxx001xxxxxxxxxxxxx
+                                                 prfh.  */
+                                              return 1791;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
                                                       if (((word >> 12) & 0x1) == 0)
                                                         {
                                                           if (((word >> 22) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x0001xxxxx111001xxxxxxxxxx
-                                                                     decb.  */
-                                                                  return 1313;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x0101xxxxx111001xxxxxxxxxx
-                                                                     decw.  */
-                                                                  return 1321;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx0010x0xxxxxxxxxx
+                                                                 sqdmlalb.  */
+                                                              return 2176;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x0011xxxxx111001xxxxxxxxxx
-                                                                     dech.  */
-                                                                  return 1317;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x0111xxxxx111001xxxxxxxxxx
-                                                                     decd.  */
-                                                                  return 1315;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx0010x0xxxxxxxxxx
+                                                                 sqdmlalb.  */
+                                                              return 2177;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00010xxxx111101xxxxxxxxxx
-                                                                         uqincb.  */
-                                                                      return 1952;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01010xxxx111101xxxxxxxxxx
-                                                                         uqincw.  */
-                                                                      return 1964;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00110xxxx111101xxxxxxxxxx
-                                                                         uqinch.  */
-                                                                      return 1958;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01110xxxx111101xxxxxxxxxx
-                                                                         uqincd.  */
-                                                                      return 1955;
-                                                                    }
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx0011x0xxxxxxxxxx
+                                                                 sqdmlslb.  */
+                                                              return 2183;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 22) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00011xxxx111101xxxxxxxxxx
-                                                                         uqincb.  */
-                                                                      return 1953;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01011xxxx111101xxxxxxxxxx
-                                                                         uqincw.  */
-                                                                      return 1965;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 23) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x00111xxxx111101xxxxxxxxxx
-                                                                         uqinch.  */
-                                                                      return 1959;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x01111xxxx111101xxxxxxxxxx
-                                                                         uqincd.  */
-                                                                      return 1956;
-                                                                    }
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx0011x0xxxxxxxxxx
+                                                                 sqdmlslb.  */
+                                                              return 2184;
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
                                                           if (((word >> 22) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00010xxxx111x11xxxxxxxxxx
-                                                                     uqdecb.  */
-                                                                  return 1938;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01010xxxx111x11xxxxxxxxxx
-                                                                     uqdecw.  */
-                                                                  return 1950;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx0010x1xxxxxxxxxx
+                                                                 sqdmlalt.  */
+                                                              return 2180;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00110xxxx111x11xxxxxxxxxx
-                                                                     uqdech.  */
-                                                                  return 1944;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01110xxxx111x11xxxxxxxxxx
-                                                                     uqdecd.  */
-                                                                  return 1941;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx0010x1xxxxxxxxxx
+                                                                 sqdmlalt.  */
+                                                              return 2181;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 22) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00011xxxx111x11xxxxxxxxxx
-                                                                     uqdecb.  */
-                                                                  return 1939;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01011xxxx111x11xxxxxxxxxx
-                                                                     uqdecw.  */
-                                                                  return 1951;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx0011x1xxxxxxxxxx
+                                                                 sqdmlslt.  */
+                                                              return 2187;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 23) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x00111xxxx111x11xxxxxxxxxx
-                                                                     uqdech.  */
-                                                                  return 1945;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x01111xxxx111x11xxxxxxxxxx
-                                                                     uqdecd.  */
-                                                                  return 1942;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx0011x1xxxxxxxxxx
+                                                                 sqdmlslt.  */
+                                                              return 2188;
                                                             }
                                                         }
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x01x1xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1688;
+                                                }
                                             }
                                         }
-                                      else
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 21) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         100001x0000xxxxx111xxxxxxxxxxxxx
-                                                         prfb.  */
-                                                      return 1724;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0000101xxxxxxxxxxxxx
+                                                                 sxtb.  */
+                                                              return 1962;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1000101xxxxxxxxxxxxx
+                                                                 cls.  */
+                                                              return 1327;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0100101xxxxxxxxxxxxx
+                                                                 sxtw.  */
+                                                              return 1964;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1100101xxxxxxxxxxxxx
+                                                                 fabs.  */
+                                                              return 1389;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0010101xxxxxxxxxxxxx
+                                                                 sxth.  */
+                                                              return 1963;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1010101xxxxxxxxxxxxx
+                                                                 cnt.  */
+                                                              return 1356;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0110101xxxxxxxxxxxxx
+                                                                 abs.  */
+                                                              return 1285;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1110101xxxxxxxxxxxxx
+                                                                 not.  */
+                                                              return 1763;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0001101xxxxxxxxxxxxx
+                                                                 uxtb.  */
+                                                              return 2025;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1001101xxxxxxxxxxxxx
+                                                                 clz.  */
+                                                              return 1328;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0101101xxxxxxxxxxxxx
+                                                                 uxtw.  */
+                                                              return 2027;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1101101xxxxxxxxxxxxx
+                                                                 fneg.  */
+                                                              return 1466;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0011101xxxxxxxxxxxxx
+                                                                 uxth.  */
+                                                              return 2026;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1011101xxxxxxxxxxxxx
+                                                                 cnot.  */
+                                                              return 1355;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx0xx111101xxxxxxxxxxxxx
+                                                             neg.  */
+                                                          return 1760;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 12) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0001xxxxx1010xxxxxxxxxxxx
+                                                             adr.  */
+                                                          return 1291;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0011xxxxx1010xxxxxxxxxxxx
+                                                             adr.  */
+                                                          return 1292;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x0100xxxxx111xxxxxxxxxxxxx
-                                                         prfh.  */
-                                                      return 1738;
+                                                         000001x01x1xxxxx1010xxxxxxxxxxxx
+                                                         adr.  */
+                                                      return 1293;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx101100xxxxxxxxxx
+                                                             ftssel.  */
+                                                          return 1492;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx101110xxxxxxxxxx
+                                                             fexpa.  */
+                                                          return 1436;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x0xx1xxxxx1011x1xxxxxxxxxx
+                                                         movprfx.  */
+                                                      return 1753;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0000xxxxx101xxxxxxxxxxxxx
+                                                         ldnt1b.  */
+                                                      return 2100;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0100xxxxx101xxxxxxxxxxxxx
+                                                         ldnt1h.  */
+                                                      return 2103;
                                                     }
                                                 }
                                               else
@@ -6053,17 +6672,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x0001xxxxx111xxxxxxxxxxxxx
-                                                         ldff1b.  */
-                                                      return 1592;
+                                                         100001x0001xxxxx101xxxxxxxxxxxxx
+                                                         ldff1sb.  */
+                                                      return 1679;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x0101xxxxx111xxxxxxxxxxxxx
-                                                         ldff1h.  */
-                                                      return 1613;
+                                                         100001x0101xxxxx101xxxxxxxxxxxxx
+                                                         ldff1sh.  */
+                                                      return 1691;
                                                     }
                                                 }
                                             }
@@ -6073,17 +6692,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x001xxxxxx111xxxxxxxxxxxxx
+                                                     100001x001xxxxxx101xxxxxxxxxxxxx
                                                      ld1rb.  */
-                                                  return 1494;
+                                                  return 1547;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x011xxxxxx111xxxxxxxxxxxxx
+                                                     100001x011xxxxxx101xxxxxxxxxxxxx
                                                      ld1rh.  */
-                                                  return 1498;
+                                                  return 1551;
                                                 }
                                             }
                                         }
@@ -6092,42 +6711,141 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0000xxxxx111xxxxxxxxxxxxx
-                                                     prfb.  */
-                                                  return 1726;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0100xxxxx111xxxxxxxxxxxxx
-                                                     prfh.  */
-                                                  return 1740;
-                                                }
-                                            }
-                                          else
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x0000101xxxxxxxxxxxxx
+                                                                 urecpe.  */
+                                                              return 2311;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x1000101xxxxxxxxxxxxx
+                                                                 sqabs.  */
+                                                              return 2173;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx00x100101xxxxxxxxxxxxx
+                                                                 sadalp.  */
+                                                              return 2137;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx01x100101xxxxxxxxxxxxx
+                                                                 smaxp.  */
+                                                              return 2151;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x0xx0xxx10101xxxxxxxxxxxxx
+                                                         sminp.  */
+                                                      return 2152;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx000001101xxxxxxxxxxxxx
+                                                                     ursqrte.  */
+                                                                  return 2316;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0xx010001101xxxxxxxxxxxxx
+                                                                     addp.  */
+                                                                  return 2062;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx0x1001101xxxxxxxxxxxxx
+                                                                 sqneg.  */
+                                                              return 2200;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx00x101101xxxxxxxxxxxxx
+                                                                 uadalp.  */
+                                                              return 2268;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0xx01x101101xxxxxxxxxxxxx
+                                                                 umaxp.  */
+                                                              return 2276;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x0xx0xxx11101xxxxxxxxxxxxx
+                                                         uminp.  */
+                                                      return 2277;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0010xxxxx111xxxxxxxxxxxxx
-                                                     ldff1b.  */
-                                                  return 1591;
+                                                     110001x00x0xxxxx101xxxxxxxxxxxxx
+                                                     ldff1sb.  */
+                                                  return 1678;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0110xxxxx111xxxxxxxxxxxxx
-                                                     ldff1h.  */
-                                                  return 1611;
+                                                     110001x01x0xxxxx101xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1689;
                                                 }
                                             }
                                         }
@@ -6139,17 +6857,61 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0001xxxxx111xxxxxxxxxxxxx
-                                                     ldff1b.  */
-                                                  return 1593;
+                                                     x10001x0001xxxxx101xxxxxxxxxxxxx
+                                                     ldff1sb.  */
+                                                  return 1680;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0101xxxxx111xxxxxxxxxxxxx
-                                                     ldff1h.  */
-                                                  return 1614;
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1010x0xxxxxxxxxx
+                                                                 smlslb.  */
+                                                              return 2159;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1011x0xxxxxxxxxx
+                                                                 umlslb.  */
+                                                              return 2284;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1010x1xxxxxxxxxx
+                                                                 smlslt.  */
+                                                              return 2162;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1011x1xxxxxxxxxx
+                                                                 umlslt.  */
+                                                              return 2287;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0101xxxxx101xxxxxxxxxxxxx
+                                                         ldff1sh.  */
+                                                      return 1692;
+                                                    }
                                                 }
                                             }
                                           else
@@ -6158,55 +6920,82 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x0011xxxxx111xxxxxxxxxxxxx
-                                                     prfd.  */
-                                                  return 1730;
+                                                     x10001x0011xxxxx101xxxxxxxxxxxxx
+                                                     prfh.  */
+                                                  return 1792;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x0111xxxxx111xxxxxxxxxxxxx
-                                                     ldff1h.  */
-                                                  return 1612;
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1010x0xxxxxxxxxx
+                                                                 smlslb.  */
+                                                              return 2160;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1011x0xxxxxxxxxx
+                                                                 umlslb.  */
+                                                              return 2285;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1010x1xxxxxxxxxx
+                                                                 smlslt.  */
+                                                              return 2163;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1011x1xxxxxxxxxx
+                                                                 umlslt.  */
+                                                              return 2288;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0111xxxxx101xxxxxxxxxxxxx
+                                                         ldff1sh.  */
+                                                      return 1690;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
-                        }
-                    }
-                  else
-                    {
-                      if (((word >> 21) & 0x1) == 0)
-                        {
-                          if (((word >> 15) & 0x1) == 0)
+                          else
                             {
-                              if (((word >> 30) & 0x1) == 0)
+                              if (((word >> 15) & 0x1) == 0)
                                 {
-                                  if (((word >> 13) & 0x1) == 0)
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx000xxxxxxxx0xxxx
-                                                     cmphs.  */
-                                                  return 1286;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx000xxxxxxxx1xxxx
-                                                     cmphi.  */
-                                                  return 1283;
-                                                }
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x0xx0xxxxx011xxxxxxxxxxxxx
+                                                 mls.  */
+                                              return 1752;
                                             }
                                           else
                                             {
@@ -6214,17 +7003,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     101001x00x0xxxxx000xxxxxxxxxxxxx
-                                                     ld1rqb.  */
-                                                  return 1500;
+                                                     100001x00x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1b.  */
+                                                  return 1636;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     101001x01x0xxxxx000xxxxxxxxxxxxx
-                                                     ld1rqh.  */
-                                                  return 1504;
+                                                     100001x01x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1h.  */
+                                                  return 1656;
                                                 }
                                             }
                                         }
@@ -6232,344 +7021,2269 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx010xxxxxxxx0xxxx
-                                                     cmpge.  */
-                                                  return 1277;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx010xxxxxxxx1xxxx
-                                                     cmpgt.  */
-                                                  return 1280;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0000xxxxx010xxxxxxxxxxxxx
-                                                         ld1b.  */
-                                                      return 1458;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx011000xxxxxxxxxx
+                                                             sqdmlalb.  */
+                                                          return 2178;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx011100xxxxxxxxxx
+                                                             sqrdmlah.  */
+                                                          return 2207;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0100xxxxx010xxxxxxxxxxxxx
-                                                         ld1sw.  */
-                                                      return 1538;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx011010xxxxxxxxxx
+                                                             sqdmlslb.  */
+                                                          return 2185;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx011110xxxxxxxxxx
+                                                             usdot.  */
+                                                          return 2405;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0010xxxxx010xxxxxxxxxxxxx
-                                                         ld1b.  */
-                                                      return 1460;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx011001xxxxxxxxxx
+                                                             sqdmlalt.  */
+                                                          return 2182;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0xx0xxxxx011101xxxxxxxxxx
+                                                             sqrdmlsh.  */
+                                                          return 2211;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0110xxxxx010xxxxxxxxxxxxx
-                                                         ld1h.  */
-                                                      return 1480;
+                                                         010001x0xx0xxxxx011x11xxxxxxxxxx
+                                                         sqdmlslt.  */
+                                                      return 2189;
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              if (((word >> 4) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx001xxxxxxxx0xxxx
-                                                     cmpeq.  */
-                                                  return 1274;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx001xxxxxxxx1xxxx
-                                                     cmpne.  */
-                                                  return 1297;
-                                                }
-                                            }
                                           else
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     101001x00x0xxxxx001xxxxxxxxxxxxx
-                                                     ld1rqb.  */
-                                                  return 1499;
+                                                     110001x00x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1b.  */
+                                                  return 1645;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     101001x01x0xxxxx001xxxxxxxxxxxxx
-                                                     ld1rqh.  */
-                                                  return 1503;
+                                                     110001x01x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1h.  */
+                                                  return 1664;
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx011xxxxxxxx0xxxx
-                                                     cmplt.  */
-                                                  return 1295;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx011xxxxxxxx1xxxx
-                                                     cmple.  */
-                                                  return 1289;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0000xxxxx011xxxxxxxxxxxxx
-                                                         ldff1b.  */
-                                                      return 1582;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx011000xxxxxxxxxx
+                                                             mul.  */
+                                                          return 2120;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx011100xxxxxxxxxx
+                                                             sqdmulh.  */
+                                                          return 2193;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0100xxxxx011xxxxxxxxxxxxx
-                                                         ldff1sw.  */
-                                                      return 1638;
+                                                         000001x0xx1xxxxx011x10xxxxxxxxxx
+                                                         smulh.  */
+                                                      return 2165;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0010xxxxx011xxxxxxxxxxxxx
-                                                         ldff1b.  */
-                                                      return 1586;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx011001xxxxxxxxxx
+                                                             pmul.  */
+                                                          return 2123;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx1xxxxx011101xxxxxxxxxx
+                                                             sqrdmulh.  */
+                                                          return 2215;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0110xxxxx011xxxxxxxxxxxxx
-                                                         ldff1h.  */
-                                                      return 1605;
+                                                         000001x0xx1xxxxx011x11xxxxxxxxxx
+                                                         umulh.  */
+                                                      return 2290;
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 31) & 0x1) == 0)
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         011001x0xx0xxxxx0xxxxxxxxxxxxxxx
-                                         fcmla.  */
-                                      return 1343;
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 111001x0x00xxxxx0x0xxxxxxxxxxxxx
-                                                 st1b.  */
-                                              return 1820;
-                                            }
                                           else
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0010xxxxx0x0xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1824;
+                                                     100001x00x1xxxxx011xxxxxxxxxxxxx
+                                                     prfd.  */
+                                                  return 1782;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0110xxxxx0x0xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1845;
+                                                     100001x01x1xxxxx011xxxxxxxxxxxxx
+                                                     ldff1h.  */
+                                                  return 1657;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0000xxxxx0x1xxxxxxxxxxxxx
-                                                     stnt1b.  */
-                                                  return 1890;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0100xxxxx0x1xxxxxxxxxxxxx
-                                                     stnt1h.  */
-                                                  return 1894;
-                                                }
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x10001x00x1xxxxx011xxxxxxxxxxxxx
+                                                 prfd.  */
+                                              return 1784;
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0010xxxxx0x1xxxxxxxxxxxxx
-                                                     st3b.  */
-                                                  return 1874;
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0101xxxxx0110xxxxxxxxxxxx
+                                                             cmla.  */
+                                                          return 2072;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0111xxxxx0110xxxxxxxxxxxx
+                                                             cmla.  */
+                                                          return 2073;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0101xxxxx0111xxxxxxxxxxxx
+                                                             sqrdcmlah.  */
+                                                          return 2201;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0111xxxxx0111xxxxxxxxxxxx
+                                                             sqrdcmlah.  */
+                                                          return 2202;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0110xxxxx0x1xxxxxxxxxxxxx
-                                                     st3h.  */
-                                                  return 1878;
+                                                     110001x01x1xxxxx011xxxxxxxxxxxxx
+                                                     ldff1h.  */
+                                                  return 1665;
                                                 }
                                             }
                                         }
                                     }
                                 }
-                            }
-                          else
-                            {
-                              if (((word >> 13) & 0x1) == 0)
+                              else
                                 {
                                   if (((word >> 30) & 0x1) == 0)
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 4) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x01001x0xx0xxxxx100xxxxxxxx0xxxx
-                                                 cmpge.  */
-                                              return 1278;
-                                            }
-                                          else
+                                          if (((word >> 21) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 x01001x0xx0xxxxx100xxxxxxxx1xxxx
-                                                 cmpgt.  */
-                                              return 1281;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 31) & 0x1) == 0)
-                                            {
-                                              if (((word >> 4) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx110xxxxxxxx0xxxx
-                                                     cmphs.  */
-                                                  return 1287;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx110xxxxxxxx1xxxx
-                                                     cmphi.  */
-                                                  return 1284;
-                                                }
+                                                 000001x0xx0xxxxx111xxxxxxxxxxxxx
+                                                 msb.  */
+                                              return 1755;
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0000xxxxx110xxxxxxxxxxxxx
-                                                         ldnt1b.  */
-                                                      return 1673;
-                                                    }
-                                                  else
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0100xxxxx110xxxxxxxxxxxxx
-                                                         ldnt1h.  */
-                                                      return 1677;
-                                                    }
-                                                }
-                                              else
-                                                {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00010xxxx111000xxxxxxxxxx
+                                                                         cntb.  */
+                                                                      return 1357;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01010xxxx111000xxxxxxxxxx
+                                                                         cntw.  */
+                                                                      return 1361;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00110xxxx111000xxxxxxxxxx
+                                                                         cnth.  */
+                                                                      return 1359;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01110xxxx111000xxxxxxxxxx
+                                                                         cntd.  */
+                                                                      return 1358;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00011xxxx111000xxxxxxxxxx
+                                                                         incb.  */
+                                                                      return 1493;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01011xxxx111000xxxxxxxxxx
+                                                                         incw.  */
+                                                                      return 1501;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00111xxxx111000xxxxxxxxxx
+                                                                         inch.  */
+                                                                      return 1497;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01111xxxx111000xxxxxxxxxx
+                                                                         incd.  */
+                                                                      return 1495;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00010xxxx111100xxxxxxxxxx
+                                                                         sqincb.  */
+                                                                      return 1860;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01010xxxx111100xxxxxxxxxx
+                                                                         sqincw.  */
+                                                                      return 1872;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00110xxxx111100xxxxxxxxxx
+                                                                         sqinch.  */
+                                                                      return 1866;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01110xxxx111100xxxxxxxxxx
+                                                                         sqincd.  */
+                                                                      return 1863;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00011xxxx111100xxxxxxxxxx
+                                                                         sqincb.  */
+                                                                      return 1859;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01011xxxx111100xxxxxxxxxx
+                                                                         sqincw.  */
+                                                                      return 1871;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00111xxxx111100xxxxxxxxxx
+                                                                         sqinch.  */
+                                                                      return 1865;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01111xxxx111100xxxxxxxxxx
+                                                                         sqincd.  */
+                                                                      return 1862;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00010xxxx111x10xxxxxxxxxx
+                                                                     sqdecb.  */
+                                                                  return 1846;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01010xxxx111x10xxxxxxxxxx
+                                                                     sqdecw.  */
+                                                                  return 1858;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00110xxxx111x10xxxxxxxxxx
+                                                                     sqdech.  */
+                                                                  return 1852;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01110xxxx111x10xxxxxxxxxx
+                                                                     sqdecd.  */
+                                                                  return 1849;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00011xxxx111x10xxxxxxxxxx
+                                                                     sqdecb.  */
+                                                                  return 1845;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01011xxxx111x10xxxxxxxxxx
+                                                                     sqdecw.  */
+                                                                  return 1857;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00111xxxx111x10xxxxxxxxxx
+                                                                     sqdech.  */
+                                                                  return 1851;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01111xxxx111x10xxxxxxxxxx
+                                                                     sqdecd.  */
+                                                                  return 1848;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0001xxxxx111001xxxxxxxxxx
+                                                                     decb.  */
+                                                                  return 1368;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0101xxxxx111001xxxxxxxxxx
+                                                                     decw.  */
+                                                                  return 1376;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0011xxxxx111001xxxxxxxxxx
+                                                                     dech.  */
+                                                                  return 1372;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x0111xxxxx111001xxxxxxxxxx
+                                                                     decd.  */
+                                                                  return 1370;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00010xxxx111101xxxxxxxxxx
+                                                                         uqincb.  */
+                                                                      return 2007;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01010xxxx111101xxxxxxxxxx
+                                                                         uqincw.  */
+                                                                      return 2019;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00110xxxx111101xxxxxxxxxx
+                                                                         uqinch.  */
+                                                                      return 2013;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01110xxxx111101xxxxxxxxxx
+                                                                         uqincd.  */
+                                                                      return 2010;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00011xxxx111101xxxxxxxxxx
+                                                                         uqincb.  */
+                                                                      return 2008;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01011xxxx111101xxxxxxxxxx
+                                                                         uqincw.  */
+                                                                      return 2020;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x00111xxxx111101xxxxxxxxxx
+                                                                         uqinch.  */
+                                                                      return 2014;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x01111xxxx111101xxxxxxxxxx
+                                                                         uqincd.  */
+                                                                      return 2011;
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00010xxxx111x11xxxxxxxxxx
+                                                                     uqdecb.  */
+                                                                  return 1993;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01010xxxx111x11xxxxxxxxxx
+                                                                     uqdecw.  */
+                                                                  return 2005;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00110xxxx111x11xxxxxxxxxx
+                                                                     uqdech.  */
+                                                                  return 1999;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01110xxxx111x11xxxxxxxxxx
+                                                                     uqdecd.  */
+                                                                  return 1996;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00011xxxx111x11xxxxxxxxxx
+                                                                     uqdecb.  */
+                                                                  return 1994;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01011xxxx111x11xxxxxxxxxx
+                                                                     uqdecw.  */
+                                                                  return 2006;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x00111xxxx111x11xxxxxxxxxx
+                                                                     uqdech.  */
+                                                                  return 2000;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x01111xxxx111x11xxxxxxxxxx
+                                                                     uqdecd.  */
+                                                                  return 1997;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0000xxxxx111xxxxxxxxxxxxx
+                                                         prfb.  */
+                                                      return 1779;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0100xxxxx111xxxxxxxxxxxxx
+                                                         prfh.  */
+                                                      return 1793;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0001xxxxx111xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1647;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x0101xxxxx111xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1668;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x001xxxxxx111xxxxxxxxxxxxx
+                                                     ld1rb.  */
+                                                  return 1549;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x011xxxxxx111xxxxxxxxxxxxx
+                                                     ld1rh.  */
+                                                  return 1553;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x0000xxxxx111xxxxxxxxxxxxx
+                                                     prfb.  */
+                                                  return 1781;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x0100xxxxx111xxxxxxxxxxxxx
+                                                     prfh.  */
+                                                  return 1795;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x0010xxxxx111xxxxxxxxxxxxx
+                                                     ldff1b.  */
+                                                  return 1646;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x0110xxxxx111xxxxxxxxxxxxx
+                                                     ldff1h.  */
+                                                  return 1666;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x00x1xxxxx111x00xxxxxxxxxx
+                                                             sqdmulh.  */
+                                                          return 2190;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x00x1xxxxx111x10xxxxxxxxxx
+                                                             mul.  */
+                                                          return 2117;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x00x1xxxxx111xx1xxxxxxxxxx
+                                                         sqrdmulh.  */
+                                                      return 2212;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0001xxxxx111xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1648;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0011xxxxx111xxxxxxxxxxxxx
+                                                         prfd.  */
+                                                      return 1785;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1110x0xxxxxxxxxx
+                                                                 sqdmullb.  */
+                                                              return 2194;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 11) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0101xxxxx111100xxxxxxxxxx
+                                                                     sqdmulh.  */
+                                                                  return 2191;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0101xxxxx111110xxxxxxxxxx
+                                                                     mul.  */
+                                                                  return 2118;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1110x1xxxxxxxxxx
+                                                                 sqdmullt.  */
+                                                              return 2197;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0101xxxxx1111x1xxxxxxxxxx
+                                                                 sqrdmulh.  */
+                                                              return 2213;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0101xxxxx111xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1669;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1110x0xxxxxxxxxx
+                                                                 sqdmullb.  */
+                                                              return 2195;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 11) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0111xxxxx111100xxxxxxxxxx
+                                                                     sqdmulh.  */
+                                                                  return 2192;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x0111xxxxx111110xxxxxxxxxx
+                                                                     mul.  */
+                                                                  return 2119;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1110x1xxxxxxxxxx
+                                                                 sqdmullt.  */
+                                                              return 2198;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x0111xxxxx1111x1xxxxxxxxxx
+                                                                 sqrdmulh.  */
+                                                              return 2214;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x0111xxxxx111xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1667;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                  else
+                    {
+                      if (((word >> 21) & 0x1) == 0)
+                        {
+                          if (((word >> 15) & 0x1) == 0)
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 13) & 0x1) == 0)
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx000xxxxxxxx0xxxx
+                                                     cmphs.  */
+                                                  return 1341;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx000xxxxxxxx1xxxx
+                                                     cmphi.  */
+                                                  return 1338;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x00x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1rqb.  */
+                                                  return 1555;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x01x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1rqh.  */
+                                                  return 1559;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx010xxxxxxxx0xxxx
+                                                     cmpge.  */
+                                                  return 1332;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx010xxxxxxxx1xxxx
+                                                     cmpgt.  */
+                                                  return 1335;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0000xxxxx010xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1513;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0100xxxxx010xxxxxxxxxxxxx
+                                                         ld1sw.  */
+                                                      return 1593;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0010xxxxx010xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1515;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0110xxxxx010xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1535;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx001xxxxxxxx0xxxx
+                                                     cmpeq.  */
+                                                  return 1329;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx001xxxxxxxx1xxxx
+                                                     cmpne.  */
+                                                  return 1352;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x00x0xxxxx001xxxxxxxxxxxxx
+                                                     ld1rqb.  */
+                                                  return 1554;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x01x0xxxxx001xxxxxxxxxxxxx
+                                                     ld1rqh.  */
+                                                  return 1558;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx011xxxxxxxx0xxxx
+                                                     cmplt.  */
+                                                  return 1350;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx011xxxxxxxx1xxxx
+                                                     cmple.  */
+                                                  return 1344;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0000xxxxx011xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1637;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0100xxxxx011xxxxxxxxxxxxx
+                                                         ldff1sw.  */
+                                                      return 1693;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0010xxxxx011xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1641;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0110xxxxx011xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1660;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         011001x0xx0xxxxx0xxxxxxxxxxxxxxx
+                                         fcmla.  */
+                                      return 1398;
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 111001x0x00xxxxx0x0xxxxxxxxxxxxx
+                                                 st1b.  */
+                                              return 1875;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0010xxxxx0x0xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1879;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0110xxxxx0x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1900;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0000xxxxx001xxxxxxxxxxxxx
+                                                         stnt1b.  */
+                                                      return 2252;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0100xxxxx001xxxxxxxxxxxxx
+                                                         stnt1h.  */
+                                                      return 2255;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0010xxxxx001xxxxxxxxxxxxx
+                                                         stnt1b.  */
+                                                      return 2251;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0110xxxxx001xxxxxxxxxxxxx
+                                                         stnt1h.  */
+                                                      return 2254;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0000xxxxx011xxxxxxxxxxxxx
+                                                         stnt1b.  */
+                                                      return 1945;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0100xxxxx011xxxxxxxxxxxxx
+                                                         stnt1h.  */
+                                                      return 1949;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0010xxxxx011xxxxxxxxxxxxx
+                                                         st3b.  */
+                                                      return 1929;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0110xxxxx011xxxxxxxxxxxxx
+                                                         st3h.  */
+                                                      return 1933;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 13) & 0x1) == 0)
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x01001x0xx0xxxxx100xxxxxxxx0xxxx
+                                                 cmpge.  */
+                                              return 1333;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x01001x0xx0xxxxx100xxxxxxxx1xxxx
+                                                 cmpgt.  */
+                                              return 1336;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx110xxxxxxxx0xxxx
+                                                     cmphs.  */
+                                                  return 1342;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx110xxxxxxxx1xxxx
+                                                     cmphi.  */
+                                                  return 1339;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0000xxxxx110xxxxxxxxxxxxx
+                                                         ldnt1b.  */
+                                                      return 1728;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0100xxxxx110xxxxxxxxxxxxx
+                                                         ldnt1h.  */
+                                                      return 1732;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0010xxxxx110xxxxxxxxxxxxx
+                                                         ld3b.  */
+                                                      return 1620;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0110xxxxx110xxxxxxxxxxxxx
+                                                         ld3h.  */
+                                                      return 1624;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          if (((word >> 17) & 0x1) == 0)
+                                            {
+                                              if (((word >> 18) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 20) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0xx00x00x1x0xxxxxxxxxxxxx
+                                                         fcadd.  */
+                                                      return 1397;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0xx01x00x1x0xxxxxxxxxxxxx
+                                                         faddp.  */
+                                                      return 2078;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0xx0xx1001x0xxxxxxxxxxxxx
+                                                         fmaxnmp.  */
+                                                      return 2086;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0xx0xx1011x0xxxxxxxxxxxxx
+                                                         fminnmp.  */
+                                                      return 2088;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x0xx0xxx101x0xxxxxxxxxxxxx
+                                                     fmaxp.  */
+                                                  return 2087;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x0xx0xxx111x0xxxxxxxxxxxxx
+                                                     fminp.  */
+                                                  return 2089;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0000xxxxx1x0xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1876;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0100xxxxx1x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1895;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0010xxxxx1x0xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1880;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0110xxxxx1x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1901;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx101xxxxxxxx0xxxx
+                                                     cmpeq.  */
+                                                  return 1330;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx101xxxxxxxx1xxxx
+                                                     cmpne.  */
+                                                  return 1353;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 20) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00000xxxx101xxxxxxxxxxxxx
+                                                             ld1b.  */
+                                                          return 1520;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01000xxxx101xxxxxxxxxxxxx
+                                                             ld1sw.  */
+                                                          return 1598;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00100xxxx101xxxxxxxxxxxxx
+                                                             ld1b.  */
+                                                          return 1522;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01100xxxx101xxxxxxxxxxxxx
+                                                             ld1h.  */
+                                                          return 1543;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00001xxxx101xxxxxxxxxxxxx
+                                                             ldnf1b.  */
+                                                          return 1712;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01001xxxx101xxxxxxxxxxxxx
+                                                             ldnf1sw.  */
+                                                          return 1725;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00101xxxx101xxxxxxxxxxxxx
+                                                             ldnf1b.  */
+                                                          return 1714;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01101xxxx101xxxxxxxxxxxxx
+                                                             ldnf1h.  */
+                                                          return 1718;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0000xxxxx101xxxxxxxxxxxxx
+                                                         fcvtxnt.  */
+                                                      return 2084;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0000xxxxx101xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1877;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 17) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0100xxx00101xxxxxxxxxxxxx
+                                                                 fcvtnt.  */
+                                                              return 2081;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x0100xxx10101xxxxxxxxxxxxx
+                                                                 bfcvtnt.  */
+                                                              return 2434;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0100xxxx1101xxxxxxxxxxxxx
+                                                             fcvtlt.  */
+                                                          return 2079;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0100xxxxx101xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1896;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0010xxxxx101xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1884;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0110xxxx0101xxxxxxxxxxxxx
+                                                             fcvtnt.  */
+                                                          return 2082;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0110xxxx1101xxxxxxxxxxxxx
+                                                             fcvtlt.  */
+                                                          return 2080;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0110xxxxx101xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1905;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx111xxxxxxxx0xxxx
+                                                     cmplo.  */
+                                                  return 1346;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx111xxxxxxxx1xxxx
+                                                     cmpls.  */
+                                                  return 1348;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0000xxxxx111xxxxxxxxxxxxx
+                                                         ldnt1b.  */
+                                                      return 1729;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0100xxxxx111xxxxxxxxxxxxx
+                                                         ldnt1h.  */
+                                                      return 1733;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0010xxxxx111xxxxxxxxxxxxx
+                                                         ld3b.  */
+                                                      return 1621;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0110xxxxx111xxxxxxxxxxxxx
+                                                         ld3h.  */
+                                                      return 1625;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 20) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0x000xxxx111xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1882;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00100xxxx111xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1885;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x01100xxxx111xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1906;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00001xxxx111xxxxxxxxxxxxx
+                                                         stnt1b.  */
+                                                      return 1946;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x01001xxxx111xxxxxxxxxxxxx
+                                                         stnt1h.  */
+                                                      return 1950;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00101xxxx111xxxxxxxxxxxxx
+                                                         st3b.  */
+                                                      return 1930;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x01101xxxx111xxxxxxxxxxxxx
+                                                         st3h.  */
+                                                      return 1934;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 13) & 0x1) == 0)
+                            {
+                              if (((word >> 30) & 0x1) == 0)
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 4) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx0xxxxxxxx0xxxx
+                                             cmphs.  */
+                                          return 1343;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx0xxxxxxxx1xxxx
+                                             cmphi.  */
+                                          return 1340;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 101001x00x1xxxxxx00xxxxxxxxxxxxx
+                                                 ld1rob.  */
+                                              return 2410;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 101001x01x1xxxxxx00xxxxxxxxxxxxx
+                                                 ld1roh.  */
+                                              return 2411;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0001xxxxx010xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1514;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0101xxxxx010xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1534;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0011xxxxx010xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1516;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0111xxxxx010xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1536;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0001xxxxx110xxxxxxxxxxxxx
+                                                         ld2b.  */
+                                                      return 1612;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0101xxxxx110xxxxxxxxxxxxx
+                                                         ld2h.  */
+                                                      return 1616;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0011xxxxx110xxxxxxxxxxxxx
+                                                         ld4b.  */
+                                                      return 1628;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0111xxxxx110xxxxxxxxxxxxx
+                                                         ld4h.  */
+                                                      return 1632;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00x1xxxxx0000x0xxxxxxxxxx
+                                                         fmla.  */
+                                                      return 1451;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0101xxxxx0000x0xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 1452;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0111xxxxx0000x0xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 1453;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0010xxxxx110xxxxxxxxxxxxx
-                                                         ld3b.  */
-                                                      return 1565;
+                                                         x11001x00x1xxxxx0000x1xxxxxxxxxx
+                                                         fmls.  */
+                                                      return 1455;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0101xxxxx0000x1xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 1456;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0111xxxxx0000x1xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 1457;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0x01xxxxx0001xxxxxxxxxxxx
+                                                     fcmla.  */
+                                                  return 1399;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0x11xxxxx0001xxxxxxxxxxxx
+                                                     fcmla.  */
+                                                  return 1400;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0001xxxxx010xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1878;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0101xxxxx010xx0xxxxxxxxxx
+                                                             fmlalb.  */
+                                                          return 2090;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0101xxxxx010xx1xxxxxxxxxx
+                                                             fmlalt.  */
+                                                          return 2092;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0101xxxxx010xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1897;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0011xxxxx010xxxxxxxxxxxxx
+                                                         bfdot.  */
+                                                      return 2431;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0110xxxxx110xxxxxxxxxxxxx
-                                                         ld3h.  */
-                                                      return 1569;
+                                                         111001x0011xxxxx010xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1881;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0111xxxxx010xx0xxxxxxxxxx
+                                                             bfmlalb.  */
+                                                          return 2438;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0111xxxxx010xx1xxxxxxxxxx
+                                                             bfmlalt.  */
+                                                          return 2437;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x0111xxxxx010xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1902;
                                                     }
                                                 }
                                             }
@@ -6577,80 +9291,124 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     }
                                   else
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             011001x0xx0xxxxx1x0xxxxxxxxxxxxx
-                                             fcadd.  */
-                                          return 1342;
-                                        }
-                                      else
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0000xxxxx1x0xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1821;
+                                                     011001x0x01xxxxx1x0xx0xxxxxxxxxx
+                                                     fmlalb.  */
+                                                  return 2091;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0100xxxxx1x0xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1840;
+                                                     011001x0x01xxxxx1x0xx1xxxxxxxxxx
+                                                     fmlalt.  */
+                                                  return 2093;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 111001x0x01xxxxx1x0xxxxxxxxxxxxx
+                                                 st1h.  */
+                                              return 1898;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x11001x0011xxxxx1x0xxxxxxxxxxxxx
+                                                 bfdot.  */
+                                              return 2430;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     111001x0010xxxxx1x0xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1825;
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0111xxxxx1x0xx0xxxxxxxxxx
+                                                         bfmlalb.  */
+                                                      return 2436;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0111xxxxx1x0xx1xxxxxxxxxx
+                                                         bfmlalt.  */
+                                                      return 2435;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     111001x0110xxxxx1x0xxxxxxxxxxxxx
+                                                     111001x0111xxxxx1x0xxxxxxxxxxxxx
                                                      st1h.  */
-                                                  return 1846;
+                                                  return 1903;
                                                 }
                                             }
                                         }
                                     }
                                 }
-                              else
+                            }
+                          else
+                            {
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 31) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 4) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx1xxxxxxxx0xxxx
+                                             cmplo.  */
+                                          return 1347;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx1xxxxxxxx1xxxx
+                                             cmpls.  */
+                                          return 1349;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     001001x0xx0xxxxx101xxxxxxxx0xxxx
-                                                     cmpeq.  */
-                                                  return 1275;
+                                                     101001x00x1xxxxx001xxxxxxxxxxxxx
+                                                     ld1rob.  */
+                                                  return 2414;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     001001x0xx0xxxxx101xxxxxxxx1xxxx
-                                                     cmpne.  */
-                                                  return 1298;
+                                                     101001x01x1xxxxx001xxxxxxxxxxxxx
+                                                     ld1roh.  */
+                                                  return 2415;
                                                 }
                                             }
                                           else
@@ -6663,17 +9421,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x00000xxxx101xxxxxxxxxxxxx
+                                                             101001x00010xxxx101xxxxxxxxxxxxx
                                                              ld1b.  */
-                                                          return 1465;
+                                                          return 1521;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x01000xxxx101xxxxxxxxxxxxx
-                                                             ld1sw.  */
-                                                          return 1543;
+                                                             101001x01010xxxx101xxxxxxxxxxxxx
+                                                             ld1h.  */
+                                                          return 1542;
                                                         }
                                                     }
                                                   else
@@ -6682,17 +9440,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x00100xxxx101xxxxxxxxxxxxx
+                                                             101001x00110xxxx101xxxxxxxxxxxxx
                                                              ld1b.  */
-                                                          return 1467;
+                                                          return 1523;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x01100xxxx101xxxxxxxxxxxxx
+                                                             101001x01110xxxx101xxxxxxxxxxxxx
                                                              ld1h.  */
-                                                          return 1488;
+                                                          return 1544;
                                                         }
                                                     }
                                                 }
@@ -6704,17 +9462,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x00001xxxx101xxxxxxxxxxxxx
+                                                             101001x00011xxxx101xxxxxxxxxxxxx
                                                              ldnf1b.  */
-                                                          return 1657;
+                                                          return 1713;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x01001xxxx101xxxxxxxxxxxxx
-                                                             ldnf1sw.  */
-                                                          return 1670;
+                                                             101001x01011xxxx101xxxxxxxxxxxxx
+                                                             ldnf1h.  */
+                                                          return 1717;
                                                         }
                                                     }
                                                   else
@@ -6723,41 +9481,173 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x00101xxxx101xxxxxxxxxxxxx
+                                                             101001x00111xxxx101xxxxxxxxxxxxx
                                                              ldnf1b.  */
-                                                          return 1659;
+                                                          return 1715;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             101001x01101xxxx101xxxxxxxxxxxxx
+                                                             101001x01111xxxx101xxxxxxxxxxxxx
                                                              ldnf1h.  */
-                                                          return 1663;
+                                                          return 1719;
                                                         }
                                                     }
                                                 }
                                             }
                                         }
+                                      else
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0001xxxxx011xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1639;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0101xxxxx011xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1658;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0011xxxxx011xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1643;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0111xxxxx011xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1662;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0001xxxxx111xxxxxxxxxxxxx
+                                                         ld2b.  */
+                                                      return 1613;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0101xxxxx111xxxxxxxxxxxxx
+                                                         ld2h.  */
+                                                      return 1617;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0011xxxxx111xxxxxxxxxxxxx
+                                                         ld4b.  */
+                                                      return 1629;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0111xxxxx111xxxxxxxxxxxxx
+                                                         ld4h.  */
+                                                      return 1633;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x11001x00x1xxxxx001xxxxxxxxxxxxx
+                                                 fmul.  */
+                                              return 1462;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0101xxxxx001xxxxxxxxxxxxx
+                                                     fmul.  */
+                                                  return 1463;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0111xxxxx001xxxxxxxxxxxxx
+                                                     fmul.  */
+                                                  return 1464;
+                                                }
+                                            }
+                                        }
                                       else
                                         {
                                           if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0000xxxxx101xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1822;
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0x01xxxxx101xx0xxxxxxxxxx
+                                                         fmlslb.  */
+                                                      return 2095;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x0x01xxxxx101xx1xxxxxxxxxx
+                                                         fmlslt.  */
+                                                      return 2097;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0100xxxxx101xxxxxxxxxxxxx
+                                                     111001x0x01xxxxx101xxxxxxxxxxxxx
                                                      st1h.  */
-                                                  return 1841;
+                                                  return 1899;
                                                 }
                                             }
                                           else
@@ -6766,156 +9656,200 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0010xxxxx101xxxxxxxxxxxxx
+                                                     x11001x0011xxxxx101xxxxxxxxxxxxx
                                                      st1b.  */
-                                                  return 1829;
+                                                  return 1886;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0110xxxxx101xxxxxxxxxxxxx
+                                                     x11001x0111xxxxx101xxxxxxxxxxxxx
                                                      st1h.  */
-                                                  return 1850;
+                                                  return 1907;
                                                 }
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     001001x0xx0xxxxx111xxxxxxxx0xxxx
-                                                     cmplo.  */
-                                                  return 1291;
+                                                     x11001x0001xxxxx011xxxxxxxxxxxxx
+                                                     st2b.  */
+                                                  return 1921;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     001001x0xx0xxxxx111xxxxxxxx1xxxx
-                                                     cmpls.  */
-                                                  return 1293;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 31) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0000xxxxx111xxxxxxxxxxxxx
-                                                         ldnt1b.  */
-                                                      return 1674;
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0101xxxxx011xx0xxxxxxxxxx
+                                                             fmlslb.  */
+                                                          return 2094;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x0101xxxxx011xx1xxxxxxxxxx
+                                                             fmlslt.  */
+                                                          return 2096;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0100xxxxx111xxxxxxxxxxxxx
-                                                         ldnt1h.  */
-                                                      return 1678;
+                                                         111001x0101xxxxx011xxxxxxxxxxxxx
+                                                         st2h.  */
+                                                      return 1925;
                                                     }
                                                 }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0011xxxxx011xxxxxxxxxxxxx
+                                                     st4b.  */
+                                                  return 1937;
+                                                }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0111xxxxx011xxxxxxxxxxxxx
+                                                     st4h.  */
+                                                  return 1941;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 20) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0010xxxxx111xxxxxxxxxxxxx
-                                                         ld3b.  */
-                                                      return 1566;
+                                                         x11001x00010xxxx111xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1883;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0110xxxxx111xxxxxxxxxxxxx
-                                                         ld3h.  */
-                                                      return 1570;
+                                                         x11001x00011xxxx111xxxxxxxxxxxxx
+                                                         st2b.  */
+                                                      return 1922;
                                                     }
                                                 }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 20) & 0x1) == 0)
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0x000xxxx111xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1827;
-                                                }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 31) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x00100xxxx111xxxxxxxxxxxxx
-                                                         st1b.  */
-                                                      return 1830;
+                                                         011001x0101xxxxx111xxxxxxxxxxxxx
+                                                         fmmla.  */
+                                                      return 2408;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01100xxxx111xxxxxxxxxxxxx
-                                                         st1h.  */
-                                                      return 1851;
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01010xxxx111xxxxxxxxxxxxx
+                                                             st1h.  */
+                                                          return 1904;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01011xxxx111xxxxxxxxxxxxx
+                                                             st2h.  */
+                                                          return 1926;
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 31) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x00001xxxx111xxxxxxxxxxxxx
-                                                         stnt1b.  */
-                                                      return 1891;
+                                                         011001x0011xxxxx111xxxxxxxxxxxxx
+                                                         bfmmla.  */
+                                                      return 2432;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01001xxxx111xxxxxxxxxxxxx
-                                                         stnt1h.  */
-                                                      return 1895;
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x00110xxxx111xxxxxxxxxxxxx
+                                                             st1b.  */
+                                                          return 1887;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x00111xxxx111xxxxxxxxxxxxx
+                                                             st4b.  */
+                                                          return 1938;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 31) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x00101xxxx111xxxxxxxxxxxxx
-                                                         st3b.  */
-                                                      return 1875;
+                                                         011001x0111xxxxx111xxxxxxxxxxxxx
+                                                         fmmla.  */
+                                                      return 2409;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01101xxxx111xxxxxxxxxxxxx
-                                                         st3h.  */
-                                                      return 1879;
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01110xxxx111xxxxxxxxxxxxx
+                                                             st1h.  */
+                                                          return 1908;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x01111xxxx111xxxxxxxxxxxxx
+                                                             st4h.  */
+                                                          return 1942;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -6924,461 +9858,819 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 }
                             }
                         }
-                      else
+                    }
+                }
+              else
+                {
+                  if (((word >> 29) & 0x1) == 0)
+                    {
+                      if (((word >> 30) & 0x1) == 0)
                         {
-                          if (((word >> 13) & 0x1) == 0)
+                          if (((word >> 31) & 0x1) == 0)
                             {
-                              if (((word >> 30) & 0x1) == 0)
+                              if (((word >> 21) & 0x1) == 0)
                                 {
-                                  if (((word >> 31) & 0x1) == 0)
+                                  if (((word >> 20) & 0x1) == 0)
                                     {
-                                      if (((word >> 4) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x10000xxxxxxxxxxxxxxxxxxxx
+                                                 orr.  */
+                                              return 1767;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x11000xxxxxxxxxxxxxxxxxxxx
+                                                 and.  */
+                                              return 1295;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x10100xxxxxxxxxxxxxxxxxxxx
+                                                 eor.  */
+                                              return 1382;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x11100xxxxxxxxxxxxxxxxxxxx
+                                                 dupm.  */
+                                              return 1380;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             001001x0xx1xxxxxxx0xxxxxxxx0xxxx
-                                             cmphs.  */
-                                          return 1288;
+                                             000001x1xx01xxxx0xxxxxxxxxxxxxxx
+                                             cpy.  */
+                                          return 1365;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             001001x0xx1xxxxxxx0xxxxxxxx1xxxx
-                                             cmphi.  */
-                                          return 1285;
+                                             000001x1xx01xxxx1xxxxxxxxxxxxxxx
+                                             fcpy.  */
+                                          return 1412;
                                         }
                                     }
-                                  else
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
                                     {
-                                      if (((word >> 15) & 0x1) == 0)
+                                      if (((word >> 13) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 15) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     101001x0001xxxxx0x0xxxxxxxxxxxxx
-                                                     ld1b.  */
-                                                  return 1459;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1001xxxxx000xxxxxxxxxxxxx
+                                                         ext.  */
+                                                      return 1387;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 11) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1101xxxxx000x00xxxxxxxxxx
+                                                                 zip1.  */
+                                                              return 2418;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 12) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1101xxxxx000010xxxxxxxxxx
+                                                                     uzp1.  */
+                                                                  return 2420;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1101xxxxx000110xxxxxxxxxx
+                                                                     trn1.  */
+                                                                  return 2422;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 11) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1101xxxxx000x01xxxxxxxxxx
+                                                                 zip2.  */
+                                                              return 2419;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 12) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1101xxxxx000011xxxxxxxxxx
+                                                                     uzp2.  */
+                                                                  return 2421;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1101xxxxx000111xxxxxxxxxx
+                                                                     trn2.  */
+                                                                  return 2423;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     101001x0101xxxxx0x0xxxxxxxxxxxxx
-                                                     ld1h.  */
-                                                  return 1479;
+                                                     000001x1x11xxxxx000xxxxxxxxxxxxx
+                                                     ext.  */
+                                                  return 2077;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     101001x0011xxxxx0x0xxxxxxxxxxxxx
-                                                     ld1b.  */
-                                                  return 1461;
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0000100xxxxxxxxxxxxx
+                                                                 cpy.  */
+                                                              return 1363;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1000100xxxxxxxxxxxxx
+                                                                 clasta.  */
+                                                              return 1321;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0100100xxxxxxxxxxxxx
+                                                                 revb.  */
+                                                              return 1815;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1100100xxxxxxxxxxxxx
+                                                                 splice.  */
+                                                              return 1842;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0010100xxxxxxxxxxxxx
+                                                                 lasta.  */
+                                                              return 1509;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1010100xxxxxxxxxxxxx
+                                                                 clasta.  */
+                                                              return 1322;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xx110100xxxxxxxxxxxxx
+                                                             revw.  */
+                                                          return 1817;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     101001x0111xxxxx0x0xxxxxxxxxxxxx
-                                                     ld1h.  */
-                                                  return 1481;
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0001100xxxxxxxxxxxxx
+                                                                 compact.  */
+                                                              return 1362;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1001100xxxxxxxxxxxxx
+                                                                 clastb.  */
+                                                              return 1324;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0101100xxxxxxxxxxxxx
+                                                                 revh.  */
+                                                              return 1816;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1101100xxxxxxxxxxxxx
+                                                                 splice.  */
+                                                              return 2172;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0011100xxxxxxxxxxxxx
+                                                                 lastb.  */
+                                                              return 1511;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1011100xxxxxxxxxxxxx
+                                                                 clastb.  */
+                                                              return 1325;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xx111100xxxxxxxxxxxxx
+                                                             rbit.  */
+                                                          return 1808;
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 15) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     101001x0001xxxxx1x0xxxxxxxxxxxxx
-                                                     ld2b.  */
-                                                  return 1557;
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx001000xxxxxxxxxx
+                                                             dup.  */
+                                                          return 1378;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx001100xxxxxxxxxx
+                                                             tbl.  */
+                                                          return 1965;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx001010xxxxxxxxxx
+                                                             tbl.  */
+                                                          return 2261;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 17) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      if (((word >> 19) & 0x1) == 0)
+                                                                        {
+                                                                          if (((word >> 20) & 0x1) == 0)
+                                                                            {
+                                                                              /* 33222222222211111111110000000000
+                                                                                 10987654321098765432109876543210
+                                                                                 000001x1xx100000001110xxxxxxxxxx
+                                                                                 dup.  */
+                                                                              return 1377;
+                                                                            }
+                                                                          else
+                                                                            {
+                                                                              /* 33222222222211111111110000000000
+                                                                                 10987654321098765432109876543210
+                                                                                 000001x1xx110000001110xxxxxxxxxx
+                                                                                 sunpklo.  */
+                                                                              return 1961;
+                                                                            }
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             000001x1xx1x1000001110xxxxxxxxxx
+                                                                             rev.  */
+                                                                          return 1814;
+                                                                        }
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 20) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             000001x1xx10x100001110xxxxxxxxxx
+                                                                             insr.  */
+                                                                          return 1506;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             000001x1xx11x100001110xxxxxxxxxx
+                                                                             insr.  */
+                                                                          return 1507;
+                                                                        }
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx1xxx10001110xxxxxxxxxx
+                                                                     uunpklo.  */
+                                                                  return 2024;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 17) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx1xxx01001110xxxxxxxxxx
+                                                                     sunpkhi.  */
+                                                                  return 1960;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx1xxx11001110xxxxxxxxxx
+                                                                     uunpkhi.  */
+                                                                  return 2023;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     101001x0101xxxxx1x0xxxxxxxxxxxxx
-                                                     ld2h.  */
-                                                  return 1561;
+                                                     000001x1xx1xxxxx001xx1xxxxxxxxxx
+                                                     tbx.  */
+                                                  return 2262;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     101001x0011xxxxx1x0xxxxxxxxxxxxx
-                                                     ld4b.  */
-                                                  return 1573;
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx100xx0101xxxxxxxxxxxxx
+                                                             lasta.  */
+                                                          return 1508;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx110xx0101xxxxxxxxxxxxx
+                                                             clasta.  */
+                                                          return 1323;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1x1xx0101xxxxxxxxxxxxx
+                                                         cpy.  */
+                                                      return 1364;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     101001x0111xxxxx1x0xxxxxxxxxxxxx
-                                                     ld4h.  */
-                                                  return 1577;
+                                                  if (((word >> 20) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx10xxx1101xxxxxxxxxxxxx
+                                                         lastb.  */
+                                                      return 1510;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx11xxx1101xxxxxxxxxxxxx
+                                                         clastb.  */
+                                                      return 1326;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
-                                }
-                              else
-                                {
-                                  if (((word >> 15) & 0x1) == 0)
+                                  else
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 12) & 0x1) == 0)
+                                          if (((word >> 10) & 0x1) == 0)
                                             {
-                                              if (((word >> 10) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00x1xxxxx0000x0xxxxxxxxxx
-                                                         fmla.  */
-                                                      return 1396;
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx10xxxx010000xxxxxxxxxx
+                                                                 zip1.  */
+                                                              return 2041;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 16) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x1xx11x0x0010000xxxxxxxxxx
+                                                                         punpklo.  */
+                                                                      return 1807;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x1xx11x1x0010000xxxxxxxxxx
+                                                                         rev.  */
+                                                                      return 1813;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx11xxx1010000xxxxxxxxxx
+                                                                     punpkhi.  */
+                                                                  return 1806;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx011000xxxxxxxxxx
+                                                             zip1.  */
+                                                          return 2042;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 13) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0101xxxxx0000x0xxxxxxxxxx
-                                                             fmla.  */
-                                                          return 1397;
+                                                             000001x1xx1xxxxx010100xxxxxxxxxx
+                                                             trn1.  */
+                                                          return 1966;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0111xxxxx0000x0xxxxxxxxxx
-                                                             fmla.  */
-                                                          return 1398;
+                                                             000001x1xx1xxxxx011100xxxxxxxxxx
+                                                             trn1.  */
+                                                          return 1967;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x00x1xxxxx0000x1xxxxxxxxxx
-                                                         fmls.  */
-                                                      return 1400;
+                                                         000001x1xx1xxxxx010x10xxxxxxxxxx
+                                                         uzp1.  */
+                                                      return 2028;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1xxxxx011x10xxxxxxxxxx
+                                                         uzp1.  */
+                                                      return 2029;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0101xxxxx0000x1xxxxxxxxxx
-                                                             fmls.  */
-                                                          return 1401;
+                                                             000001x1xx1xxxxx010001xxxxxxxxxx
+                                                             zip2.  */
+                                                          return 2043;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x0111xxxxx0000x1xxxxxxxxxx
-                                                             fmls.  */
-                                                          return 1402;
+                                                             000001x1xx1xxxxx011001xxxxxxxxxx
+                                                             zip2.  */
+                                                          return 2044;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx010101xxxxxxxxxx
+                                                             trn2.  */
+                                                          return 1968;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx011101xxxxxxxxxx
+                                                             trn2.  */
+                                                          return 1969;
                                                         }
                                                     }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0x01xxxxx0001xxxxxxxxxxxx
-                                                     fcmla.  */
-                                                  return 1344;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0x11xxxxx0001xxxxxxxxxxxx
-                                                     fcmla.  */
-                                                  return 1345;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0001xxxxx010xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1823;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0101xxxxx010xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1842;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0011xxxxx010xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1826;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0111xxxxx010xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1847;
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 22) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x11001x0x01xxxxx1x0xxxxxxxxxxxxx
-                                             st1h.  */
-                                          return 1843;
+                                                  if (((word >> 13) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1xxxxx010x11xxxxxxxxxx
+                                                         uzp2.  */
+                                                      return 2030;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1xxxxx011x11xxxxxxxxxx
+                                                         uzp2.  */
+                                                      return 2031;
+                                                    }
+                                                }
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             x11001x0x11xxxxx1x0xxxxxxxxxxxxx
-                                             st1h.  */
-                                          return 1848;
+                                             000001x1xx1xxxxx11xxxxxxxxxxxxxx
+                                             sel.  */
+                                          return 1832;
                                         }
                                     }
                                 }
                             }
                           else
                             {
-                              if (((word >> 30) & 0x1) == 0)
+                              if (((word >> 13) & 0x1) == 0)
                                 {
-                                  if (((word >> 31) & 0x1) == 0)
+                                  if (((word >> 14) & 0x1) == 0)
                                     {
-                                      if (((word >> 4) & 0x1) == 0)
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             001001x0xx1xxxxxxx1xxxxxxxx0xxxx
-                                             cmplo.  */
-                                          return 1292;
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x1x0xxxxxx000xxxxxxxxxxxxx
+                                                 ldr.  */
+                                              return 1736;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x1x1xxxxxx000xxxxxxxxxxxxx
+                                                 prfb.  */
+                                              return 1780;
+                                            }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             001001x0xx1xxxxxxx1xxxxxxxx1xxxx
-                                             cmpls.  */
-                                          return 1294;
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x10xxxxxxx100xxxxxxxxxxxxx
+                                                 ld1rsh.  */
+                                              return 1565;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x11xxxxxxx100xxxxxxxxxxxxx
+                                                 ld1rsb.  */
+                                              return 1562;
+                                            }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 20) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 21) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x00010xxxxx01xxxxxxxxxxxxx
-                                                         ld1b.  */
-                                                      return 1466;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x01010xxxxx01xxxxxxxxxxxxx
-                                                         ld1h.  */
-                                                      return 1487;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x10x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1600;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x00110xxxxx01xxxxxxxxxxxxx
-                                                         ld1b.  */
-                                                      return 1468;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x01110xxxxx01xxxxxxxxxxxxx
-                                                         ld1h.  */
-                                                      return 1489;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x10x1xxxxx010xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1601;
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x00011xxxxx01xxxxxxxxxxxxx
-                                                         ldnf1b.  */
-                                                      return 1658;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x01011xxxxx01xxxxxxxxxxxxx
-                                                         ldnf1h.  */
-                                                      return 1662;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x110xxxxxx010xxxxxxxxxxxxx
+                                                     ldr.  */
+                                                  return 1737;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x00111xxxxx01xxxxxxxxxxxxx
-                                                         ldnf1b.  */
-                                                      return 1660;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x01111xxxxx01xxxxxxxxxxxxx
-                                                         ldnf1h.  */
-                                                      return 1664;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x111xxxxxx010xxxxxxxxxxxxx
+                                                     prfw.  */
+                                                  return 1801;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 21) & 0x1) == 0)
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0001xxxxx011xxxxxxxxxxxxx
-                                                         ldff1b.  */
-                                                      return 1584;
+                                                         100001x1000xxxxx110xxxxxxxxxxxxx
+                                                         prfw.  */
+                                                      return 1797;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         101001x0101xxxxx011xxxxxxxxxxxxx
-                                                         ldff1h.  */
-                                                      return 1603;
+                                                         100001x1100xxxxx110xxxxxxxxxxxxx
+                                                         prfd.  */
+                                                      return 1783;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0011xxxxx011xxxxxxxxxxxxx
-                                                         ldff1b.  */
-                                                      return 1588;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0111xxxxx011xxxxxxxxxxxxx
-                                                         ldff1h.  */
-                                                      return 1607;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x1x01xxxxx110xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1608;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0001xxxxx111xxxxxxxxxxxxx
-                                                         ld2b.  */
-                                                      return 1558;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0101xxxxx111xxxxxxxxxxxxx
-                                                         ld2h.  */
-                                                      return 1562;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x101xxxxxx110xxxxxxxxxxxxx
+                                                     ld1rw.  */
+                                                  return 1568;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0011xxxxx111xxxxxxxxxxxxx
-                                                         ld4b.  */
-                                                      return 1574;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         101001x0111xxxxx111xxxxxxxxxxxxx
-                                                         ld4h.  */
-                                                      return 1578;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x111xxxxxx110xxxxxxxxxxxxx
+                                                     ld1rsb.  */
+                                                  return 1564;
                                                 }
                                             }
                                         }
@@ -7390,86 +10682,105 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             100001x1xxxxxxxx001xxxxxxxxxxxxx
+                                             prfh.  */
+                                          return 1794;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 x11001x00x1xxxxx001xxxxxxxxxxxxx
-                                                 fmul.  */
-                                              return 1407;
+                                                 100001x1x0xxxxxx101xxxxxxxxxxxxx
+                                                 ldnt1w.  */
+                                              return 2108;
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0101xxxxx001xxxxxxxxxxxxx
-                                                     fmul.  */
-                                                  return 1408;
+                                                     100001x101xxxxxx101xxxxxxxxxxxxx
+                                                     ld1rsh.  */
+                                                  return 1566;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0111xxxxx001xxxxxxxxxxxxx
-                                                     fmul.  */
-                                                  return 1409;
+                                                     100001x111xxxxxx101xxxxxxxxxxxxx
+                                                     ld1rsb.  */
+                                                  return 1563;
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x11001x0x01xxxxx101xxxxxxxxxxxxx
-                                                 st1h.  */
-                                              return 1844;
-                                            }
-                                          else
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 21) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0011xxxxx101xxxxxxxxxxxxx
-                                                     st1b.  */
-                                                  return 1831;
+                                                     100001x10x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1700;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0111xxxxx101xxxxxxxxxxxxx
-                                                     st1h.  */
-                                                  return 1852;
+                                                     100001x10x1xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1701;
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x11xxxxxxx011xxxxxxxxxxxxx
+                                                 prfd.  */
+                                              return 1787;
+                                            }
                                         }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
+                                      else
                                         {
                                           if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 21) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x11001x0001xxxxx011xxxxxxxxxxxxx
-                                                     st2b.  */
-                                                  return 1866;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x1000xxxxx111xxxxxxxxxxxxx
+                                                         prfw.  */
+                                                      return 1800;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x1100xxxxx111xxxxxxxxxxxxx
+                                                         prfd.  */
+                                                      return 1786;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0101xxxxx011xxxxxxxxxxxxx
-                                                     st2h.  */
-                                                  return 1870;
+                                                     100001x1x01xxxxx111xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1710;
                                                 }
                                             }
                                           else
@@ -7478,989 +10789,1052 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0011xxxxx011xxxxxxxxxxxxx
-                                                     st4b.  */
-                                                  return 1882;
+                                                     100001x101xxxxxx111xxxxxxxxxxxxx
+                                                     ld1rw.  */
+                                                  return 1569;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x11001x0111xxxxx011xxxxxxxxxxxxx
-                                                     st4h.  */
-                                                  return 1886;
+                                                     100001x111xxxxxx111xxxxxxxxxxxxx
+                                                     ld1rd.  */
+                                                  return 1550;
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 13) & 0x1) == 0)
+                            {
+                              if (((word >> 14) & 0x1) == 0)
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 20) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00010xxxx111xxxxxxxxxxxxx
-                                                         st1b.  */
-                                                      return 1828;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000000xxxxxxxxxx
+                                                             saddlb.  */
+                                                          return 2138;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000100xxxxxxxxxx
+                                                             ssublb.  */
+                                                          return 2245;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01010xxxx111xxxxxxxxxxxxx
-                                                         st1h.  */
-                                                      return 1849;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000010xxxxxxxxxx
+                                                             uaddlb.  */
+                                                          return 2269;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000110xxxxxxxxxx
+                                                             usublb.  */
+                                                          return 2322;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00110xxxx111xxxxxxxxxxxxx
-                                                         st1b.  */
-                                                      return 1832;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000001xxxxxxxxxx
+                                                             saddlt.  */
+                                                          return 2140;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000101xxxxxxxxxx
+                                                             ssublt.  */
+                                                          return 2247;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01110xxxx111xxxxxxxxxxxxx
-                                                         st1h.  */
-                                                      return 1853;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000011xxxxxxxxxx
+                                                             uaddlt.  */
+                                                          return 2270;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx000111xxxxxxxxxx
+                                                             usublt.  */
+                                                          return 2323;
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 110001x1xx0xxxxx000xxxxxxxxxxxxx
+                                                 ld1sw.  */
+                                              return 1594;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00011xxxx111xxxxxxxxxxxxx
-                                                         st2b.  */
-                                                      return 1867;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000000xxxxxxxxxx
+                                                             sqshrunb.  */
+                                                          return 2228;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000100xxxxxxxxxx
+                                                             shrnb.  */
+                                                          return 2146;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01011xxxx111xxxxxxxxxxxxx
-                                                         st2h.  */
-                                                      return 1871;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000010xxxxxxxxxx
+                                                             sqrshrunb.  */
+                                                          return 2220;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000110xxxxxxxxxx
+                                                             rshrnb.  */
+                                                          return 2128;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x00111xxxx111xxxxxxxxxxxxx
-                                                         st4b.  */
-                                                      return 1883;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000001xxxxxxxxxx
+                                                             sqshrunt.  */
+                                                          return 2229;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000101xxxxxxxxxx
+                                                             shrnt.  */
+                                                          return 2147;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x01111xxxx111xxxxxxxxxxxxx
-                                                         st4h.  */
-                                                      return 1887;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000011xxxxxxxxxx
+                                                             sqrshrunt.  */
+                                                          return 2221;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx000111xxxxxxxxxx
+                                                             rshrnt.  */
+                                                          return 2129;
+                                                        }
                                                     }
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 110001x1xx1xxxxx000xxxxxxxxxxxxx
+                                                 ld1sw.  */
+                                              return 1595;
+                                            }
                                         }
                                     }
-                                }
-                            }
-                        }
-                    }
-                }
-              else
-                {
-                  if (((word >> 29) & 0x1) == 0)
-                    {
-                      if (((word >> 30) & 0x1) == 0)
-                        {
-                          if (((word >> 31) & 0x1) == 0)
-                            {
-                              if (((word >> 21) & 0x1) == 0)
-                                {
-                                  if (((word >> 20) & 0x1) == 0)
+                                  else
                                     {
-                                      if (((word >> 22) & 0x1) == 0)
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x10000xxxxxxxxxxxxxxxxxxxx
-                                                 orr.  */
-                                              return 1712;
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx100000xxxxxxxxxx
+                                                             saddlbt.  */
+                                                          return 2139;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx100100xxxxxxxxxx
+                                                             eorbt.  */
+                                                          return 2075;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx100010xxxxxxxxxx
+                                                             ssublbt.  */
+                                                          return 2246;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x1000xxxxx100110xxxxxxxxxx
+                                                                     smmla.  */
+                                                                  return 2402;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x1100xxxxx100110xxxxxxxxxx
+                                                                     usmmla.  */
+                                                                  return 2404;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1x10xxxxx100110xxxxxxxxxx
+                                                                 ummla.  */
+                                                              return 2403;
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x1xx0xxxxx100x01xxxxxxxxxx
+                                                         eortb.  */
+                                                      return 2076;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x1xx0xxxxx100x11xxxxxxxxxx
+                                                         ssubltb.  */
+                                                      return 2248;
+                                                    }
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x11000xxxxxxxxxxxxxxxxxxxx
-                                                 and.  */
-                                              return 1240;
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x1x00xxxxx100xxxxxxxxxxxxx
+                                                     ldnt1sw.  */
+                                                  return 2107;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x1x10xxxxx100xxxxxxxxxxxxx
+                                                     ld1sw.  */
+                                                  return 1596;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x10100xxxxxxxxxxxxxxxxxxxx
-                                                 eor.  */
-                                              return 1327;
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     010001x1xx1xxxxx100xxxxxxxx0xxxx
+                                                     match.  */
+                                                  return 2110;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     010001x1xx1xxxxx100xxxxxxxx1xxxx
+                                                     nmatch.  */
+                                                  return 2122;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x11100xxxxxxxxxxxxxxxxxxxx
-                                                 dupm.  */
-                                              return 1325;
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x1x01xxxxx100xxxxxxxxxxxxx
+                                                     ld1sw.  */
+                                                  return 1599;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x1x11xxxxx100xxxxxxxxxxxxx
+                                                     ld1sw.  */
+                                                  return 1597;
+                                                }
                                             }
                                         }
                                     }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             000001x1xx01xxxx0xxxxxxxxxxxxxxx
-                                             cpy.  */
-                                          return 1310;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             000001x1xx01xxxx1xxxxxxxxxxxxxxx
-                                             fcpy.  */
-                                          return 1357;
-                                        }
-                                    }
                                 }
                               else
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 15) & 0x1) == 0)
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 000001x1xx1xxxxx000xxxxxxxxxxxxx
-                                                 ext.  */
-                                              return 1332;
-                                            }
-                                          else
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x0000100xxxxxxxxxxxxx
-                                                                 cpy.  */
-                                                              return 1308;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x1000100xxxxxxxxxxxxx
-                                                                 clasta.  */
-                                                              return 1266;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx010000xxxxxxxxxx
+                                                             saddwb.  */
+                                                          return 2141;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x0100100xxxxxxxxxxxxx
-                                                                 revb.  */
-                                                              return 1760;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x1100100xxxxxxxxxxxxx
-                                                                 splice.  */
-                                                              return 1787;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx010100xxxxxxxxxx
+                                                             ssubwb.  */
+                                                          return 2249;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x0010100xxxxxxxxxxxxx
-                                                                 lasta.  */
-                                                              return 1454;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x1010100xxxxxxxxxxxxx
-                                                                 clasta.  */
-                                                              return 1267;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx010010xxxxxxxxxx
+                                                             uaddwb.  */
+                                                          return 2271;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xx110100xxxxxxxxxxxxx
-                                                             revw.  */
-                                                          return 1762;
+                                                             010001x1xx0xxxxx010110xxxxxxxxxx
+                                                             usubwb.  */
+                                                          return 2324;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x0001100xxxxxxxxxxxxx
-                                                                 compact.  */
-                                                              return 1307;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x1001100xxxxxxxxxxxxx
-                                                                 clastb.  */
-                                                              return 1269;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx010001xxxxxxxxxx
+                                                             saddwt.  */
+                                                          return 2142;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xx101100xxxxxxxxxxxxx
-                                                             revh.  */
-                                                          return 1761;
+                                                             010001x1xx0xxxxx010101xxxxxxxxxx
+                                                             ssubwt.  */
+                                                          return 2250;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x0011100xxxxxxxxxxxxx
-                                                                 lastb.  */
-                                                              return 1456;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 000001x1xx1x1011100xxxxxxxxxxxxx
-                                                                 clastb.  */
-                                                              return 1270;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx010011xxxxxxxxxx
+                                                             uaddwt.  */
+                                                          return 2272;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xx111100xxxxxxxxxxxxx
-                                                             rbit.  */
-                                                          return 1753;
+                                                             010001x1xx0xxxxx010111xxxxxxxxxx
+                                                             usubwt.  */
+                                                          return 2325;
                                                         }
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 11) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1xxxxx00100xxxxxxxxxxx
-                                                         dup.  */
-                                                      return 1323;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1xxxxx00110xxxxxxxxxxx
-                                                         tbl.  */
-                                                      return 1910;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x10x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1604;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x11x0xxxxx010xxxxxxxxxxxxx
+                                                     ld1d.  */
+                                                  return 1526;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 12) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x1xx100000001x1xxxxxxxxxxx
-                                                                         dup.  */
-                                                                      return 1322;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x1xx110000001x1xxxxxxxxxxx
-                                                                         sunpklo.  */
-                                                                      return 1906;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x1xx1x1000001x1xxxxxxxxxxx
-                                                                     rev.  */
-                                                                  return 1759;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x10x1xxxxx010000xxxxxxxxxx
+                                                                 sqxtnb.  */
+                                                              return 2232;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x1xx10x100001x1xxxxxxxxxxx
-                                                                     insr.  */
-                                                                  return 1451;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x1xx11x100001x1xxxxxxxxxxx
-                                                                     insr.  */
-                                                                  return 1452;
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x1xx1xxx10001x1xxxxxxxxxxx
-                                                             uunpklo.  */
-                                                          return 1969;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 17) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x1xx1xxx01001x1xxxxxxxxxxx
-                                                             sunpkhi.  */
-                                                          return 1905;
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x10x1xxxxx010100xxxxxxxxxx
+                                                                 sqxtunb.  */
+                                                              return 2234;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xxx11001x1xxxxxxxxxxx
-                                                             uunpkhi.  */
-                                                          return 1968;
+                                                             010001x10x1xxxxx010x10xxxxxxxxxx
+                                                             uqxtnb.  */
+                                                          return 2309;
                                                         }
                                                     }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  else
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 11) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x1xx100xx0101xxxxxxxxxxxxx
-                                                             lasta.  */
-                                                          return 1453;
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x10x1xxxxx010001xxxxxxxxxx
+                                                                 sqxtnt.  */
+                                                              return 2233;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x10x1xxxxx010101xxxxxxxxxx
+                                                                 sqxtunt.  */
+                                                              return 2235;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx110xx0101xxxxxxxxxxxxx
-                                                             clasta.  */
-                                                          return 1268;
+                                                             010001x10x1xxxxx010x11xxxxxxxxxx
+                                                             uqxtnt.  */
+                                                          return 2310;
                                                         }
                                                     }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1x1xx0101xxxxxxxxxxxxx
-                                                         cpy.  */
-                                                      return 1309;
-                                                    }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 20) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx10xxx1101xxxxxxxxxxxxx
-                                                         lastb.  */
-                                                      return 1455;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx11xxx1101xxxxxxxxxxxxx
-                                                         clastb.  */
-                                                      return 1271;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x10x1xxxxx010xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1605;
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x10001x11x1xxxxx010xxxxxxxxxxxxx
+                                                 ld1d.  */
+                                              return 1527;
+                                            }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 15) & 0x1) == 0)
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 10) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
                                               if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 13) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx110000xxxxxxxxxx
+                                                             sabalb.  */
+                                                          return 2133;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 000001x1xx10xxxx010000xxxxxxxxxx
-                                                                 zip1.  */
-                                                              return 1986;
+                                                                 010001x10x0xxxxx110100xxxxxxxxxx
+                                                                 adclb.  */
+                                                              return 2058;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 16) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x1xx11x0x0010000xxxxxxxxxx
-                                                                         punpklo.  */
-                                                                      return 1752;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         000001x1xx11x1x0010000xxxxxxxxxx
-                                                                         rev.  */
-                                                                      return 1758;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     000001x1xx11xxx1010000xxxxxxxxxx
-                                                                     punpkhi.  */
-                                                                  return 1751;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x11x0xxxxx110100xxxxxxxxxx
+                                                                 sbclb.  */
+                                                              return 2143;
                                                             }
                                                         }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x1xx1xxxxx011000xxxxxxxxxx
-                                                             zip1.  */
-                                                          return 1987;
-                                                        }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 13) & 0x1) == 0)
+                                                      if (((word >> 12) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xxxxx010100xxxxxxxxxx
-                                                             trn1.  */
-                                                          return 1911;
+                                                             010001x1xx0xxxxx110001xxxxxxxxxx
+                                                             sabalt.  */
+                                                          return 2134;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             000001x1xx1xxxxx011100xxxxxxxxxx
-                                                             trn1.  */
-                                                          return 1912;
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x10x0xxxxx110101xxxxxxxxxx
+                                                                 adclt.  */
+                                                              return 2059;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x11x0xxxxx110101xxxxxxxxxx
+                                                                 sbclt.  */
+                                                              return 2144;
+                                                            }
                                                         }
                                                     }
                                                 }
                                               else
-                                                {
-                                                  if (((word >> 13) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1xxxxx010x10xxxxxxxxxx
-                                                         uzp1.  */
-                                                      return 1973;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1xxxxx011x10xxxxxxxxxx
-                                                         uzp1.  */
-                                                      return 1974;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 11) & 0x1) == 0)
                                                 {
                                                   if (((word >> 12) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 13) & 0x1) == 0)
+                                                      if (((word >> 10) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xxxxx010001xxxxxxxxxx
-                                                             zip2.  */
-                                                          return 1988;
+                                                             010001x1xx0xxxxx110010xxxxxxxxxx
+                                                             uabalb.  */
+                                                          return 2264;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xxxxx011001xxxxxxxxxx
-                                                             zip2.  */
-                                                          return 1989;
+                                                             010001x1xx0xxxxx110011xxxxxxxxxx
+                                                             uabalt.  */
+                                                          return 2265;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 13) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xxxxx010101xxxxxxxxxx
-                                                             trn2.  */
-                                                          return 1913;
+                                                             010001x1xx0xxxx011011xxxxxxxxxxx
+                                                             cadd.  */
+                                                          return 2067;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             000001x1xx1xxxxx011101xxxxxxxxxx
-                                                             trn2.  */
-                                                          return 1914;
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 13) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1xxxxx010x11xxxxxxxxxx
-                                                         uzp2.  */
-                                                      return 1975;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         000001x1xx1xxxxx011x11xxxxxxxxxx
-                                                         uzp2.  */
-                                                      return 1976;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             000001x1xx1xxxxx11xxxxxxxxxxxxxx
-                                             sel.  */
-                                          return 1777;
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 13) & 0x1) == 0)
-                                {
-                                  if (((word >> 14) & 0x1) == 0)
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 100001x1x0xxxxxx000xxxxxxxxxxxxx
-                                                 ldr.  */
-                                              return 1681;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 100001x1x1xxxxxx000xxxxxxxxxxxxx
-                                                 prfb.  */
-                                              return 1725;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 100001x10xxxxxxx100xxxxxxxxxxxxx
-                                                 ld1rsh.  */
-                                              return 1510;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 100001x11xxxxxxx100xxxxxxxxxxxxx
-                                                 ld1rsb.  */
-                                              return 1507;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              if (((word >> 21) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x10x0xxxxx010xxxxxxxxxxxxx
-                                                     ld1w.  */
-                                                  return 1545;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x10x1xxxxx010xxxxxxxxxxxxx
-                                                     ld1w.  */
-                                                  return 1546;
+                                                             010001x1xx0xxxx111011xxxxxxxxxxx
+                                                             sqcadd.  */
+                                                          return 2175;
+                                                        }
+                                                    }
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x110xxxxxx010xxxxxxxxxxxxx
-                                                     ldr.  */
-                                                  return 1682;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1000xxxxx110xxxxxxxxxxxxx
+                                                         ldnt1w.  */
+                                                      return 2109;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1100xxxxx110xxxxxxxxxxxxx
+                                                         ldnt1d.  */
+                                                      return 2102;
+                                                    }
                                                 }
                                               else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x111xxxxxx010xxxxxxxxxxxxx
-                                                     prfw.  */
-                                                  return 1746;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 21) & 0x1) == 0)
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x1000xxxxx110xxxxxxxxxxxxx
-                                                         prfw.  */
-                                                      return 1742;
+                                                         110001x1010xxxxx110xxxxxxxxxxxxx
+                                                         ld1w.  */
+                                                      return 1606;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x1100xxxxx110xxxxxxxxxxxxx
-                                                         prfd.  */
-                                                      return 1728;
+                                                         110001x1110xxxxx110xxxxxxxxxxxxx
+                                                         ld1d.  */
+                                                      return 1528;
                                                     }
                                                 }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x10001x1001xxxxx110xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1611;
+                                                }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x1x01xxxxx110xxxxxxxxxxxxx
+                                                     x10001x1011xxxxx110xxxxxxxxxxxxx
                                                      ld1w.  */
-                                                  return 1553;
+                                                  return 1607;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x101xxxxxx110xxxxxxxxxxxxx
-                                                     ld1rw.  */
-                                                  return 1513;
+                                                     010001x11x1xxxxx110xxxxxxxxxxxxx
+                                                     histcnt.  */
+                                                  return 2098;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x111xxxxxx110xxxxxxxxxxxxx
-                                                     ld1rsb.  */
-                                                  return 1509;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1101xxxxx110xxxxxxxxxxxxx
+                                                         ld1d.  */
+                                                      return 1531;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1111xxxxx110xxxxxxxxxxxxx
+                                                         ld1d.  */
+                                                      return 1529;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
                                 }
-                              else
+                            }
+                          else
+                            {
+                              if (((word >> 14) & 0x1) == 0)
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 15) & 0x1) == 0)
                                     {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             100001x1xxxxxxxx001xxxxxxxxxxxxx
-                                             prfh.  */
-                                          return 1739;
-                                        }
-                                      else
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 100001x10xxxxxxx101xxxxxxxxxxxxx
-                                                 ld1rsh.  */
-                                              return 1511;
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x1xx0xxxxx001x00xxxxxxxxxx
+                                                         sabdlb.  */
+                                                      return 2135;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x1xx0xxxxx001x10xxxxxxxxxx
+                                                         uabdlb.  */
+                                                      return 2266;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x1xx0xxxxx001x01xxxxxxxxxx
+                                                         sabdlt.  */
+                                                      return 2136;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x1xx0xxxxx001x11xxxxxxxxxx
+                                                         uabdlt.  */
+                                                      return 2267;
+                                                    }
+                                                }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 100001x11xxxxxxx101xxxxxxxxxxxxx
-                                                 ld1rsb.  */
-                                              return 1508;
+                                                 110001x1xx0xxxxx001xxxxxxxxxxxxx
+                                                 ldff1sw.  */
+                                              return 1695;
                                             }
                                         }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
+                                      else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x10x0xxxxx011xxxxxxxxxxxxx
-                                                     ldff1w.  */
-                                                  return 1645;
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001000xxxxxxxxxx
+                                                             sqshrnb.  */
+                                                          return 2226;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001100xxxxxxxxxx
+                                                             uqshrnb.  */
+                                                          return 2305;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001010xxxxxxxxxx
+                                                             sqrshrnb.  */
+                                                          return 2218;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001110xxxxxxxxxx
+                                                             uqrshrnb.  */
+                                                          return 2300;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x10x1xxxxx011xxxxxxxxxxxxx
-                                                     ldff1w.  */
-                                                  return 1646;
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001001xxxxxxxxxx
+                                                             sqshrnt.  */
+                                                          return 2227;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001101xxxxxxxxxx
+                                                             uqshrnt.  */
+                                                          return 2306;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001011xxxxxxxxxx
+                                                             sqrshrnt.  */
+                                                          return 2219;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx001111xxxxxxxxxx
+                                                             uqrshrnt.  */
+                                                          return 2301;
+                                                        }
+                                                    }
                                                 }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 100001x11xxxxxxx011xxxxxxxxxxxxx
-                                                 prfd.  */
-                                              return 1732;
+                                                 110001x1xx1xxxxx001xxxxxxxxxxxxx
+                                                 ldff1sw.  */
+                                              return 1696;
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 11) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         100001x1000xxxxx111xxxxxxxxxxxxx
-                                                         prfw.  */
-                                                      return 1745;
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx101000xxxxxxxxxx
+                                                             sshllb.  */
+                                                          return 2242;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx101100xxxxxxxxxx
+                                                             bext.  */
+                                                          return 2347;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx101010xxxxxxxxxx
+                                                             ushllb.  */
+                                                          return 2318;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx101110xxxxxxxxxx
+                                                             bgrp.  */
+                                                          return 2348;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx101001xxxxxxxxxx
+                                                             sshllt.  */
+                                                          return 2243;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx101101xxxxxxxxxx
+                                                             bdep.  */
+                                                          return 2346;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         100001x1100xxxxx111xxxxxxxxxxxxx
-                                                         prfd.  */
-                                                      return 1731;
+                                                         010001x1xx0xxxxx101x11xxxxxxxxxx
+                                                         ushllt.  */
+                                                      return 2319;
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     100001x1x01xxxxx111xxxxxxxxxxxxx
-                                                     ldff1w.  */
-                                                  return 1655;
-                                                }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 110001x1xx0xxxxx101xxxxxxxxxxxxx
+                                                 ldff1sw.  */
+                                              return 1697;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x101xxxxxx111xxxxxxxxxxxxx
-                                                     ld1rw.  */
-                                                  return 1514;
+                                                     010001x1x01xxxxx101xxxxxxxxxxxxx
+                                                     histseg.  */
+                                                  return 2099;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     100001x111xxxxxx111xxxxxxxxxxxxx
-                                                     ld1rd.  */
-                                                  return 1495;
+                                                     110001x1x01xxxxx101xxxxxxxxxxxxx
+                                                     ldff1sw.  */
+                                                  return 1699;
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                      else
-                        {
-                          if (((word >> 13) & 0x1) == 0)
-                            {
-                              if (((word >> 14) & 0x1) == 0)
-                                {
-                                  if (((word >> 15) & 0x1) == 0)
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x10001x1xx0xxxxx000xxxxxxxxxxxxx
-                                             ld1sw.  */
-                                          return 1539;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x10001x1xx1xxxxx000xxxxxxxxxxxxx
-                                             ld1sw.  */
-                                          return 1540;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x10001x1xx0xxxxx100xxxxxxxxxxxxx
-                                             ld1sw.  */
-                                          return 1541;
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x1x01xxxxx100xxxxxxxxxxxxx
-                                                 ld1sw.  */
-                                              return 1544;
-                                            }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 x10001x1x11xxxxx100xxxxxxxxxxxxx
-                                                 ld1sw.  */
-                                              return 1542;
+                                                 x10001x1x11xxxxx101xxxxxxxxxxxxx
+                                                 ldff1sw.  */
+                                              return 1698;
                                             }
                                         }
                                     }
@@ -8471,83 +11845,218 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x10x0xxxxx010xxxxxxxxxxxxx
-                                                 ld1w.  */
-                                              return 1549;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x11x0xxxxx010xxxxxxxxxxxxx
-                                                 ld1d.  */
-                                              return 1471;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x10x1xxxxx010xxxxxxxxxxxxx
-                                                 ld1w.  */
-                                              return 1550;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x11x1xxxxx010xxxxxxxxxxxxx
-                                                 ld1d.  */
-                                              return 1472;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x10x0xxxxx110xxxxxxxxxxxxx
-                                                 ld1w.  */
-                                              return 1551;
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx011000xxxxxxxxxx
+                                                             sqdmullb.  */
+                                                          return 2196;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx011100xxxxxxxxxx
+                                                             smullb.  */
+                                                          return 2168;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1x00xxxxx011010xxxxxxxxxx
+                                                                 pmullb.  */
+                                                              return 2343;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1x10xxxxx011010xxxxxxxxxx
+                                                                 pmullb.  */
+                                                              return 2124;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx011110xxxxxxxxxx
+                                                             umullb.  */
+                                                          return 2293;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx011001xxxxxxxxxx
+                                                             sqdmullt.  */
+                                                          return 2199;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx011101xxxxxxxxxx
+                                                             smullt.  */
+                                                          return 2171;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1x00xxxxx011011xxxxxxxxxx
+                                                                 pmullt.  */
+                                                              return 2344;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1x10xxxxx011011xxxxxxxxxx
+                                                                 pmullt.  */
+                                                              return 2125;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx011111xxxxxxxxxx
+                                                             umullt.  */
+                                                          return 2296;
+                                                        }
+                                                    }
+                                                }
                                             }
                                           else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x11x0xxxxx110xxxxxxxxxxxxx
-                                                 ld1d.  */
-                                              return 1473;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x1001xxxxx110xxxxxxxxxxxxx
-                                                     ld1w.  */
-                                                  return 1556;
+                                                     110001x10x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1706;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x1101xxxxx110xxxxxxxxxxxxx
-                                                     ld1d.  */
-                                                  return 1476;
+                                                     110001x11x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1d.  */
+                                                  return 1651;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 10) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011000xxxxxxxxxx
+                                                             addhnb.  */
+                                                          return 2060;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011100xxxxxxxxxx
+                                                             subhnb.  */
+                                                          return 2258;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011010xxxxxxxxxx
+                                                             raddhnb.  */
+                                                          return 2126;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011110xxxxxxxxxx
+                                                             rsubhnb.  */
+                                                          return 2130;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011001xxxxxxxxxx
+                                                             addhnt.  */
+                                                          return 2061;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011101xxxxxxxxxx
+                                                             subhnt.  */
+                                                          return 2259;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011011xxxxxxxxxx
+                                                             raddhnt.  */
+                                                          return 2127;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx1xxxxx011111xxxxxxxxxx
+                                                             rsubhnt.  */
+                                                          return 2131;
+                                                        }
+                                                    }
                                                 }
                                             }
                                           else
@@ -8556,160 +12065,149 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x1011xxxxx110xxxxxxxxxxxxx
-                                                     ld1w.  */
-                                                  return 1552;
+                                                     110001x10x1xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1707;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     x10001x1111xxxxx110xxxxxxxxxxxxx
-                                                     ld1d.  */
-                                                  return 1474;
+                                                     110001x11x1xxxxx011xxxxxxxxxxxxx
+                                                     ldff1d.  */
+                                                  return 1652;
                                                 }
                                             }
                                         }
                                     }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 14) & 0x1) == 0)
-                                {
-                                  if (((word >> 15) & 0x1) == 0)
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x10001x1xx0xxxxx001xxxxxxxxxxxxx
-                                             ldff1sw.  */
-                                          return 1640;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x10001x1xx1xxxxx001xxxxxxxxxxxxx
-                                             ldff1sw.  */
-                                          return 1641;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             x10001x1xx0xxxxx101xxxxxxxxxxxxx
-                                             ldff1sw.  */
-                                          return 1642;
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x1x01xxxxx101xxxxxxxxxxxxx
-                                                 ldff1sw.  */
-                                              return 1644;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x1x11xxxxx101xxxxxxxxxxxxx
-                                                 ldff1sw.  */
-                                              return 1643;
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 15) & 0x1) == 0)
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x10x0xxxxx011xxxxxxxxxxxxx
-                                                 ldff1w.  */
-                                              return 1651;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x11x0xxxxx011xxxxxxxxxxxxx
-                                                 ldff1d.  */
-                                              return 1596;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x10x1xxxxx011xxxxxxxxxxxxx
-                                                 ldff1w.  */
-                                              return 1652;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x10001x11x1xxxxx011xxxxxxxxxxxxx
-                                                 ldff1d.  */
-                                              return 1597;
-                                            }
-                                        }
-                                    }
                                   else
                                     {
                                       if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 10) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x1000xxxxx111xxxxxxxxxxxxx
-                                                     prfw.  */
-                                                  return 1747;
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111000xxxxxxxxxx
+                                                             ssra.  */
+                                                          return 2244;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111100xxxxxxxxxx
+                                                             sri.  */
+                                                          return 2237;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111010xxxxxxxxxx
+                                                             srsra.  */
+                                                          return 2241;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111110xxxxxxxxxx
+                                                             saba.  */
+                                                          return 2132;
+                                                        }
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x1100xxxxx111xxxxxxxxxxxxx
-                                                     prfd.  */
-                                                  return 1733;
+                                                  if (((word >> 11) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111001xxxxxxxxxx
+                                                             usra.  */
+                                                          return 2321;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111101xxxxxxxxxx
+                                                             sli.  */
+                                                          return 2150;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 12) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111011xxxxxxxxxx
+                                                             ursra.  */
+                                                          return 2317;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x1xx0xxxxx111111xxxxxxxxxx
+                                                             uaba.  */
+                                                          return 2263;
+                                                        }
+                                                    }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x1010xxxxx111xxxxxxxxxxxxx
-                                                     ldff1w.  */
-                                                  return 1653;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1000xxxxx111xxxxxxxxxxxxx
+                                                         prfw.  */
+                                                      return 1802;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1100xxxxx111xxxxxxxxxxxxx
+                                                         prfd.  */
+                                                      return 1788;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x1110xxxxx111xxxxxxxxxxxxx
-                                                     ldff1d.  */
-                                                  return 1598;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1010xxxxx111xxxxxxxxxxxxx
+                                                         ldff1w.  */
+                                                      return 1708;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1110xxxxx111xxxxxxxxxxxxx
+                                                         ldff1d.  */
+                                                      return 1653;
+                                                    }
                                                 }
                                             }
                                         }
@@ -8719,11 +12217,88 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     x10001x1001xxxxx111xxxxxxxxxxxxx
-                                                     ldff1w.  */
-                                                  return 1656;
+                                                  if (((word >> 31) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 10) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 16) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 17) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         010001x1001xxx001110x0xxxxxxxxxx
+                                                                         aesmc.  */
+                                                                      return 2342;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         010001x1001xxx101110x0xxxxxxxxxx
+                                                                         aese.  */
+                                                                      return 2340;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x1001xxxx11110x0xxxxxxxxxx
+                                                                     sm4e.  */
+                                                                  return 2337;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1001xxxxx1111x0xxxxxxxxxx
+                                                                 sm4ekey.  */
+                                                              return 2338;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 17) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x1001xxx0x1110x1xxxxxxxxxx
+                                                                     aesimc.  */
+                                                                  return 2341;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     010001x1001xxx1x1110x1xxxxxxxxxx
+                                                                     aesd.  */
+                                                                  return 2339;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 010001x1001xxxxx1111x1xxxxxxxxxx
+                                                                 rax1.  */
+                                                              return 2345;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         110001x1001xxxxx111xxxxxxxxxxxxx
+                                                         ldff1w.  */
+                                                      return 1711;
+                                                    }
                                                 }
                                               else
                                                 {
@@ -8731,7 +12306,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10001x1101xxxxx111xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1600;
+                                                  return 1655;
                                                 }
                                             }
                                           else
@@ -8742,7 +12317,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10001x1011xxxxx111xxxxxxxxxxxxx
                                                      ldff1w.  */
-                                                  return 1654;
+                                                  return 1709;
                                                 }
                                               else
                                                 {
@@ -8750,7 +12325,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10001x1111xxxxx111xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1599;
+                                                  return 1654;
                                                 }
                                             }
                                         }
@@ -8779,7 +12354,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001001x1xx0xxxxx000xxxxxxxx0xxxx
                                                      cmpge.  */
-                                                  return 1279;
+                                                  return 1334;
                                                 }
                                               else
                                                 {
@@ -8787,7 +12362,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001001x1xx0xxxxx000xxxxxxxx1xxxx
                                                      cmpgt.  */
-                                                  return 1282;
+                                                  return 1337;
                                                 }
                                             }
                                           else
@@ -8798,7 +12373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x10x0xxxxx000xxxxxxxxxxxxx
                                                      ld1rqw.  */
-                                                  return 1506;
+                                                  return 1561;
                                                 }
                                               else
                                                 {
@@ -8806,92 +12381,202 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x11x0xxxxx000xxxxxxxxxxxxx
                                                      ld1rqd.  */
-                                                  return 1502;
+                                                  return 1557;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 4) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 11) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00000xxxxxx0xxxx
-                                                         whilelt.  */
-                                                      return 1983;
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000000xxxxx0xxxx
+                                                                 whilege.  */
+                                                              return 2326;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000100xxxxx0xxxx
+                                                                 whilege.  */
+                                                              return 2327;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000010xxxxx0xxxx
+                                                                 whilehs.  */
+                                                              return 2332;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000110xxxxx0xxxx
+                                                                 whilehs.  */
+                                                              return 2333;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00010xxxxxx0xxxx
-                                                         whilelt.  */
-                                                      return 1984;
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000001xxxxx0xxxx
+                                                                 whilelt.  */
+                                                              return 2038;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000101xxxxx0xxxx
+                                                                 whilelt.  */
+                                                              return 2039;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000011xxxxx0xxxx
+                                                                 whilelo.  */
+                                                              return 2034;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000111xxxxx0xxxx
+                                                                 whilelo.  */
+                                                              return 2035;
+                                                            }
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
+                                                  if (((word >> 10) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00001xxxxxx0xxxx
-                                                         whilelo.  */
-                                                      return 1979;
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000000xxxxx1xxxx
+                                                                 whilegt.  */
+                                                              return 2328;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000100xxxxx1xxxx
+                                                                 whilegt.  */
+                                                              return 2329;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000010xxxxx1xxxx
+                                                                 whilehi.  */
+                                                              return 2330;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000110xxxxx1xxxx
+                                                                 whilehi.  */
+                                                              return 2331;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00011xxxxxx0xxxx
-                                                         whilelo.  */
-                                                      return 1980;
+                                                      if (((word >> 11) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000001xxxxx1xxxx
+                                                                 whilele.  */
+                                                              return 2032;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000101xxxxx1xxxx
+                                                                 whilele.  */
+                                                              return 2033;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 12) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000011xxxxx1xxxx
+                                                                 whilels.  */
+                                                              return 2036;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x1xx1xxxxx000111xxxxx1xxxx
+                                                                 whilels.  */
+                                                              return 2037;
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 11) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00000xxxxxx1xxxx
-                                                         whilele.  */
-                                                      return 1977;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00010xxxxxx1xxxx
-                                                         whilele.  */
-                                                      return 1978;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x10x1xxxxx000xxxxxxxxxxxxx
+                                                     ld1row.  */
+                                                  return 2412;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00001xxxxxx1xxxx
-                                                         whilels.  */
-                                                      return 1981;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x01001x1xx1xxxxx00011xxxxxx1xxxx
-                                                         whilels.  */
-                                                      return 1982;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x11x1xxxxx000xxxxxxxxxxxxx
+                                                     ld1rod.  */
+                                                  return 2413;
                                                 }
                                             }
                                         }
@@ -8910,7 +12595,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x1xx0xxxxx000x00xxxxxxxxxx
                                                          fadd.  */
-                                                      return 1337;
+                                                      return 1392;
                                                     }
                                                   else
                                                     {
@@ -8920,7 +12605,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x1xx0xxxxx000010xxxxxxxxxx
                                                              fmul.  */
-                                                          return 1404;
+                                                          return 1459;
                                                         }
                                                       else
                                                         {
@@ -8928,7 +12613,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x1xx0xxxxx000110xxxxxxxxxx
                                                              frecps.  */
-                                                          return 1417;
+                                                          return 1472;
                                                         }
                                                     }
                                                 }
@@ -8940,7 +12625,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x1xx0xxxxx000x01xxxxxxxxxx
                                                          fsub.  */
-                                                      return 1430;
+                                                      return 1485;
                                                     }
                                                   else
                                                     {
@@ -8950,7 +12635,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x1xx0xxxxx000011xxxxxxxxxx
                                                              ftsmul.  */
-                                                          return 1436;
+                                                          return 1491;
                                                         }
                                                       else
                                                         {
@@ -8958,7 +12643,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              011001x1xx0xxxxx000111xxxxxxxxxx
                                                              frsqrts.  */
-                                                          return 1427;
+                                                          return 1482;
                                                         }
                                                     }
                                                 }
@@ -8969,7 +12654,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx000xxxxxxxxxxxxx
                                                  fmla.  */
-                                              return 1395;
+                                              return 1450;
                                             }
                                         }
                                       else
@@ -8978,7 +12663,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              111001x1xxxxxxxx000xxxxxxxxxxxxx
                                              str.  */
-                                          return 1898;
+                                          return 1953;
                                         }
                                     }
                                 }
@@ -8996,7 +12681,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001001x1xx0xxxxx001xxxxxxxx0xxxx
                                                      cmplt.  */
-                                                  return 1296;
+                                                  return 1351;
                                                 }
                                               else
                                                 {
@@ -9004,7 +12689,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001001x1xx0xxxxx001xxxxxxxx1xxxx
                                                      cmple.  */
-                                                  return 1290;
+                                                  return 1345;
                                                 }
                                             }
                                           else
@@ -9015,7 +12700,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x10x0xxxxx001xxxxxxxxxxxxx
                                                      ld1rqw.  */
-                                                  return 1505;
+                                                  return 1560;
                                                 }
                                               else
                                                 {
@@ -9023,181 +12708,258 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      101001x11x0xxxxx001xxxxxxxxxxxxx
                                                      ld1rqd.  */
-                                                  return 1501;
+                                                  return 1556;
                                                 }
                                             }
                                         }
                                       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)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 x11001x1xx000000001xxxxxxxxxxxxx
-                                                                 faddv.  */
-                                                              return 1341;
-                                                            }
-                                                          else
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 4) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     x11001x1xx010000001xxxxxxxx0xxxx
-                                                                     fcmge.  */
-                                                                  return 1348;
+                                                                     011001x1xx000000001xxxxxxxxxxxxx
+                                                                     faddv.  */
+                                                                  return 1396;
                                                                 }
                                                               else
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     x11001x1xx010000001xxxxxxxx1xxxx
-                                                                     fcmgt.  */
-                                                                  return 1350;
+                                                                  if (((word >> 4) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1xx010000001xxxxxxxx0xxxx
+                                                                         fcmge.  */
+                                                                      return 1403;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1xx010000001xxxxxxxx1xxxx
+                                                                         fcmgt.  */
+                                                                      return 1405;
+                                                                    }
                                                                 }
                                                             }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x1000001xxxxxxxxxxxxx
+                                                                 fadda.  */
+                                                              return 1395;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x1xx0x1000001xxxxxxxxxxxxx
-                                                             fadda.  */
-                                                          return 1340;
+                                                             011001x1xx0xx100001xxxxxxxxxxxxx
+                                                             fmaxnmv.  */
+                                                          return 1442;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x1xx0xx100001xxxxxxxxxxxxx
-                                                         fmaxnmv.  */
-                                                      return 1387;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x1xx0xx010001xxxxxxxxxxxxx
+                                                             fcmeq.  */
+                                                          return 1401;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x0110001xxxxxxxxxxxxx
+                                                                 fmaxv.  */
+                                                              return 1443;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x1110001xxxxxxxxxxxxx
+                                                                 frecpe.  */
+                                                              return 1471;
+                                                            }
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 18) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         x11001x1xx0xx010001xxxxxxxxxxxxx
-                                                         fcmeq.  */
-                                                      return 1346;
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 4) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0xx001001xxxxxxxx0xxxx
+                                                                 fcmlt.  */
+                                                              return 1408;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0xx001001xxxxxxxx1xxxx
+                                                                 fcmle.  */
+                                                              return 1407;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             011001x1xx0xx101001xxxxxxxxxxxxx
+                                                             fminnmv.  */
+                                                          return 1448;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             x11001x1xx0x0110001xxxxxxxxxxxxx
-                                                             fmaxv.  */
-                                                          return 1388;
+                                                             011001x1xx0xx011001xxxxxxxxxxxxx
+                                                             fcmne.  */
+                                                          return 1409;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x11001x1xx0x1110001xxxxxxxxxxxxx
-                                                             frecpe.  */
-                                                          return 1416;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x0111001xxxxxxxxxxxxx
+                                                                 fminv.  */
+                                                              return 1449;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x1111001xxxxxxxxxxxxx
+                                                                 frsqrte.  */
+                                                              return 1481;
+                                                            }
                                                         }
                                                     }
                                                 }
                                             }
-                                          else
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x1000xxxxx001xxxxxxxxxxxxx
+                                                         stnt1w.  */
+                                                      return 2257;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x1100xxxxx001xxxxxxxxxxxxx
+                                                         stnt1d.  */
+                                                      return 2253;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x1x10xxxxx001xxxxxxxxxxxxx
+                                                     stnt1w.  */
+                                                  return 2256;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 17) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 18) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 4) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x11001x1xx0xx001001xxxxxxxx0xxxx
-                                                             fcmlt.  */
-                                                          return 1353;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x11001x1xx0xx001001xxxxxxxx1xxxx
-                                                             fcmle.  */
-                                                          return 1352;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         001001x1xx1xxxxx0010xxxxxxx0xxxx
+                                                         ctermeq.  */
+                                                      return 1366;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x1xx0xx101001xxxxxxxxxxxxx
-                                                         fminnmv.  */
-                                                      return 1393;
+                                                         001001x1xx1xxxxx0011xxxxxxx0xxxx
+                                                         whilewr.  */
+                                                      return 2335;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 18) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         x11001x1xx0xx011001xxxxxxxxxxxxx
-                                                         fcmne.  */
-                                                      return 1354;
+                                                         001001x1xx1xxxxx0010xxxxxxx1xxxx
+                                                         ctermne.  */
+                                                      return 1367;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x11001x1xx0x0111001xxxxxxxxxxxxx
-                                                             fminv.  */
-                                                          return 1394;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             x11001x1xx0x1111001xxxxxxxxxxxxx
-                                                             frsqrte.  */
-                                                          return 1426;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         001001x1xx1xxxxx0011xxxxxxx1xxxx
+                                                         whilerw.  */
+                                                      return 2334;
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 4) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x01001x1xx1xxxxx001xxxxxxxx0xxxx
-                                                 ctermeq.  */
-                                              return 1311;
-                                            }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 x01001x1xx1xxxxx001xxxxxxxx1xxxx
-                                                 ctermne.  */
-                                              return 1312;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x10x1xxxxx001xxxxxxxxxxxxx
+                                                     ld1row.  */
+                                                  return 2416;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x11x1xxxxx001xxxxxxxxxxxxx
+                                                     ld1rod.  */
+                                                  return 2417;
+                                                }
                                             }
                                         }
                                       else
@@ -9206,7 +12968,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x11001x1xx1xxxxx001xxxxxxxxxxxxx
                                              fmls.  */
-                                          return 1399;
+                                          return 1454;
                                         }
                                     }
                                 }
@@ -9233,7 +12995,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x10000xxxx01xxxx0xxxx0xxxx
                                                                  and.  */
-                                                              return 1242;
+                                                              return 1297;
                                                             }
                                                           else
                                                             {
@@ -9241,7 +13003,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x10000xxxx01xxxx0xxxx1xxxx
                                                                  bic.  */
-                                                              return 1254;
+                                                              return 1309;
                                                             }
                                                         }
                                                       else
@@ -9252,7 +13014,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x100010xxx01xxxx0xxxxxxxxx
                                                                  brka.  */
-                                                              return 1256;
+                                                              return 1311;
                                                             }
                                                           else
                                                             {
@@ -9260,7 +13022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x100011xxx01xxxx0xxxxxxxxx
                                                                  brkn.  */
-                                                              return 1260;
+                                                              return 1315;
                                                             }
                                                         }
                                                     }
@@ -9272,7 +13034,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1000xxxxx01xxxx1xxxx0xxxx
                                                              eor.  */
-                                                          return 1329;
+                                                          return 1384;
                                                         }
                                                       else
                                                         {
@@ -9280,7 +13042,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1000xxxxx01xxxx1xxxx1xxxx
                                                              sel.  */
-                                                          return 1778;
+                                                          return 1833;
                                                         }
                                                     }
                                                 }
@@ -9292,7 +13054,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1000xxxxx010xxxxxxxxxxxxx
                                                          ld1sh.  */
-                                                      return 1528;
+                                                      return 1583;
                                                     }
                                                   else
                                                     {
@@ -9300,7 +13062,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1000xxxxx011xxxxxxxxxxxxx
                                                          ldff1sh.  */
-                                                      return 1628;
+                                                      return 1683;
                                                     }
                                                 }
                                             }
@@ -9318,7 +13080,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x11000xxxx01xxxx0xxxx0xxxx
                                                                  orr.  */
-                                                              return 1714;
+                                                              return 1769;
                                                             }
                                                           else
                                                             {
@@ -9326,7 +13088,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x11000xxxx01xxxx0xxxx1xxxx
                                                                  orn.  */
-                                                              return 1709;
+                                                              return 1764;
                                                             }
                                                         }
                                                       else
@@ -9335,7 +13097,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x11001xxxx01xxxx0xxxxxxxxx
                                                              brkb.  */
-                                                          return 1258;
+                                                          return 1313;
                                                         }
                                                     }
                                                   else
@@ -9346,7 +13108,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1100xxxxx01xxxx1xxxx0xxxx
                                                              nor.  */
-                                                          return 1706;
+                                                          return 1761;
                                                         }
                                                       else
                                                         {
@@ -9354,7 +13116,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1100xxxxx01xxxx1xxxx1xxxx
                                                              nand.  */
-                                                          return 1703;
+                                                          return 1758;
                                                         }
                                                     }
                                                 }
@@ -9366,7 +13128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1100xxxxx010xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1516;
+                                                      return 1571;
                                                     }
                                                   else
                                                     {
@@ -9374,7 +13136,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1100xxxxx011xxxxxxxxxxxxx
                                                          ldff1sb.  */
-                                                      return 1616;
+                                                      return 1671;
                                                     }
                                                 }
                                             }
@@ -9395,7 +13157,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x10100xxxx01xxxx0xxxx0xxxx
                                                                  ands.  */
-                                                              return 1243;
+                                                              return 1298;
                                                             }
                                                           else
                                                             {
@@ -9405,7 +13167,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x101010xxx01xxxx0xxxx0xxxx
                                                                      brkas.  */
-                                                                  return 1257;
+                                                                  return 1312;
                                                                 }
                                                               else
                                                                 {
@@ -9413,7 +13175,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x101011xxx01xxxx0xxxx0xxxx
                                                                      brkns.  */
-                                                                  return 1261;
+                                                                  return 1316;
                                                                 }
                                                             }
                                                         }
@@ -9423,7 +13185,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1010xxxxx01xxxx1xxxx0xxxx
                                                              eors.  */
-                                                          return 1330;
+                                                          return 1385;
                                                         }
                                                     }
                                                   else
@@ -9432,7 +13194,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1010xxxxx01xxxxxxxxx1xxxx
                                                          bics.  */
-                                                      return 1255;
+                                                      return 1310;
                                                     }
                                                 }
                                               else
@@ -9443,7 +13205,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1010xxxxx010xxxxxxxxxxxxx
                                                          ld1w.  */
-                                                      return 1547;
+                                                      return 1602;
                                                     }
                                                   else
                                                     {
@@ -9451,7 +13213,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1010xxxxx011xxxxxxxxxxxxx
                                                          ldff1w.  */
-                                                      return 1647;
+                                                      return 1702;
                                                     }
                                                 }
                                             }
@@ -9469,7 +13231,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x11100xxxx01xxxx0xxxx0xxxx
                                                                  orrs.  */
-                                                              return 1715;
+                                                              return 1770;
                                                             }
                                                           else
                                                             {
@@ -9477,7 +13239,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x11101xxxx01xxxx0xxxx0xxxx
                                                                  brkbs.  */
-                                                              return 1259;
+                                                              return 1314;
                                                             }
                                                         }
                                                       else
@@ -9486,7 +13248,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1110xxxxx01xxxx1xxxx0xxxx
                                                              nors.  */
-                                                          return 1707;
+                                                          return 1762;
                                                         }
                                                     }
                                                   else
@@ -9497,7 +13259,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1110xxxxx01xxxx0xxxx1xxxx
                                                              orns.  */
-                                                          return 1710;
+                                                          return 1765;
                                                         }
                                                       else
                                                         {
@@ -9505,7 +13267,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1110xxxxx01xxxx1xxxx1xxxx
                                                              nands.  */
-                                                          return 1704;
+                                                          return 1759;
                                                         }
                                                     }
                                                 }
@@ -9517,7 +13279,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1110xxxxx010xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1518;
+                                                      return 1573;
                                                     }
                                                   else
                                                     {
@@ -9525,7 +13287,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1110xxxxx011xxxxxxxxxxxxx
                                                          ldff1sb.  */
-                                                      return 1620;
+                                                      return 1675;
                                                     }
                                                 }
                                             }
@@ -9543,7 +13305,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1001xxxxx010xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1529;
+                                                  return 1584;
                                                 }
                                               else
                                                 {
@@ -9551,7 +13313,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1101xxxxx010xxxxxxxxxxxxx
                                                      ld1sb.  */
-                                                  return 1517;
+                                                  return 1572;
                                                 }
                                             }
                                           else
@@ -9562,7 +13324,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1011xxxxx010xxxxxxxxxxxxx
                                                      ld1w.  */
-                                                  return 1548;
+                                                  return 1603;
                                                 }
                                               else
                                                 {
@@ -9570,7 +13332,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1111xxxxx010xxxxxxxxxxxxx
                                                      ld1d.  */
-                                                  return 1470;
+                                                  return 1525;
                                                 }
                                             }
                                         }
@@ -9584,7 +13346,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1001xxxxx011xxxxxxxxxxxxx
                                                      ldff1sh.  */
-                                                  return 1630;
+                                                  return 1685;
                                                 }
                                               else
                                                 {
@@ -9592,7 +13354,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1101xxxxx011xxxxxxxxxxxxx
                                                      ldff1sb.  */
-                                                  return 1618;
+                                                  return 1673;
                                                 }
                                             }
                                           else
@@ -9603,7 +13365,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1011xxxxx011xxxxxxxxxxxxx
                                                      ldff1w.  */
-                                                  return 1649;
+                                                  return 1704;
                                                 }
                                               else
                                                 {
@@ -9611,7 +13373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x1111xxxxx011xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1594;
+                                                  return 1649;
                                                 }
                                             }
                                         }
@@ -9631,7 +13393,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011001x1xx0xxxxx010xxxxxxxx0xxxx
                                                      fcmge.  */
-                                                  return 1349;
+                                                  return 1404;
                                                 }
                                               else
                                                 {
@@ -9639,7 +13401,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011001x1xx0xxxxx010xxxxxxxx1xxxx
                                                      fcmgt.  */
-                                                  return 1351;
+                                                  return 1406;
                                                 }
                                             }
                                           else
@@ -9648,7 +13410,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx010xxxxxxxxxxxxx
                                                  fnmla.  */
-                                              return 1413;
+                                              return 1468;
                                             }
                                         }
                                       else
@@ -9659,7 +13421,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  111001x1x0xxxxxx010xxxxxxxxxxxxx
                                                  str.  */
-                                              return 1899;
+                                              return 1954;
                                             }
                                           else
                                             {
@@ -9669,7 +13431,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1x10xxxxx010xxxxxxxxxxxxx
                                                      st1w.  */
-                                                  return 1858;
+                                                  return 1913;
                                                 }
                                               else
                                                 {
@@ -9679,7 +13441,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1011xxxxx010xxxxxxxxxxxxx
                                                          st1w.  */
-                                                      return 1860;
+                                                      return 1915;
                                                     }
                                                   else
                                                     {
@@ -9687,7 +13449,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1111xxxxx010xxxxxxxxxxxxx
                                                          st1d.  */
-                                                      return 1837;
+                                                      return 1892;
                                                     }
                                                 }
                                             }
@@ -9705,7 +13467,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011001x1xx0xxxxx011xxxxxxxx0xxxx
                                                      fcmeq.  */
-                                                  return 1347;
+                                                  return 1402;
                                                 }
                                               else
                                                 {
@@ -9713,7 +13475,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011001x1xx0xxxxx011xxxxxxxx1xxxx
                                                      fcmne.  */
-                                                  return 1355;
+                                                  return 1410;
                                                 }
                                             }
                                           else
@@ -9726,7 +13488,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1000xxxxx011xxxxxxxxxxxxx
                                                          stnt1w.  */
-                                                      return 1896;
+                                                      return 1951;
                                                     }
                                                   else
                                                     {
@@ -9734,7 +13496,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1100xxxxx011xxxxxxxxxxxxx
                                                          stnt1d.  */
-                                                      return 1892;
+                                                      return 1947;
                                                     }
                                                 }
                                               else
@@ -9745,7 +13507,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1010xxxxx011xxxxxxxxxxxxx
                                                          st3w.  */
-                                                      return 1880;
+                                                      return 1935;
                                                     }
                                                   else
                                                     {
@@ -9753,7 +13515,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1110xxxxx011xxxxxxxxxxxxx
                                                          st3d.  */
-                                                      return 1876;
+                                                      return 1931;
                                                     }
                                                 }
                                             }
@@ -9766,7 +13528,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx011xxxxxxxxxxxxx
                                                  fnmls.  */
-                                              return 1414;
+                                              return 1469;
                                             }
                                           else
                                             {
@@ -9778,7 +13540,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1001xxxxx011xxxxxxxxxxxxx
                                                          st2w.  */
-                                                      return 1872;
+                                                      return 1927;
                                                     }
                                                   else
                                                     {
@@ -9786,7 +13548,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1101xxxxx011xxxxxxxxxxxxx
                                                          st2d.  */
-                                                      return 1868;
+                                                      return 1923;
                                                     }
                                                 }
                                               else
@@ -9797,7 +13559,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1011xxxxx011xxxxxxxxxxxxx
                                                          st4w.  */
-                                                      return 1888;
+                                                      return 1943;
                                                     }
                                                   else
                                                     {
@@ -9805,7 +13567,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1111xxxxx011xxxxxxxxxxxxx
                                                          st4d.  */
-                                                      return 1884;
+                                                      return 1939;
                                                     }
                                                 }
                                             }
@@ -9830,7 +13592,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x01001x1xx0xxxxx100xxxxxxxx0xxxx
                                                  cmpeq.  */
-                                              return 1276;
+                                              return 1331;
                                             }
                                           else
                                             {
@@ -9838,7 +13600,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x01001x1xx0xxxxx100xxxxxxxx1xxxx
                                                  cmpne.  */
-                                              return 1299;
+                                              return 1354;
                                             }
                                         }
                                       else
@@ -9853,7 +13615,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x10000xxxx101xxxxxxxxxxxxx
                                                          ld1sh.  */
-                                                      return 1535;
+                                                      return 1590;
                                                     }
                                                   else
                                                     {
@@ -9861,7 +13623,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x11000xxxx101xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1522;
+                                                      return 1577;
                                                     }
                                                 }
                                               else
@@ -9872,7 +13634,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x10100xxxx101xxxxxxxxxxxxx
                                                          ld1w.  */
-                                                      return 1554;
+                                                      return 1609;
                                                     }
                                                   else
                                                     {
@@ -9880,7 +13642,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x11100xxxx101xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1524;
+                                                      return 1579;
                                                     }
                                                 }
                                             }
@@ -9894,7 +13656,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x10001xxxx101xxxxxxxxxxxxx
                                                          ldnf1sh.  */
-                                                      return 1668;
+                                                      return 1723;
                                                     }
                                                   else
                                                     {
@@ -9902,7 +13664,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x11001xxxx101xxxxxxxxxxxxx
                                                          ldnf1sb.  */
-                                                      return 1665;
+                                                      return 1720;
                                                     }
                                                 }
                                               else
@@ -9913,7 +13675,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x10101xxxx101xxxxxxxxxxxxx
                                                          ldnf1w.  */
-                                                      return 1671;
+                                                      return 1726;
                                                     }
                                                   else
                                                     {
@@ -9921,7 +13683,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x01001x11101xxxx101xxxxxxxxxxxxx
                                                          ldnf1sb.  */
-                                                      return 1667;
+                                                      return 1722;
                                                     }
                                                 }
                                             }
@@ -9941,7 +13703,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1x000xxxx11xxxxxxxxx0xxxx
                                                          brkpa.  */
-                                                      return 1262;
+                                                      return 1317;
                                                     }
                                                   else
                                                     {
@@ -9949,7 +13711,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1x100xxxx11xxxxxxxxx0xxxx
                                                          brkpas.  */
-                                                      return 1263;
+                                                      return 1318;
                                                     }
                                                 }
                                               else
@@ -9962,7 +13724,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx010xx011xxxxxxxxx0xxxx
                                                              ptest.  */
-                                                          return 1748;
+                                                          return 1803;
                                                         }
                                                       else
                                                         {
@@ -9976,7 +13738,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          001001x1xx011xx01100x0xxxxx0xxxx
                                                                          pfirst.  */
-                                                                      return 1718;
+                                                                      return 1773;
                                                                     }
                                                                   else
                                                                     {
@@ -9984,7 +13746,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          001001x1xx011xx01110x0xxxxx0xxxx
                                                                          ptrue.  */
-                                                                      return 1749;
+                                                                      return 1804;
                                                                     }
                                                                 }
                                                               else
@@ -9995,7 +13757,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          001001x1x0011xx011x1x0xxxxx0xxxx
                                                                          rdffr.  */
-                                                                      return 1755;
+                                                                      return 1810;
                                                                     }
                                                                   else
                                                                     {
@@ -10003,7 +13765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          001001x1x1011xx011x1x0xxxxx0xxxx
                                                                          rdffrs.  */
-                                                                      return 1756;
+                                                                      return 1811;
                                                                     }
                                                                 }
                                                             }
@@ -10013,7 +13775,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx011xx011xxx1xxxxx0xxxx
                                                                  pfalse.  */
-                                                              return 1717;
+                                                              return 1772;
                                                             }
                                                         }
                                                     }
@@ -10027,7 +13789,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx01xxx111x0x0xxxxx0xxxx
                                                                  ptrues.  */
-                                                              return 1750;
+                                                              return 1805;
                                                             }
                                                           else
                                                             {
@@ -10035,7 +13797,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx01xxx111x1x0xxxxx0xxxx
                                                                  rdffr.  */
-                                                              return 1754;
+                                                              return 1809;
                                                             }
                                                         }
                                                       else
@@ -10044,7 +13806,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx01xxx111xxx1xxxxx0xxxx
                                                              pnext.  */
-                                                          return 1719;
+                                                          return 1774;
                                                         }
                                                     }
                                                 }
@@ -10057,7 +13819,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001001x1x00xxxxx11xxxxxxxxx1xxxx
                                                      brkpb.  */
-                                                  return 1264;
+                                                  return 1319;
                                                 }
                                               else
                                                 {
@@ -10065,7 +13827,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      001001x1x10xxxxx11xxxxxxxxx1xxxx
                                                      brkpbs.  */
-                                                  return 1265;
+                                                  return 1320;
                                                 }
                                             }
                                         }
@@ -10081,7 +13843,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1000xxxxx110xxxxxxxxxxxxx
                                                          ldnt1w.  */
-                                                      return 1679;
+                                                      return 1734;
                                                     }
                                                   else
                                                     {
@@ -10089,7 +13851,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1100xxxxx110xxxxxxxxxxxxx
                                                          ldnt1d.  */
-                                                      return 1675;
+                                                      return 1730;
                                                     }
                                                 }
                                               else
@@ -10100,7 +13862,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1010xxxxx110xxxxxxxxxxxxx
                                                          ld3w.  */
-                                                      return 1571;
+                                                      return 1626;
                                                     }
                                                   else
                                                     {
@@ -10108,7 +13870,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1110xxxxx110xxxxxxxxxxxxx
                                                          ld3d.  */
-                                                      return 1567;
+                                                      return 1622;
                                                     }
                                                 }
                                             }
@@ -10122,7 +13884,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1000xxxxx111xxxxxxxxxxxxx
                                                          ldnt1w.  */
-                                                      return 1680;
+                                                      return 1735;
                                                     }
                                                   else
                                                     {
@@ -10130,7 +13892,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1100xxxxx111xxxxxxxxxxxxx
                                                          ldnt1d.  */
-                                                      return 1676;
+                                                      return 1731;
                                                     }
                                                 }
                                               else
@@ -10141,7 +13903,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1010xxxxx111xxxxxxxxxxxxx
                                                          ld3w.  */
-                                                      return 1572;
+                                                      return 1627;
                                                     }
                                                   else
                                                     {
@@ -10149,7 +13911,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1110xxxxx111xxxxxxxxxxxxx
                                                          ld3d.  */
-                                                      return 1568;
+                                                      return 1623;
                                                     }
                                                 }
                                             }
@@ -10178,7 +13940,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000000100xxxxxxxxxxxxx
                                                                      fadd.  */
-                                                                  return 1338;
+                                                                  return 1393;
                                                                 }
                                                               else
                                                                 {
@@ -10186,7 +13948,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000100100xxxxxxxxxxxxx
                                                                      fmaxnm.  */
-                                                                  return 1385;
+                                                                  return 1440;
                                                                 }
                                                             }
                                                           else
@@ -10197,7 +13959,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000010100xxxxxxxxxxxxx
                                                                      fmul.  */
-                                                                  return 1405;
+                                                                  return 1460;
                                                                 }
                                                               else
                                                                 {
@@ -10205,7 +13967,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000110100xxxxxxxxxxxxx
                                                                      fmax.  */
-                                                                  return 1383;
+                                                                  return 1438;
                                                                 }
                                                             }
                                                         }
@@ -10219,7 +13981,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000001100xxxxxxxxxxxxx
                                                                      fsub.  */
-                                                                  return 1431;
+                                                                  return 1486;
                                                                 }
                                                               else
                                                                 {
@@ -10227,7 +13989,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000101100xxxxxxxxxxxxx
                                                                      fminnm.  */
-                                                                  return 1391;
+                                                                  return 1446;
                                                                 }
                                                             }
                                                           else
@@ -10238,7 +14000,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000011100xxxxxxxxxxxxx
                                                                      fsubr.  */
-                                                                  return 1433;
+                                                                  return 1488;
                                                                 }
                                                               else
                                                                 {
@@ -10246,7 +14008,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000111100xxxxxxxxxxxxx
                                                                      fmin.  */
-                                                                  return 1389;
+                                                                  return 1444;
                                                                 }
                                                             }
                                                         }
@@ -10257,7 +14019,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          011001x1xx010xxx100xxxxxxxxxxxxx
                                                          ftmad.  */
-                                                      return 1435;
+                                                      return 1490;
                                                     }
                                                 }
                                               else
@@ -10274,7 +14036,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001000100xxxxxxxxxxxxx
                                                                      fabd.  */
-                                                                  return 1333;
+                                                                  return 1388;
                                                                 }
                                                               else
                                                                 {
@@ -10282,7 +14044,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011000100xxxxxxxxxxxxx
                                                                      fadd.  */
-                                                                  return 1339;
+                                                                  return 1394;
                                                                 }
                                                             }
                                                           else
@@ -10293,7 +14055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001100100xxxxxxxxxxxxx
                                                                      fdivr.  */
-                                                                  return 1379;
+                                                                  return 1434;
                                                                 }
                                                               else
                                                                 {
@@ -10301,7 +14063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011100100xxxxxxxxxxxxx
                                                                      fmaxnm.  */
-                                                                  return 1386;
+                                                                  return 1441;
                                                                 }
                                                             }
                                                         }
@@ -10315,7 +14077,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001010100xxxxxxxxxxxxx
                                                                      fmulx.  */
-                                                                  return 1410;
+                                                                  return 1465;
                                                                 }
                                                               else
                                                                 {
@@ -10323,7 +14085,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011010100xxxxxxxxxxxxx
                                                                      fmul.  */
-                                                                  return 1406;
+                                                                  return 1461;
                                                                 }
                                                             }
                                                           else
@@ -10332,7 +14094,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x1xx0x1110100xxxxxxxxxxxxx
                                                                  fmax.  */
-                                                              return 1384;
+                                                              return 1439;
                                                             }
                                                         }
                                                     }
@@ -10348,7 +14110,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001001100xxxxxxxxxxxxx
                                                                      fscale.  */
-                                                                  return 1428;
+                                                                  return 1483;
                                                                 }
                                                               else
                                                                 {
@@ -10356,7 +14118,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011001100xxxxxxxxxxxxx
                                                                      fsub.  */
-                                                                  return 1432;
+                                                                  return 1487;
                                                                 }
                                                             }
                                                           else
@@ -10367,7 +14129,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001101100xxxxxxxxxxxxx
                                                                      fdiv.  */
-                                                                  return 1378;
+                                                                  return 1433;
                                                                 }
                                                               else
                                                                 {
@@ -10375,7 +14137,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011101100xxxxxxxxxxxxx
                                                                      fminnm.  */
-                                                                  return 1392;
+                                                                  return 1447;
                                                                 }
                                                             }
                                                         }
@@ -10387,7 +14149,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x1xx0x1011100xxxxxxxxxxxxx
                                                                  fsubr.  */
-                                                              return 1434;
+                                                              return 1489;
                                                             }
                                                           else
                                                             {
@@ -10395,7 +14157,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  011001x1xx0x1111100xxxxxxxxxxxxx
                                                                  fmin.  */
-                                                              return 1390;
+                                                              return 1445;
                                                             }
                                                         }
                                                     }
@@ -10409,7 +14171,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011001x1xx0xxxxx110xxxxxxxx0xxxx
                                                      fcmuo.  */
-                                                  return 1356;
+                                                  return 1411;
                                                 }
                                               else
                                                 {
@@ -10417,7 +14179,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      011001x1xx0xxxxx110xxxxxxxx1xxxx
                                                      facge.  */
-                                                  return 1335;
+                                                  return 1390;
                                                 }
                                             }
                                         }
@@ -10431,7 +14193,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1000xxxxx1x0xxxxxxxxxxxxx
                                                      st1w.  */
-                                                  return 1854;
+                                                  return 1909;
                                                 }
                                               else
                                                 {
@@ -10439,7 +14201,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1100xxxxx1x0xxxxxxxxxxxxx
                                                      st1d.  */
-                                                  return 1833;
+                                                  return 1888;
                                                 }
                                             }
                                           else
@@ -10448,7 +14210,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  111001x1x10xxxxx1x0xxxxxxxxxxxxx
                                                  st1w.  */
-                                              return 1859;
+                                              return 1914;
                                             }
                                         }
                                     }
@@ -10460,11 +14222,11 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 19) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 17) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 18) & 0x1) == 0)
                                                             {
                                                               if (((word >> 20) & 0x1) == 0)
                                                                 {
@@ -10472,7 +14234,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000000101xxxxxxxxxxxxx
                                                                      frintn.  */
-                                                                  return 1422;
+                                                                  return 1477;
                                                                 }
                                                               else
                                                                 {
@@ -10480,43 +14242,10 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx010000101xxxxxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 1768;
+                                                                  return 1823;
                                                                 }
                                                             }
                                                           else
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 22) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         011001x1x0001000101xxxxxxxxxxxxx
-                                                                         fcvt.  */
-                                                                      return 1358;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         011001x1x1001000101xxxxxxxxxxxxx
-                                                                         fcvt.  */
-                                                                      return 1360;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx011000101xxxxxxxxxxxxx
-                                                                     fcvtzs.  */
-                                                                  return 1368;
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               if (((word >> 20) & 0x1) == 0)
                                                                 {
@@ -10524,7 +14253,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000100101xxxxxxxxxxxxx
                                                                      frinta.  */
-                                                                  return 1419;
+                                                                  return 1474;
                                                                 }
                                                               else
                                                                 {
@@ -10534,7 +14263,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1x0010100101xxxxxxxxxxxxx
                                                                          scvtf.  */
-                                                                      return 1767;
+                                                                      return 1822;
                                                                     }
                                                                   else
                                                                     {
@@ -10544,7 +14273,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x101010100101xxxxxxxxxxxxx
                                                                              scvtf.  */
-                                                                          return 1766;
+                                                                          return 1821;
                                                                         }
                                                                       else
                                                                         {
@@ -10552,59 +14281,15 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x111010100101xxxxxxxxxxxxx
                                                                              scvtf.  */
-                                                                          return 1770;
-                                                                        }
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx001100101xxxxxxxxxxxxx
-                                                                     frecpx.  */
-                                                                  return 1418;
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 22) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         011001x1x0011100101xxxxxxxxxxxxx
-                                                                         fcvtzs.  */
-                                                                      return 1367;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      if (((word >> 23) & 0x1) == 0)
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             011001x101011100101xxxxxxxxxxxxx
-                                                                             fcvtzs.  */
-                                                                          return 1365;
-                                                                        }
-                                                                      else
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             011001x111011100101xxxxxxxxxxxxx
-                                                                             fcvtzs.  */
-                                                                          return 1369;
+                                                                          return 1825;
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      else
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 18) & 0x1) == 0)
                                                             {
                                                               if (((word >> 20) & 0x1) == 0)
                                                                 {
@@ -10612,7 +14297,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000010101xxxxxxxxxxxxx
                                                                      frintm.  */
-                                                                  return 1421;
+                                                                  return 1476;
                                                                 }
                                                               else
                                                                 {
@@ -10620,7 +14305,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx010010101xxxxxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 1765;
+                                                                  return 1820;
                                                                 }
                                                             }
                                                           else
@@ -10629,69 +14314,179 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1xx001010101xxxxxxxxxxxxx
-                                                                     fcvt.  */
-                                                                  return 1362;
+                                                                     011001x1xx000110101xxxxxxxxxxxxx
+                                                                     frintx.  */
+                                                                  return 1479;
                                                                 }
                                                               else
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     011001x1xx011010101xxxxxxxxxxxxx
-                                                                     fcvtzs.  */
-                                                                  return 1364;
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x10x010110101xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 1824;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x11x010110101xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 1826;
+                                                                    }
                                                                 }
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 19) & 0x1) == 0)
+                                                          if (((word >> 17) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 20) & 0x1) == 0)
+                                                              if (((word >> 18) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x0001000101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 1413;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x1001000101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 1415;
+                                                                    }
+                                                                }
+                                                              else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x1xx000110101xxxxxxxxxxxxx
-                                                                     frintx.  */
-                                                                  return 1424;
+                                                                     011001x1xx001100101xxxxxxxxxxxxx
+                                                                     frecpx.  */
+                                                                  return 1473;
                                                                 }
-                                                              else
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
                                                                   if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x10x010110101xxxxxxxxxxxxx
-                                                                         scvtf.  */
-                                                                      return 1769;
+                                                                         011001x100001x10101xxxxxxxxxxxxx
+                                                                         fcvtx.  */
+                                                                      return 2083;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         011001x11x010110101xxxxxxxxxxxxx
-                                                                         scvtf.  */
-                                                                      return 1771;
+                                                                         011001x110001x10101xxxxxxxxxxxxx
+                                                                         bfcvt.  */
+                                                                      return 2433;
                                                                     }
                                                                 }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1x1001x10101xxxxxxxxxxxxx
+                                                                     fcvt.  */
+                                                                  return 1417;
+                                                                }
                                                             }
-                                                          else
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
                                                               if (((word >> 23) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x10x0x1110101xxxxxxxxxxxxx
-                                                                     fcvtzs.  */
-                                                                  return 1366;
+                                                                     011001x100011xx0101xxxxxxxxxxxxx
+                                                                     flogb.  */
+                                                                  return 2085;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     011001x11x0x1110101xxxxxxxxxxxxx
+                                                                     011001x110011xx0101xxxxxxxxxxxxx
                                                                      fcvtzs.  */
-                                                                  return 1370;
+                                                                  return 1422;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 17) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x1011000101xxxxxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 1423;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x101011100101xxxxxxxxxxxxx
+                                                                             fcvtzs.  */
+                                                                          return 1420;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x111011100101xxxxxxxxxxxxx
+                                                                             fcvtzs.  */
+                                                                          return 1424;
+                                                                        }
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 18) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         011001x1x1011010101xxxxxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 1419;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      if (((word >> 23) & 0x1) == 0)
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x101011110101xxxxxxxxxxxxx
+                                                                             fcvtzs.  */
+                                                                          return 1421;
+                                                                        }
+                                                                      else
+                                                                        {
+                                                                          /* 33222222222211111111110000000000
+                                                                             10987654321098765432109876543210
+                                                                             011001x111011110101xxxxxxxxxxxxx
+                                                                             fcvtzs.  */
+                                                                          return 1425;
+                                                                        }
+                                                                    }
                                                                 }
                                                             }
                                                         }
@@ -10711,7 +14506,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000001101xxxxxxxxxxxxx
                                                                      frintp.  */
-                                                                  return 1423;
+                                                                  return 1478;
                                                                 }
                                                               else
                                                                 {
@@ -10719,7 +14514,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx010001101xxxxxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 1920;
+                                                                  return 1975;
                                                                 }
                                                             }
                                                           else
@@ -10732,7 +14527,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1x0001001101xxxxxxxxxxxxx
                                                                          fcvt.  */
-                                                                      return 1359;
+                                                                      return 1414;
                                                                     }
                                                                   else
                                                                     {
@@ -10740,7 +14535,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1x1001001101xxxxxxxxxxxxx
                                                                          fcvt.  */
-                                                                      return 1361;
+                                                                      return 1416;
                                                                     }
                                                                 }
                                                               else
@@ -10749,7 +14544,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011001101xxxxxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 1375;
+                                                                  return 1430;
                                                                 }
                                                             }
                                                         }
@@ -10763,7 +14558,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1x00x0101101xxxxxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 1919;
+                                                                  return 1974;
                                                                 }
                                                               else
                                                                 {
@@ -10773,7 +14568,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1010x0101101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1918;
+                                                                      return 1973;
                                                                     }
                                                                   else
                                                                     {
@@ -10781,7 +14576,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1110x0101101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1922;
+                                                                      return 1977;
                                                                     }
                                                                 }
                                                             }
@@ -10793,7 +14588,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001101101xxxxxxxxxxxxx
                                                                      fsqrt.  */
-                                                                  return 1429;
+                                                                  return 1484;
                                                                 }
                                                               else
                                                                 {
@@ -10803,7 +14598,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x1x0011101101xxxxxxxxxxxxx
                                                                          fcvtzu.  */
-                                                                      return 1374;
+                                                                      return 1429;
                                                                     }
                                                                   else
                                                                     {
@@ -10813,7 +14608,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x101011101101xxxxxxxxxxxxx
                                                                              fcvtzu.  */
-                                                                          return 1372;
+                                                                          return 1427;
                                                                         }
                                                                       else
                                                                         {
@@ -10821,7 +14616,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              011001x111011101101xxxxxxxxxxxxx
                                                                              fcvtzu.  */
-                                                                          return 1376;
+                                                                          return 1431;
                                                                         }
                                                                     }
                                                                 }
@@ -10840,7 +14635,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000011101xxxxxxxxxxxxx
                                                                      frintz.  */
-                                                                  return 1425;
+                                                                  return 1480;
                                                                 }
                                                               else
                                                                 {
@@ -10848,7 +14643,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx010011101xxxxxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 1917;
+                                                                  return 1972;
                                                                 }
                                                             }
                                                           else
@@ -10859,7 +14654,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx001011101xxxxxxxxxxxxx
                                                                      fcvt.  */
-                                                                  return 1363;
+                                                                  return 1418;
                                                                 }
                                                               else
                                                                 {
@@ -10867,7 +14662,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx011011101xxxxxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 1371;
+                                                                  return 1426;
                                                                 }
                                                             }
                                                         }
@@ -10881,7 +14676,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x1xx000111101xxxxxxxxxxxxx
                                                                      frinti.  */
-                                                                  return 1420;
+                                                                  return 1475;
                                                                 }
                                                               else
                                                                 {
@@ -10891,7 +14686,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x10x010111101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1921;
+                                                                      return 1976;
                                                                     }
                                                                   else
                                                                     {
@@ -10899,7 +14694,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          011001x11x010111101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1923;
+                                                                      return 1978;
                                                                     }
                                                                 }
                                                             }
@@ -10911,7 +14706,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x10x0x1111101xxxxxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 1373;
+                                                                  return 1428;
                                                                 }
                                                               else
                                                                 {
@@ -10919,7 +14714,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      011001x11x0x1111101xxxxxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 1377;
+                                                                  return 1432;
                                                                 }
                                                             }
                                                         }
@@ -10936,7 +14731,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1000xxxxx101xxxxxxxxxxxxx
                                                          st1w.  */
-                                                      return 1855;
+                                                      return 1910;
                                                     }
                                                   else
                                                     {
@@ -10944,7 +14739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1100xxxxx101xxxxxxxxxxxxx
                                                          st1d.  */
-                                                      return 1834;
+                                                      return 1889;
                                                     }
                                                 }
                                               else
@@ -10955,7 +14750,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1010xxxxx101xxxxxxxxxxxxx
                                                          st1w.  */
-                                                      return 1862;
+                                                      return 1917;
                                                     }
                                                   else
                                                     {
@@ -10963,7 +14758,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1110xxxxx101xxxxxxxxxxxxx
                                                          st1d.  */
-                                                      return 1838;
+                                                      return 1893;
                                                     }
                                                 }
                                             }
@@ -10976,7 +14771,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx0xxxxx111xxxxxxxxxxxxx
                                                  facgt.  */
-                                              return 1336;
+                                              return 1391;
                                             }
                                           else
                                             {
@@ -10986,7 +14781,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1xx00xxxx111xxxxxxxxxxxxx
                                                      st1w.  */
-                                                  return 1863;
+                                                  return 1918;
                                                 }
                                               else
                                                 {
@@ -10998,7 +14793,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x10001xxxx111xxxxxxxxxxxxx
                                                              stnt1w.  */
-                                                          return 1897;
+                                                          return 1952;
                                                         }
                                                       else
                                                         {
@@ -11006,7 +14801,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x11001xxxx111xxxxxxxxxxxxx
                                                              stnt1d.  */
-                                                          return 1893;
+                                                          return 1948;
                                                         }
                                                     }
                                                   else
@@ -11017,7 +14812,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x10101xxxx111xxxxxxxxxxxxx
                                                              st3w.  */
-                                                          return 1881;
+                                                          return 1936;
                                                         }
                                                       else
                                                         {
@@ -11025,7 +14820,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x11101xxxx111xxxxxxxxxxxxx
                                                              st3d.  */
-                                                          return 1877;
+                                                          return 1932;
                                                         }
                                                     }
                                                 }
@@ -11056,7 +14851,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10000010xxxxxxxxxxxxxx
                                                                  cntp.  */
-                                                              return 1305;
+                                                              return 1360;
                                                             }
                                                           else
                                                             {
@@ -11070,7 +14865,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              001001x1xx10100010x000xxxxxxxxxx
                                                                              sqincp.  */
-                                                                          return 1812;
+                                                                          return 1867;
                                                                         }
                                                                       else
                                                                         {
@@ -11078,7 +14873,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                              10987654321098765432109876543210
                                                                              001001x1xx10100010x100xxxxxxxxxx
                                                                              wrffr.  */
-                                                                          return 1985;
+                                                                          return 2040;
                                                                         }
                                                                     }
                                                                   else
@@ -11087,7 +14882,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          001001x1xx10100010xx10xxxxxxxxxx
                                                                          sqincp.  */
-                                                                      return 1814;
+                                                                      return 1869;
                                                                     }
                                                                 }
                                                               else
@@ -11096,7 +14891,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10100010xxx1xxxxxxxxxx
                                                                      sqincp.  */
-                                                                  return 1813;
+                                                                  return 1868;
                                                                 }
                                                             }
                                                         }
@@ -11110,7 +14905,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10x10010x00xxxxxxxxxxx
                                                                      incp.  */
-                                                                  return 1443;
+                                                                  return 1498;
                                                                 }
                                                               else
                                                                 {
@@ -11118,7 +14913,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10x10010x10xxxxxxxxxxx
                                                                      setffr.  */
-                                                                  return 1779;
+                                                                  return 1834;
                                                                 }
                                                             }
                                                           else
@@ -11127,7 +14922,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10x10010xx1xxxxxxxxxxx
                                                                  incp.  */
-                                                              return 1444;
+                                                              return 1499;
                                                             }
                                                         }
                                                     }
@@ -11141,7 +14936,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10xx1010xx00xxxxxxxxxx
                                                                  sqdecp.  */
-                                                              return 1798;
+                                                              return 1853;
                                                             }
                                                           else
                                                             {
@@ -11149,7 +14944,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10xx1010xx10xxxxxxxxxx
                                                                  sqdecp.  */
-                                                              return 1800;
+                                                              return 1855;
                                                             }
                                                         }
                                                       else
@@ -11158,7 +14953,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx10xx1010xxx1xxxxxxxxxx
                                                              sqdecp.  */
-                                                          return 1799;
+                                                          return 1854;
                                                         }
                                                     }
                                                 }
@@ -11176,7 +14971,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10x00110xx00xxxxxxxxxx
                                                                      uqincp.  */
-                                                                  return 1960;
+                                                                  return 2015;
                                                                 }
                                                               else
                                                                 {
@@ -11184,7 +14979,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10x10110xx00xxxxxxxxxx
                                                                      decp.  */
-                                                                  return 1318;
+                                                                  return 1373;
                                                                 }
                                                             }
                                                           else
@@ -11193,7 +14988,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10xx1110xx00xxxxxxxxxx
                                                                  uqdecp.  */
-                                                              return 1946;
+                                                              return 2001;
                                                             }
                                                         }
                                                       else
@@ -11206,7 +15001,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10x00110xx10xxxxxxxxxx
                                                                      uqincp.  */
-                                                                  return 1961;
+                                                                  return 2016;
                                                                 }
                                                               else
                                                                 {
@@ -11214,7 +15009,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      001001x1xx10x10110xx10xxxxxxxxxx
                                                                      decp.  */
-                                                                  return 1319;
+                                                                  return 1374;
                                                                 }
                                                             }
                                                           else
@@ -11223,7 +15018,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10xx1110xx10xxxxxxxxxx
                                                                  uqdecp.  */
-                                                              return 1947;
+                                                              return 2002;
                                                             }
                                                         }
                                                     }
@@ -11235,7 +15030,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx10xx0110xxx1xxxxxxxxxx
                                                              uqincp.  */
-                                                          return 1962;
+                                                          return 2017;
                                                         }
                                                       else
                                                         {
@@ -11243,7 +15038,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx10xx1110xxx1xxxxxxxxxx
                                                              uqdecp.  */
-                                                          return 1948;
+                                                          return 2003;
                                                         }
                                                     }
                                                 }
@@ -11258,7 +15053,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x10010xxxx10xxxxxxxxxxxxxx
                                                          ld1sh.  */
-                                                      return 1536;
+                                                      return 1591;
                                                     }
                                                   else
                                                     {
@@ -11266,7 +15061,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x11010xxxx10xxxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1523;
+                                                      return 1578;
                                                     }
                                                 }
                                               else
@@ -11277,7 +15072,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x10110xxxx10xxxxxxxxxxxxxx
                                                          ld1w.  */
-                                                      return 1555;
+                                                      return 1610;
                                                     }
                                                   else
                                                     {
@@ -11285,7 +15080,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x11110xxxx10xxxxxxxxxxxxxx
                                                          ld1d.  */
-                                                      return 1475;
+                                                      return 1530;
                                                     }
                                                 }
                                             }
@@ -11300,7 +15095,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x10011xxxx10xxxxxxxxxxxxxx
                                                      ldnf1sh.  */
-                                                  return 1669;
+                                                  return 1724;
                                                 }
                                               else
                                                 {
@@ -11308,7 +15103,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x11011xxxx10xxxxxxxxxxxxxx
                                                      ldnf1sb.  */
-                                                  return 1666;
+                                                  return 1721;
                                                 }
                                             }
                                           else
@@ -11319,7 +15114,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x10111xxxx10xxxxxxxxxxxxxx
                                                      ldnf1w.  */
-                                                  return 1672;
+                                                  return 1727;
                                                 }
                                               else
                                                 {
@@ -11327,7 +15122,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x01001x11111xxxx10xxxxxxxxxxxxxx
                                                      ldnf1d.  */
-                                                  return 1661;
+                                                  return 1716;
                                                 }
                                             }
                                         }
@@ -11350,7 +15145,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10000011xxxxxxxxxxxxxx
                                                                  add.  */
-                                                              return 1232;
+                                                              return 1287;
                                                             }
                                                           else
                                                             {
@@ -11358,7 +15153,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx11000011xxxxxxxxxxxxxx
                                                                  mul.  */
-                                                              return 1701;
+                                                              return 1756;
                                                             }
                                                         }
                                                       else
@@ -11369,7 +15164,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10100011xxxxxxxxxxxxxx
                                                                  smax.  */
-                                                              return 1780;
+                                                              return 1835;
                                                             }
                                                           else
                                                             {
@@ -11377,7 +15172,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx11100011xxxxxxxxxxxxxx
                                                                  dup.  */
-                                                              return 1324;
+                                                              return 1379;
                                                             }
                                                         }
                                                     }
@@ -11387,7 +15182,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1xx1xx10011xxxxxxxxxxxxxx
                                                          sqadd.  */
-                                                      return 1789;
+                                                      return 1844;
                                                     }
                                                 }
                                               else
@@ -11398,7 +15193,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1xx1xx01011xxxxxxxxxxxxxx
                                                          smin.  */
-                                                      return 1783;
+                                                      return 1838;
                                                     }
                                                   else
                                                     {
@@ -11406,7 +15201,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1xx1xx11011xxxxxxxxxxxxxx
                                                          sqsub.  */
-                                                      return 1819;
+                                                      return 1874;
                                                     }
                                                 }
                                             }
@@ -11422,7 +15217,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx1x000111xxxxxxxxxxxxxx
                                                              sub.  */
-                                                          return 1901;
+                                                          return 1956;
                                                         }
                                                       else
                                                         {
@@ -11432,7 +15227,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx10100111xxxxxxxxxxxxxx
                                                                  umax.  */
-                                                              return 1929;
+                                                              return 1984;
                                                             }
                                                           else
                                                             {
@@ -11440,7 +15235,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  001001x1xx11100111xxxxxxxxxxxxxx
                                                                  fdup.  */
-                                                              return 1380;
+                                                              return 1435;
                                                             }
                                                         }
                                                     }
@@ -11450,7 +15245,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1xx1xx10111xxxxxxxxxxxxxx
                                                          uqadd.  */
-                                                      return 1937;
+                                                      return 1992;
                                                     }
                                                 }
                                               else
@@ -11463,7 +15258,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx1x001111xxxxxxxxxxxxxx
                                                              subr.  */
-                                                          return 1903;
+                                                          return 1958;
                                                         }
                                                       else
                                                         {
@@ -11471,7 +15266,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              001001x1xx1x101111xxxxxxxxxxxxxx
                                                              umin.  */
-                                                          return 1932;
+                                                          return 1987;
                                                         }
                                                     }
                                                   else
@@ -11480,7 +15275,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          001001x1xx1xx11111xxxxxxxxxxxxxx
                                                          uqsub.  */
-                                                      return 1967;
+                                                      return 2022;
                                                     }
                                                 }
                                             }
@@ -11497,7 +15292,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1001xxxxx110xxxxxxxxxxxxx
                                                          ld2w.  */
-                                                      return 1563;
+                                                      return 1618;
                                                     }
                                                   else
                                                     {
@@ -11505,7 +15300,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1101xxxxx110xxxxxxxxxxxxx
                                                          ld2d.  */
-                                                      return 1559;
+                                                      return 1614;
                                                     }
                                                 }
                                               else
@@ -11516,7 +15311,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1011xxxxx110xxxxxxxxxxxxx
                                                          ld4w.  */
-                                                      return 1579;
+                                                      return 1634;
                                                     }
                                                   else
                                                     {
@@ -11524,7 +15319,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1111xxxxx110xxxxxxxxxxxxx
                                                          ld4d.  */
-                                                      return 1575;
+                                                      return 1630;
                                                     }
                                                 }
                                             }
@@ -11538,7 +15333,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1001xxxxx111xxxxxxxxxxxxx
                                                          ld2w.  */
-                                                      return 1564;
+                                                      return 1619;
                                                     }
                                                   else
                                                     {
@@ -11546,7 +15341,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1101xxxxx111xxxxxxxxxxxxx
                                                          ld2d.  */
-                                                      return 1560;
+                                                      return 1615;
                                                     }
                                                 }
                                               else
@@ -11557,7 +15352,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1011xxxxx111xxxxxxxxxxxxx
                                                          ld4w.  */
-                                                      return 1580;
+                                                      return 1635;
                                                     }
                                                   else
                                                     {
@@ -11565,7 +15360,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          101001x1111xxxxx111xxxxxxxxxxxxx
                                                          ld4d.  */
-                                                      return 1576;
+                                                      return 1631;
                                                     }
                                                 }
                                             }
@@ -11584,7 +15379,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx100xxxxxxxxxxxxx
                                                  fmad.  */
-                                              return 1382;
+                                              return 1437;
                                             }
                                           else
                                             {
@@ -11592,7 +15387,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx110xxxxxxxxxxxxx
                                                  fnmad.  */
-                                              return 1412;
+                                              return 1467;
                                             }
                                         }
                                       else
@@ -11605,7 +15400,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1001xxxxx1x0xxxxxxxxxxxxx
                                                      st1w.  */
-                                                  return 1856;
+                                                  return 1911;
                                                 }
                                               else
                                                 {
@@ -11613,7 +15408,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1101xxxxx1x0xxxxxxxxxxxxx
                                                      st1d.  */
-                                                  return 1835;
+                                                  return 1890;
                                                 }
                                             }
                                           else
@@ -11622,7 +15417,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  111001x1x11xxxxx1x0xxxxxxxxxxxxx
                                                  st1w.  */
-                                              return 1861;
+                                              return 1916;
                                             }
                                         }
                                     }
@@ -11636,7 +15431,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx101xxxxxxxxxxxxx
                                                  fmsb.  */
-                                              return 1403;
+                                              return 1458;
                                             }
                                           else
                                             {
@@ -11648,7 +15443,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1001xxxxx101xxxxxxxxxxxxx
                                                          st1w.  */
-                                                      return 1857;
+                                                      return 1912;
                                                     }
                                                   else
                                                     {
@@ -11656,7 +15451,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x1101xxxxx101xxxxxxxxxxxxx
                                                          st1d.  */
-                                                      return 1836;
+                                                      return 1891;
                                                     }
                                                 }
                                               else
@@ -11665,7 +15460,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      111001x1x11xxxxx101xxxxxxxxxxxxx
                                                      st1w.  */
-                                                  return 1864;
+                                                  return 1919;
                                                 }
                                             }
                                         }
@@ -11677,7 +15472,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  011001x1xx1xxxxx111xxxxxxxxxxxxx
                                                  fnmsb.  */
-                                              return 1415;
+                                              return 1470;
                                             }
                                           else
                                             {
@@ -11689,7 +15484,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x10x10xxxx111xxxxxxxxxxxxx
                                                          st1w.  */
-                                                      return 1865;
+                                                      return 1920;
                                                     }
                                                   else
                                                     {
@@ -11697,7 +15492,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          111001x11x10xxxx111xxxxxxxxxxxxx
                                                          st1d.  */
-                                                      return 1839;
+                                                      return 1894;
                                                     }
                                                 }
                                               else
@@ -11710,7 +15505,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x10011xxxx111xxxxxxxxxxxxx
                                                              st2w.  */
-                                                          return 1873;
+                                                          return 1928;
                                                         }
                                                       else
                                                         {
@@ -11718,7 +15513,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x11011xxxx111xxxxxxxxxxxxx
                                                              st2d.  */
-                                                          return 1869;
+                                                          return 1924;
                                                         }
                                                     }
                                                   else
@@ -11729,7 +15524,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x10111xxxx111xxxxxxxxxxxxx
                                                              st4w.  */
-                                                          return 1889;
+                                                          return 1944;
                                                         }
                                                       else
                                                         {
@@ -11737,7 +15532,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              111001x11111xxxx111xxxxxxxxxxxxx
                                                              st4d.  */
-                                                          return 1885;
+                                                          return 1940;
                                                         }
                                                     }
                                                 }
@@ -11762,7 +15557,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              000101xxxxxxxxxxxxxxxxxxxxxxxxxx
                              b.  */
-                          return 630;
+                          return 636;
                         }
                       else
                         {
@@ -11770,7 +15565,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              100101xxxxxxxxxxxxxxxxxxxxxxxxxx
                              bl.  */
-                          return 631;
+                          return 637;
                         }
                     }
                   else
@@ -11787,7 +15582,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          01010100xxxxxxxxxxxxxxxxxxx0xxxx
                                          b.c.  */
-                                      return 651;
+                                      return 657;
                                     }
                                   else
                                     {
@@ -11801,15 +15596,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx0xxxxxxxxxxxxxxxx0xx00
                                                      hlt.  */
-                                                  return 742;
+                                                  return 753;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     11010100xx1xxxxxxxxxxxxxxxx0xx00
-                                                     brk.  */
-                                                  return 741;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         11010100x01xxxxxxxxxxxxxxxx0xx00
+                                                         brk.  */
+                                                      return 752;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         11010100x11xxxxxxxxxxxxxxxx0xx00
+                                                         tcancel.  */
+                                                      return 1196;
+                                                    }
                                                 }
                                             }
                                           else
@@ -11820,7 +15626,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx0xxxxxxxxxxxxxxxx0xx10
                                                      hvc.  */
-                                                  return 739;
+                                                  return 750;
                                                 }
                                               else
                                                 {
@@ -11828,7 +15634,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx1xxxxxxxxxxxxxxxx0xx10
                                                      dcps2.  */
-                                                  return 744;
+                                                  return 756;
                                                 }
                                             }
                                         }
@@ -11842,7 +15648,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx0xxxxxxxxxxxxxxxx0xx01
                                                      svc.  */
-                                                  return 738;
+                                                  return 749;
                                                 }
                                               else
                                                 {
@@ -11850,7 +15656,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx1xxxxxxxxxxxxxxxx0xx01
                                                      dcps1.  */
-                                                  return 743;
+                                                  return 755;
                                                 }
                                             }
                                           else
@@ -11861,7 +15667,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx0xxxxxxxxxxxxxxxx0xx11
                                                      smc.  */
-                                                  return 740;
+                                                  return 751;
                                                 }
                                               else
                                                 {
@@ -11869,7 +15675,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      11010100xx1xxxxxxxxxxxxxxxx0xx11
                                                      dcps3.  */
-                                                  return 745;
+                                                  return 757;
                                                 }
                                             }
                                         }
@@ -11887,7 +15693,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1010110000xxxxxxxxxxxxxxxx0xxxx
                                                  br.  */
-                                              return 632;
+                                              return 638;
                                             }
                                           else
                                             {
@@ -11895,7 +15701,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1010110100xxxxxxxxxxxxxxxx0xxxx
                                                  eret.  */
-                                              return 635;
+                                              return 641;
                                             }
                                         }
                                       else
@@ -11904,7 +15710,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x1010110x10xxxxxxxxxxxxxxxx0xxxx
                                              ret.  */
-                                          return 634;
+                                          return 640;
                                         }
                                     }
                                   else
@@ -11915,7 +15721,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x10101100x1xxxxxxxxxxxxxxxx0xxxx
                                              blr.  */
-                                          return 633;
+                                          return 639;
                                         }
                                       else
                                         {
@@ -11923,7 +15729,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x10101101x1xxxxxxxxxxxxxxxx0xxxx
                                              drps.  */
-                                          return 636;
+                                          return 642;
                                         }
                                     }
                                 }
@@ -11942,7 +15748,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x10101x0000xxxxxxxxxx0xxxxx1xxxx
                                                  braaz.  */
-                                              return 641;
+                                              return 647;
                                             }
                                           else
                                             {
@@ -11950,7 +15756,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x10101x0100xxxxxxxxxx0xxxxx1xxxx
                                                  eretaa.  */
-                                              return 647;
+                                              return 653;
                                             }
                                         }
                                       else
@@ -11959,7 +15765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x10101x0x10xxxxxxxxxx0xxxxx1xxxx
                                              retaa.  */
-                                          return 645;
+                                          return 651;
                                         }
                                     }
                                   else
@@ -11968,7 +15774,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x10101x0xx1xxxxxxxxxx0xxxxx1xxxx
                                          blraaz.  */
-                                      return 643;
+                                      return 649;
                                     }
                                 }
                               else
@@ -11983,7 +15789,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x10101x0000xxxxxxxxxx1xxxxx1xxxx
                                                  brabz.  */
-                                              return 642;
+                                              return 648;
                                             }
                                           else
                                             {
@@ -11991,7 +15797,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x10101x0100xxxxxxxxxx1xxxxx1xxxx
                                                  eretab.  */
-                                              return 648;
+                                              return 654;
                                             }
                                         }
                                       else
@@ -12000,7 +15806,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x10101x0x10xxxxxxxxxx1xxxxx1xxxx
                                              retab.  */
-                                          return 646;
+                                          return 652;
                                         }
                                     }
                                   else
@@ -12009,7 +15815,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x10101x0xx1xxxxxxxxxx1xxxxx1xxxx
                                          blrabz.  */
-                                      return 644;
+                                      return 650;
                                     }
                                 }
                             }
@@ -12023,8 +15829,8 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
                                      x1010101xx0xxxxxxxxxxxxxxxxxxxxx
-                                     msr.  */
-                                  return 1157;
+                                     xaflag.  */
+                                  return 811;
                                 }
                               else
                                 {
@@ -12034,7 +15840,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x1010111xx0xxxxxxxxxx0xxxxxxxxxx
                                          braa.  */
-                                      return 637;
+                                      return 643;
                                     }
                                   else
                                     {
@@ -12042,7 +15848,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x1010111xx0xxxxxxxxxx1xxxxxxxxxx
                                          brab.  */
-                                      return 638;
+                                      return 644;
                                     }
                                 }
                             }
@@ -12053,8 +15859,8 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
                                      x1010101xx1xxxxxxxxxxxxxxxxxxxxx
-                                     sysl.  */
-                                  return 1183;
+                                     tstart.  */
+                                  return 1193;
                                 }
                               else
                                 {
@@ -12064,7 +15870,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x1010111xx1xxxxxxxxxx0xxxxxxxxxx
                                          blraa.  */
-                                      return 639;
+                                      return 645;
                                     }
                                   else
                                     {
@@ -12072,7 +15878,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x1010111xx1xxxxxxxxxx1xxxxxxxxxx
                                          blrab.  */
-                                      return 640;
+                                      return 646;
                                     }
                                 }
                             }
@@ -12089,7 +15895,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx110100xxxxxxxxxxxxxxxxxxxxxxxx
                              cbz.  */
-                          return 649;
+                          return 655;
                         }
                       else
                         {
@@ -12097,7 +15903,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx110110xxxxxxxxxxxxxxxxxxxxxxxx
                              tbz.  */
-                          return 1193;
+                          return 1248;
                         }
                     }
                   else
@@ -12108,7 +15914,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx110101xxxxxxxxxxxxxxxxxxxxxxxx
                              cbnz.  */
-                          return 650;
+                          return 656;
                         }
                       else
                         {
@@ -12116,7 +15922,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx110111xxxxxxxxxxxxxxxxxxxxxxxx
                              tbnz.  */
-                          return 1194;
+                          return 1249;
                         }
                     }
                 }
@@ -12140,7 +15946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx00110000xxxxxxxxxxxxxxxxxxxxxx
                                      st4.  */
-                                  return 434;
+                                  return 440;
                                 }
                               else
                                 {
@@ -12148,7 +15954,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx10110000xxxxxxxxxxxxxxxxxxxxxx
                                      stnp.  */
-                                  return 943;
+                                  return 973;
                                 }
                             }
                           else
@@ -12163,7 +15969,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101000xxxxxxx0xxxxxxxxxxxxx
                                              st1.  */
-                                          return 450;
+                                          return 456;
                                         }
                                       else
                                         {
@@ -12171,7 +15977,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101001xxxxxxx0xxxxxxxxxxxxx
                                              st2.  */
-                                          return 452;
+                                          return 458;
                                         }
                                     }
                                   else
@@ -12182,7 +15988,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101000xxxxxxx1xxxxxxxxxxxxx
                                              st3.  */
-                                          return 451;
+                                          return 457;
                                         }
                                       else
                                         {
@@ -12190,7 +15996,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101001xxxxxxx1xxxxxxxxxxxxx
                                              st4.  */
-                                          return 453;
+                                          return 459;
                                         }
                                     }
                                 }
@@ -12200,7 +16006,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx10110100xxxxxxxxxxxxxxxxxxxxxx
                                      stp.  */
-                                  return 947;
+                                  return 977;
                                 }
                             }
                         }
@@ -12216,7 +16022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx001100100xxxxxxxxxxxxxxxxxxxxx
                                          st4.  */
-                                      return 442;
+                                      return 448;
                                     }
                                   else
                                     {
@@ -12226,7 +16032,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101100xxxxxxx0xxxxxxxxxxxxx
                                              st1.  */
-                                          return 462;
+                                          return 468;
                                         }
                                       else
                                         {
@@ -12234,7 +16040,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101100xxxxxxx1xxxxxxxxxxxxx
                                              st3.  */
-                                          return 463;
+                                          return 469;
                                         }
                                     }
                                 }
@@ -12246,7 +16052,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx00110x101xxxxxxx0xxxxxxxxxxxxx
                                          st2.  */
-                                      return 464;
+                                      return 470;
                                     }
                                   else
                                     {
@@ -12254,7 +16060,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx00110x101xxxxxxx1xxxxxxxxxxxxx
                                          st4.  */
-                                      return 465;
+                                      return 471;
                                     }
                                 }
                             }
@@ -12264,7 +16070,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xx10110x10xxxxxxxxxxxxxxxxxxxxxx
                                  stp.  */
-                              return 952;
+                              return 983;
                             }
                         }
                     }
@@ -12280,7 +16086,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx00110001xxxxxxxxxxxxxxxxxxxxxx
                                      ld4.  */
-                                  return 438;
+                                  return 444;
                                 }
                               else
                                 {
@@ -12288,7 +16094,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx10110001xxxxxxxxxxxxxxxxxxxxxx
                                      ldnp.  */
-                                  return 944;
+                                  return 974;
                                 }
                             }
                           else
@@ -12303,7 +16109,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101010xxxxxxx0xxxxxxxxxxxxx
                                              ld1.  */
-                                          return 454;
+                                          return 460;
                                         }
                                       else
                                         {
@@ -12311,7 +16117,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101011xxxxxxx0xxxxxxxxxxxxx
                                              ld2.  */
-                                          return 458;
+                                          return 464;
                                         }
                                     }
                                   else
@@ -12322,7 +16128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101010xxxxxxx1xxxxxxxxxxxxx
                                              ld3.  */
-                                          return 455;
+                                          return 461;
                                         }
                                       else
                                         {
@@ -12330,7 +16136,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101011xxxxxxx1xxxxxxxxxxxxx
                                              ld4.  */
-                                          return 459;
+                                          return 465;
                                         }
                                     }
                                 }
@@ -12340,7 +16146,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx10110101xxxxxxxxxxxxxxxxxxxxxx
                                      ldp.  */
-                                  return 948;
+                                  return 978;
                                 }
                             }
                         }
@@ -12356,7 +16162,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx001100110xxxxxxxxxxxxxxxxxxxxx
                                          ld4.  */
-                                      return 446;
+                                      return 452;
                                     }
                                   else
                                     {
@@ -12366,7 +16172,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101110xxxxxxx0xxxxxxxxxxxxx
                                              ld1.  */
-                                          return 466;
+                                          return 472;
                                         }
                                       else
                                         {
@@ -12374,7 +16180,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx001101110xxxxxxx1xxxxxxxxxxxxx
                                              ld3.  */
-                                          return 467;
+                                          return 473;
                                         }
                                     }
                                 }
@@ -12386,7 +16192,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx00110x111xxxxxxx0xxxxxxxxxxxxx
                                          ld2.  */
-                                      return 470;
+                                      return 476;
                                     }
                                   else
                                     {
@@ -12394,7 +16200,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx00110x111xxxxxxx1xxxxxxxxxxxxx
                                          ld4.  */
-                                      return 471;
+                                      return 477;
                                     }
                                 }
                             }
@@ -12404,7 +16210,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                  10987654321098765432109876543210
                                  xx10110x11xxxxxxxxxxxxxxxxxxxxxx
                                  ldp.  */
-                              return 953;
+                              return 984;
                             }
                         }
                     }
@@ -12419,7 +16225,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xx011100xxxxxxxxxxxxxxxxxxxxxxxx
                              ldr.  */
-                          return 956;
+                          return 988;
                         }
                       else
                         {
@@ -12433,7 +16239,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111100x0xxxxxxxxxx00xxxxxxxxxx
                                          stur.  */
-                                      return 899;
+                                      return 925;
                                     }
                                   else
                                     {
@@ -12441,7 +16247,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111100x1xxxxxxxxxx00xxxxxxxxxx
                                          ldur.  */
-                                      return 900;
+                                      return 926;
                                     }
                                 }
                               else
@@ -12452,7 +16258,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111100x0xxxxxxxxxx10xxxxxxxxxx
                                          str.  */
-                                      return 878;
+                                      return 904;
                                     }
                                   else
                                     {
@@ -12460,7 +16266,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111100x1xxxxxxxxxx10xxxxxxxxxx
                                          ldr.  */
-                                      return 879;
+                                      return 905;
                                     }
                                 }
                             }
@@ -12472,7 +16278,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx111100x0xxxxxxxxxxx1xxxxxxxxxx
                                      str.  */
-                                  return 855;
+                                  return 873;
                                 }
                               else
                                 {
@@ -12480,7 +16286,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx111100x1xxxxxxxxxxx1xxxxxxxxxx
                                      ldr.  */
-                                  return 856;
+                                  return 874;
                                 }
                             }
                         }
@@ -12493,7 +16299,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxx11101x0xxxxxxxxxxxxxxxxxxxxxx
                              str.  */
-                          return 866;
+                          return 892;
                         }
                       else
                         {
@@ -12501,7 +16307,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                              10987654321098765432109876543210
                              xxx11101x1xxxxxxxxxxxxxxxxxxxxxx
                              ldr.  */
-                          return 867;
+                          return 893;
                         }
                     }
                 }
@@ -12528,7 +16334,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0x001110xx0xxxxxxxx000xxxxxxxxxx
                                                  tbl.  */
-                                              return 414;
+                                              return 420;
                                             }
                                           else
                                             {
@@ -12536,7 +16342,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  0x001110xx0xxxxxxxx100xxxxxxxxxx
                                                  tbx.  */
-                                              return 415;
+                                              return 421;
                                             }
                                         }
                                       else
@@ -12549,7 +16355,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      0x001110xx0xxxxxx0x010xxxxxxxxxx
                                                      trn1.  */
-                                                  return 257;
+                                                  return 263;
                                                 }
                                               else
                                                 {
@@ -12557,7 +16363,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      0x001110xx0xxxxxx1x010xxxxxxxxxx
                                                      trn2.  */
-                                                  return 260;
+                                                  return 266;
                                                 }
                                             }
                                           else
@@ -12570,7 +16376,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110xx0xxxxxx00110xxxxxxxxxx
                                                          uzp1.  */
-                                                      return 256;
+                                                      return 262;
                                                     }
                                                   else
                                                     {
@@ -12578,7 +16384,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110xx0xxxxxx10110xxxxxxxxxx
                                                          uzp2.  */
-                                                      return 259;
+                                                      return 265;
                                                     }
                                                 }
                                               else
@@ -12589,7 +16395,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110xx0xxxxxx01110xxxxxxxxxx
                                                          zip1.  */
-                                                      return 258;
+                                                      return 264;
                                                     }
                                                   else
                                                     {
@@ -12597,7 +16403,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110xx0xxxxxx11110xxxxxxxxxx
                                                          zip2.  */
-                                                      return 261;
+                                                      return 267;
                                                     }
                                                 }
                                             }
@@ -12617,7 +16423,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110x00xxxxxxx0001xxxxxxxxxx
                                                          dup.  */
-                                                      return 147;
+                                                      return 149;
                                                     }
                                                   else
                                                     {
@@ -12627,7 +16433,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110010xxxxxxx0001xxxxxxxxxx
                                                              fmaxnm.  */
-                                                          return 286;
+                                                          return 292;
                                                         }
                                                       else
                                                         {
@@ -12635,17 +16441,28 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110110xxxxxxx0001xxxxxxxxxx
                                                              fminnm.  */
-                                                          return 302;
+                                                          return 308;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     0x001110xx0xxxxxxx1001xxxxxxxxxx
-                                                     fcmeq.  */
-                                                  return 294;
+                                                  if (((word >> 15) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxx0x1001xxxxxxxxxx
+                                                         fcmeq.  */
+                                                      return 300;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxx1x1001xxxxxxxxxx
+                                                         smmla.  */
+                                                      return 2424;
+                                                    }
                                                 }
                                             }
                                           else
@@ -12660,7 +16477,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x0011100x0xxxxx0x0101xxxxxxxxxx
                                                              fadd.  */
-                                                          return 290;
+                                                          return 296;
                                                         }
                                                       else
                                                         {
@@ -12668,7 +16485,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x0011101x0xxxxx0x0101xxxxxxxxxx
                                                              fsub.  */
-                                                          return 306;
+                                                          return 312;
                                                         }
                                                     }
                                                   else
@@ -12677,7 +16494,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110xx0xxxxx1x0101xxxxxxxxxx
                                                          sdot.  */
-                                                      return 2004;
+                                                      return 2350;
                                                     }
                                                 }
                                               else
@@ -12688,7 +16505,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x0011100x0xxxxxxx1101xxxxxxxxxx
                                                          fmax.  */
-                                                      return 296;
+                                                      return 302;
                                                     }
                                                   else
                                                     {
@@ -12696,7 +16513,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x0011101x0xxxxxxx1101xxxxxxxxxx
                                                          fmin.  */
-                                                      return 308;
+                                                      return 314;
                                                     }
                                                 }
                                             }
@@ -12713,7 +16530,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110x00xxxxxxx0011xxxxxxxxxx
                                                          dup.  */
-                                                      return 148;
+                                                      return 150;
                                                     }
                                                   else
                                                     {
@@ -12723,7 +16540,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110010xxxxxxx0011xxxxxxxxxx
                                                              fmla.  */
-                                                          return 288;
+                                                          return 294;
                                                         }
                                                       else
                                                         {
@@ -12731,38 +16548,60 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110110xxxxxxx0011xxxxxxxxxx
                                                              fmls.  */
-                                                          return 304;
+                                                          return 310;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     0x001110xx0xxxxxxx1011xxxxxxxxxx
-                                                     smov.  */
-                                                  return 149;
+                                                  if (((word >> 15) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxx0x1011xxxxxxxxxx
+                                                         smov.  */
+                                                      return 151;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxx1x1011xxxxxxxxxx
+                                                         usmmla.  */
+                                                      return 2426;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         0x001110x00xxxxxxx0111xxxxxxxxxx
-                                                         ins.  */
-                                                      return 152;
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110x00xxxxx0x0111xxxxxxxxxx
+                                                             ins.  */
+                                                          return 154;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110x10xxxxx0x0111xxxxxxxxxx
+                                                             fmulx.  */
+                                                          return 298;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         0x001110x10xxxxxxx0111xxxxxxxxxx
-                                                         fmulx.  */
-                                                      return 292;
+                                                         0x001110xx0xxxxx1x0111xxxxxxxxxx
+                                                         usdot.  */
+                                                      return 2427;
                                                     }
                                                 }
                                               else
@@ -12773,7 +16612,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          0x001110x00xxxxxxx1111xxxxxxxxxx
                                                          umov.  */
-                                                      return 150;
+                                                      return 152;
                                                     }
                                                   else
                                                     {
@@ -12783,7 +16622,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110010xxxxxxx1111xxxxxxxxxx
                                                              frecps.  */
-                                                          return 298;
+                                                          return 304;
                                                         }
                                                       else
                                                         {
@@ -12791,7 +16630,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110110xxxxxxx1111xxxxxxxxxx
                                                              frsqrts.  */
-                                                          return 310;
+                                                          return 316;
                                                         }
                                                     }
                                                 }
@@ -12809,7 +16648,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x001110000xxxxxxxxxxxxxxxxxxxxx
                                              eor3.  */
-                                          return 2011;
+                                          return 2357;
                                         }
                                       else
                                         {
@@ -12817,7 +16656,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x001110100xxxxxxxxxxxxxxxxxxxxx
                                              xar.  */
-                                          return 2013;
+                                          return 2359;
                                         }
                                     }
                                   else
@@ -12828,7 +16667,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              1x001110x10xxxxx0xxxxxxxxxxxxxxx
                                              sm3ss1.  */
-                                          return 2015;
+                                          return 2361;
                                         }
                                       else
                                         {
@@ -12842,7 +16681,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          1x001110010xxxxx1xxx00xxxxxxxxxx
                                                          sm3tt1a.  */
-                                                      return 2016;
+                                                      return 2362;
                                                     }
                                                   else
                                                     {
@@ -12850,7 +16689,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          1x001110110xxxxx1xxx00xxxxxxxxxx
                                                          sha512su0.  */
-                                                      return 2009;
+                                                      return 2355;
                                                     }
                                                 }
                                               else
@@ -12859,7 +16698,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x001110x10xxxxx1xxx10xxxxxxxxxx
                                                      sm3tt2a.  */
-                                                  return 2018;
+                                                  return 2364;
                                                 }
                                             }
                                           else
@@ -12872,7 +16711,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          1x001110010xxxxx1xxx01xxxxxxxxxx
                                                          sm3tt1b.  */
-                                                      return 2017;
+                                                      return 2363;
                                                     }
                                                   else
                                                     {
@@ -12880,7 +16719,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          1x001110110xxxxx1xxx01xxxxxxxxxx
                                                          sm4e.  */
-                                                      return 2022;
+                                                      return 2368;
                                                     }
                                                 }
                                               else
@@ -12889,7 +16728,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      1x001110x10xxxxx1xxx11xxxxxxxxxx
                                                      sm3tt2b.  */
-                                                  return 2019;
+                                                  return 2365;
                                                 }
                                             }
                                         }
@@ -12904,7 +16743,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                      10987654321098765432109876543210
                                      xx101110xx0xxxxxxxxxx0xxxxxxxxxx
                                      ext.  */
-                                  return 130;
+                                  return 132;
                                 }
                               else
                                 {
@@ -12916,7 +16755,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx101110x00xxxxx0xxxx1xxxxxxxxxx
                                              ins.  */
-                                          return 154;
+                                          return 156;
                                         }
                                       else
                                         {
@@ -12932,7 +16771,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110010xxxxx0x0001xxxxxxxxxx
                                                              fmaxnmp.  */
-                                                          return 337;
+                                                          return 343;
                                                         }
                                                       else
                                                         {
@@ -12940,7 +16779,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110110xxxxx0x0001xxxxxxxxxx
                                                              fminnmp.  */
-                                                          return 353;
+                                                          return 359;
                                                         }
                                                     }
                                                   else
@@ -12951,7 +16790,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110010xxxxx0x1001xxxxxxxxxx
                                                              fcmge.  */
-                                                          return 343;
+                                                          return 349;
                                                         }
                                                       else
                                                         {
@@ -12959,7 +16798,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110110xxxxx0x1001xxxxxxxxxx
                                                              fcmgt.  */
-                                                          return 357;
+                                                          return 363;
                                                         }
                                                     }
                                                 }
@@ -12973,7 +16812,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110010xxxxx0x0101xxxxxxxxxx
                                                              faddp.  */
-                                                          return 339;
+                                                          return 345;
                                                         }
                                                       else
                                                         {
@@ -12981,7 +16820,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110110xxxxx0x0101xxxxxxxxxx
                                                              fabd.  */
-                                                          return 355;
+                                                          return 361;
                                                         }
                                                     }
                                                   else
@@ -12992,7 +16831,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110010xxxxx0x1101xxxxxxxxxx
                                                              fmaxp.  */
-                                                          return 347;
+                                                          return 353;
                                                         }
                                                       else
                                                         {
@@ -13000,7 +16839,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110110xxxxx0x1101xxxxxxxxxx
                                                              fminp.  */
-                                                          return 361;
+                                                          return 367;
                                                         }
                                                     }
                                                 }
@@ -13015,7 +16854,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110010xxxxx0xx011xxxxxxxxxx
                                                          facge.  */
-                                                      return 345;
+                                                      return 351;
                                                     }
                                                   else
                                                     {
@@ -13023,7 +16862,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110110xxxxx0xx011xxxxxxxxxx
                                                          facgt.  */
-                                                      return 359;
+                                                      return 365;
                                                     }
                                                 }
                                               else
@@ -13034,7 +16873,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110x10xxxxx0x0111xxxxxxxxxx
                                                          fmul.  */
-                                                      return 341;
+                                                      return 347;
                                                     }
                                                   else
                                                     {
@@ -13042,7 +16881,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110x10xxxxx0x1111xxxxxxxxxx
                                                          fdiv.  */
-                                                      return 349;
+                                                      return 355;
                                                     }
                                                 }
                                             }
@@ -13062,7 +16901,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx0xxxxx100001xxxxxxxxxx
                                                          sqrdmlah.  */
-                                                      return 364;
+                                                      return 370;
                                                     }
                                                   else
                                                     {
@@ -13070,7 +16909,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx0xxxxx100101xxxxxxxxxx
                                                          udot.  */
-                                                      return 2003;
+                                                      return 2349;
                                                     }
                                                 }
                                               else
@@ -13079,7 +16918,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx101110xx0xxxxx100x11xxxxxxxxxx
                                                      sqrdmlsh.  */
-                                                  return 365;
+                                                  return 371;
                                                 }
                                             }
                                           else
@@ -13088,16 +16927,71 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101110xx0xxxxx110xx1xxxxxxxxxx
                                                  fcmla.  */
-                                              return 366;
+                                              return 372;
                                             }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xx101110xx0xxxxx1x1xx1xxxxxxxxxx
-                                             fcadd.  */
-                                          return 367;
+                                          if (((word >> 11) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx101110xx0xxxxx101x01xxxxxxxxxx
+                                                     ummla.  */
+                                                  return 2425;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx101110xx0xxxxx111x01xxxxxxxxxx
+                                                     fcadd.  */
+                                                  return 373;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 12) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx101110xx0xxxxx1x1011xxxxxxxxxx
+                                                     bfmmla.  */
+                                                  return 2441;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx1011100x0xxxxx1x1111xxxxxxxxxx
+                                                         bfdot.  */
+                                                      return 2439;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x01011101x0xxxxx1x1111xxxxxxxxxx
+                                                             bfmlalb.  */
+                                                          return 2446;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11011101x0xxxxx1x1111xxxxxxxxxx
+                                                             bfmlalt.  */
+                                                          return 2445;
+                                                        }
+                                                    }
+                                                }
+                                            }
                                         }
                                     }
                                 }
@@ -13117,7 +17011,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0011110xx0xxx00xxxxxxxxxxxxxxxx
                                              fcvtzs.  */
-                                          return 752;
+                                          return 764;
                                         }
                                       else
                                         {
@@ -13125,7 +17019,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0011110xx0xxx10xxxxxxxxxxxxxxxx
                                              scvtf.  */
-                                          return 748;
+                                          return 760;
                                         }
                                     }
                                   else
@@ -13136,7 +17030,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0011110xx0xxx01xxxxxxxxxxxxxxxx
                                              fcvtzu.  */
-                                          return 754;
+                                          return 766;
                                         }
                                       else
                                         {
@@ -13144,7 +17038,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0011110xx0xxx11xxxxxxxxxxxxxxxx
                                              ucvtf.  */
-                                          return 750;
+                                          return 762;
                                         }
                                     }
                                 }
@@ -13162,7 +17056,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx0xxxxxx000x0xxxxxxxxxx
                                                      sha1c.  */
-                                                  return 672;
+                                                  return 678;
                                                 }
                                               else
                                                 {
@@ -13170,7 +17064,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx0xxxxxx100x0xxxxxxxxxx
                                                      sha256h.  */
-                                                  return 676;
+                                                  return 682;
                                                 }
                                             }
                                           else
@@ -13181,7 +17075,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx0xxxxxx010x0xxxxxxxxxx
                                                      sha1m.  */
-                                                  return 674;
+                                                  return 680;
                                                 }
                                               else
                                                 {
@@ -13189,7 +17083,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx0xxxxxx110x0xxxxxxxxxx
                                                      sha256su1.  */
-                                                  return 678;
+                                                  return 684;
                                                 }
                                             }
                                         }
@@ -13203,7 +17097,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx0xxxxxx001x0xxxxxxxxxx
                                                      sha1p.  */
-                                                  return 673;
+                                                  return 679;
                                                 }
                                               else
                                                 {
@@ -13211,7 +17105,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx0xxxxxx101x0xxxxxxxxxx
                                                      sha256h2.  */
-                                                  return 677;
+                                                  return 683;
                                                 }
                                             }
                                           else
@@ -13220,7 +17114,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011110xx0xxxxxxx11x0xxxxxxxxxx
                                                  sha1su0.  */
-                                              return 675;
+                                              return 681;
                                             }
                                         }
                                     }
@@ -13234,7 +17128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011110xx0xxxxxxx0x01xxxxxxxxxx
                                                  dup.  */
-                                              return 529;
+                                              return 535;
                                             }
                                           else
                                             {
@@ -13242,7 +17136,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011110xx0xxxxxxx1x01xxxxxxxxxx
                                                  fcmeq.  */
-                                              return 550;
+                                              return 556;
                                             }
                                         }
                                       else
@@ -13253,7 +17147,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011110xx0xxxxxxx0x11xxxxxxxxxx
                                                  fmulx.  */
-                                              return 548;
+                                              return 554;
                                             }
                                           else
                                             {
@@ -13263,7 +17157,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10111100x0xxxxxxx1x11xxxxxxxxxx
                                                      frecps.  */
-                                                  return 552;
+                                                  return 558;
                                                 }
                                               else
                                                 {
@@ -13271,7 +17165,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10111101x0xxxxxxx1x11xxxxxxxxxx
                                                      frsqrts.  */
-                                                  return 554;
+                                                  return 560;
                                                 }
                                             }
                                         }
@@ -13290,7 +17184,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111110xx0xxxxxxx000xxxxxxxxxxx
                                              sqrdmlah.  */
-                                          return 582;
+                                          return 588;
                                         }
                                       else
                                         {
@@ -13300,7 +17194,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx1111100x0xxxxxxx100xxxxxxxxxxx
                                                  fcmge.  */
-                                              return 567;
+                                              return 573;
                                             }
                                           else
                                             {
@@ -13308,7 +17202,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx1111101x0xxxxxxx100xxxxxxxxxxx
                                                  fcmgt.  */
-                                              return 573;
+                                              return 579;
                                             }
                                         }
                                     }
@@ -13318,7 +17212,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111110xx0xxxxxxxx10xxxxxxxxxxx
                                          fabd.  */
-                                      return 571;
+                                      return 577;
                                     }
                                 }
                               else
@@ -13329,7 +17223,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111110xx0xxxxxxx0x1xxxxxxxxxxx
                                          sqrdmlsh.  */
-                                      return 583;
+                                      return 589;
                                     }
                                   else
                                     {
@@ -13339,7 +17233,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx1111100x0xxxxxxx1x1xxxxxxxxxxx
                                              facge.  */
-                                          return 569;
+                                          return 575;
                                         }
                                       else
                                         {
@@ -13347,7 +17241,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx1111101x0xxxxxxx1x1xxxxxxxxxxx
                                              facgt.  */
-                                          return 575;
+                                          return 581;
                                         }
                                     }
                                 }
@@ -13380,7 +17274,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx000000xxxxxxxxxx
                                                                  saddl.  */
-                                                              return 42;
+                                                              return 44;
                                                             }
                                                           else
                                                             {
@@ -13388,7 +17282,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx000000xxxxxxxxxx
                                                                  saddl2.  */
-                                                              return 43;
+                                                              return 45;
                                                             }
                                                         }
                                                       else
@@ -13399,7 +17293,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx010000xxxxxxxxxx
                                                                  addhn.  */
-                                                              return 50;
+                                                              return 52;
                                                             }
                                                           else
                                                             {
@@ -13407,7 +17301,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx010000xxxxxxxxxx
                                                                  addhn2.  */
-                                                              return 51;
+                                                              return 53;
                                                             }
                                                         }
                                                     }
@@ -13421,7 +17315,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx001000xxxxxxxxxx
                                                                  ssubl.  */
-                                                              return 46;
+                                                              return 48;
                                                             }
                                                           else
                                                             {
@@ -13429,7 +17323,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx001000xxxxxxxxxx
                                                                  ssubl2.  */
-                                                              return 47;
+                                                              return 49;
                                                             }
                                                         }
                                                       else
@@ -13440,7 +17334,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx011000xxxxxxxxxx
                                                                  subhn.  */
-                                                              return 54;
+                                                              return 56;
                                                             }
                                                           else
                                                             {
@@ -13448,7 +17342,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx011000xxxxxxxxxx
                                                                  subhn2.  */
-                                                              return 55;
+                                                              return 57;
                                                             }
                                                         }
                                                     }
@@ -13465,7 +17359,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx000100xxxxxxxxxx
                                                                  saddw.  */
-                                                              return 44;
+                                                              return 46;
                                                             }
                                                           else
                                                             {
@@ -13473,7 +17367,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx000100xxxxxxxxxx
                                                                  saddw2.  */
-                                                              return 45;
+                                                              return 47;
                                                             }
                                                         }
                                                       else
@@ -13484,7 +17378,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx010100xxxxxxxxxx
                                                                  sabal.  */
-                                                              return 52;
+                                                              return 54;
                                                             }
                                                           else
                                                             {
@@ -13492,7 +17386,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx010100xxxxxxxxxx
                                                                  sabal2.  */
-                                                              return 53;
+                                                              return 55;
                                                             }
                                                         }
                                                     }
@@ -13506,7 +17400,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx001100xxxxxxxxxx
                                                                  ssubw.  */
-                                                              return 48;
+                                                              return 50;
                                                             }
                                                           else
                                                             {
@@ -13514,7 +17408,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx001100xxxxxxxxxx
                                                                  ssubw2.  */
-                                                              return 49;
+                                                              return 51;
                                                             }
                                                         }
                                                       else
@@ -13525,7 +17419,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  00001110xx1xxxxx011100xxxxxxxxxx
                                                                  sabdl.  */
-                                                              return 56;
+                                                              return 58;
                                                             }
                                                           else
                                                             {
@@ -13533,7 +17427,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx011100xxxxxxxxxx
                                                                  sabdl2.  */
-                                                              return 57;
+                                                              return 59;
                                                             }
                                                         }
                                                     }
@@ -13551,7 +17445,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx000010xxxxxxxxxx
                                                              rev64.  */
-                                                          return 156;
+                                                          return 162;
                                                         }
                                                       else
                                                         {
@@ -13563,7 +17457,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110xx1x0xx0010010xxxxxxxxxx
                                                                      cls.  */
-                                                                  return 160;
+                                                                  return 166;
                                                                 }
                                                               else
                                                                 {
@@ -13571,7 +17465,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110xx1x1xx0010010xxxxxxxxxx
                                                                      aese.  */
-                                                                  return 665;
+                                                                  return 671;
                                                                 }
                                                             }
                                                           else
@@ -13582,7 +17476,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00001110xx1xxxx1010010xxxxxxxxxx
                                                                      sqxtn.  */
-                                                                  return 170;
+                                                                  return 176;
                                                                 }
                                                               else
                                                                 {
@@ -13590,7 +17484,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01001110xx1xxxx1010010xxxxxxxxxx
                                                                      sqxtn2.  */
-                                                                  return 171;
+                                                                  return 177;
                                                                 }
                                                             }
                                                         }
@@ -13605,7 +17499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110xx1xxxx0001010xxxxxxxxxx
                                                                  saddlp.  */
-                                                              return 158;
+                                                              return 164;
                                                             }
                                                           else
                                                             {
@@ -13615,7 +17509,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00001110xx1xxxx1001010xxxxxxxxxx
                                                                      xtn.  */
-                                                                  return 168;
+                                                                  return 174;
                                                                 }
                                                               else
                                                                 {
@@ -13623,7 +17517,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01001110xx1xxxx1001010xxxxxxxxxx
                                                                      xtn2.  */
-                                                                  return 169;
+                                                                  return 175;
                                                                 }
                                                             }
                                                         }
@@ -13637,7 +17531,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110xx1x0xx0011010xxxxxxxxxx
                                                                      sadalp.  */
-                                                                  return 162;
+                                                                  return 168;
                                                                 }
                                                               else
                                                                 {
@@ -13645,26 +17539,48 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110xx1x1xx0011010xxxxxxxxxx
                                                                      aesmc.  */
-                                                                  return 667;
+                                                                  return 673;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     00001110xx1xxxx1011010xxxxxxxxxx
-                                                                     fcvtn.  */
-                                                                  return 172;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000011100x1xxxx1011010xxxxxxxxxx
+                                                                         fcvtn.  */
+                                                                      return 178;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         010011100x1xxxx1011010xxxxxxxxxx
+                                                                         fcvtn2.  */
+                                                                      return 179;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     01001110xx1xxxx1011010xxxxxxxxxx
-                                                                     fcvtn2.  */
-                                                                  return 173;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000011101x1xxxx1011010xxxxxxxxxx
+                                                                         bfcvtn.  */
+                                                                      return 2442;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         010011101x1xxxx1011010xxxxxxxxxx
+                                                                         bfcvtn2.  */
+                                                                      return 2443;
+                                                                    }
                                                                 }
                                                             }
                                                         }
@@ -13680,7 +17596,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx000110xxxxxxxxxx
                                                              rev16.  */
-                                                          return 157;
+                                                          return 163;
                                                         }
                                                       else
                                                         {
@@ -13690,7 +17606,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110xx1x0xxx010110xxxxxxxxxx
                                                                  cnt.  */
-                                                              return 161;
+                                                              return 167;
                                                             }
                                                           else
                                                             {
@@ -13698,7 +17614,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110xx1x1xxx010110xxxxxxxxxx
                                                                  aesd.  */
-                                                              return 666;
+                                                              return 672;
                                                             }
                                                         }
                                                     }
@@ -13712,7 +17628,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110xx10xxxx001110xxxxxxxxxx
                                                                  suqadd.  */
-                                                              return 159;
+                                                              return 165;
                                                             }
                                                           else
                                                             {
@@ -13720,7 +17636,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110xx11xxxx001110xxxxxxxxxx
                                                                  saddlv.  */
-                                                              return 27;
+                                                              return 29;
                                                             }
                                                         }
                                                       else
@@ -13733,7 +17649,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110xx1x0xx0011110xxxxxxxxxx
                                                                      sqabs.  */
-                                                                  return 163;
+                                                                  return 169;
                                                                 }
                                                               else
                                                                 {
@@ -13741,7 +17657,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110xx1x1xx0011110xxxxxxxxxx
                                                                      aesimc.  */
-                                                                  return 668;
+                                                                  return 674;
                                                                 }
                                                             }
                                                           else
@@ -13752,7 +17668,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      00001110xx1xxxx1011110xxxxxxxxxx
                                                                      fcvtl.  */
-                                                                  return 174;
+                                                                  return 180;
                                                                 }
                                                               else
                                                                 {
@@ -13760,7 +17676,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      01001110xx1xxxx1011110xxxxxxxxxx
                                                                      fcvtl2.  */
-                                                                  return 175;
+                                                                  return 181;
                                                                 }
                                                             }
                                                         }
@@ -13782,7 +17698,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx000001xxxxxxxxxx
                                                              shadd.  */
-                                                          return 262;
+                                                          return 268;
                                                         }
                                                       else
                                                         {
@@ -13790,7 +17706,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx010001xxxxxxxxxx
                                                              sshl.  */
-                                                          return 269;
+                                                          return 275;
                                                         }
                                                     }
                                                   else
@@ -13801,7 +17717,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx001001xxxxxxxxxx
                                                              shsub.  */
-                                                          return 265;
+                                                          return 271;
                                                         }
                                                       else
                                                         {
@@ -13809,7 +17725,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx011001xxxxxxxxxx
                                                              smax.  */
-                                                          return 273;
+                                                          return 279;
                                                         }
                                                     }
                                                 }
@@ -13823,7 +17739,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx000101xxxxxxxxxx
                                                              srhadd.  */
-                                                          return 264;
+                                                          return 270;
                                                         }
                                                       else
                                                         {
@@ -13831,7 +17747,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx010101xxxxxxxxxx
                                                              srshl.  */
-                                                          return 271;
+                                                          return 277;
                                                         }
                                                     }
                                                   else
@@ -13842,7 +17758,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx001101xxxxxxxxxx
                                                              cmgt.  */
-                                                          return 267;
+                                                          return 273;
                                                         }
                                                       else
                                                         {
@@ -13850,7 +17766,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx011101xxxxxxxxxx
                                                              sabd.  */
-                                                          return 275;
+                                                          return 281;
                                                         }
                                                     }
                                                 }
@@ -13867,7 +17783,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx000011xxxxxxxxxx
                                                              sqadd.  */
-                                                          return 263;
+                                                          return 269;
                                                         }
                                                       else
                                                         {
@@ -13875,7 +17791,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx010011xxxxxxxxxx
                                                              sqshl.  */
-                                                          return 270;
+                                                          return 276;
                                                         }
                                                     }
                                                   else
@@ -13886,7 +17802,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx001011xxxxxxxxxx
                                                              sqsub.  */
-                                                          return 266;
+                                                          return 272;
                                                         }
                                                       else
                                                         {
@@ -13894,7 +17810,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx011011xxxxxxxxxx
                                                              smin.  */
-                                                          return 274;
+                                                          return 280;
                                                         }
                                                     }
                                                 }
@@ -13912,7 +17828,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110001xxxxx000111xxxxxxxxxx
                                                                      and.  */
-                                                                  return 299;
+                                                                  return 305;
                                                                 }
                                                               else
                                                                 {
@@ -13920,7 +17836,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110101xxxxx000111xxxxxxxxxx
                                                                      orr.  */
-                                                                  return 311;
+                                                                  return 317;
                                                                 }
                                                             }
                                                           else
@@ -13931,7 +17847,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110011xxxxx000111xxxxxxxxxx
                                                                      bic.  */
-                                                                  return 300;
+                                                                  return 306;
                                                                 }
                                                               else
                                                                 {
@@ -13939,7 +17855,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x001110111xxxxx000111xxxxxxxxxx
                                                                      orn.  */
-                                                                  return 313;
+                                                                  return 319;
                                                                 }
                                                             }
                                                         }
@@ -13949,7 +17865,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx010111xxxxxxxxxx
                                                              sqrshl.  */
-                                                          return 272;
+                                                          return 278;
                                                         }
                                                     }
                                                   else
@@ -13960,7 +17876,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx001111xxxxxxxxxx
                                                              cmge.  */
-                                                          return 268;
+                                                          return 274;
                                                         }
                                                       else
                                                         {
@@ -13968,7 +17884,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx011111xxxxxxxxxx
                                                              saba.  */
-                                                          return 276;
+                                                          return 282;
                                                         }
                                                     }
                                                 }
@@ -13981,7 +17897,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          1x001110xx1xxxxx0xxxxxxxxxxxxxxx
                                          bcax.  */
-                                      return 2014;
+                                      return 2360;
                                     }
                                 }
                               else
@@ -14002,7 +17918,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx000000xxxxxxxxxx
                                                              uaddl.  */
-                                                          return 74;
+                                                          return 76;
                                                         }
                                                       else
                                                         {
@@ -14010,7 +17926,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx000000xxxxxxxxxx
                                                              uaddl2.  */
-                                                          return 75;
+                                                          return 77;
                                                         }
                                                     }
                                                   else
@@ -14021,7 +17937,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx010000xxxxxxxxxx
                                                              raddhn.  */
-                                                          return 82;
+                                                          return 84;
                                                         }
                                                       else
                                                         {
@@ -14029,7 +17945,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx010000xxxxxxxxxx
                                                              raddhn2.  */
-                                                          return 83;
+                                                          return 85;
                                                         }
                                                     }
                                                 }
@@ -14043,7 +17959,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx001000xxxxxxxxxx
                                                              usubl.  */
-                                                          return 78;
+                                                          return 80;
                                                         }
                                                       else
                                                         {
@@ -14051,7 +17967,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx001000xxxxxxxxxx
                                                              usubl2.  */
-                                                          return 79;
+                                                          return 81;
                                                         }
                                                     }
                                                   else
@@ -14062,7 +17978,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx011000xxxxxxxxxx
                                                              rsubhn.  */
-                                                          return 86;
+                                                          return 88;
                                                         }
                                                       else
                                                         {
@@ -14070,7 +17986,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx011000xxxxxxxxxx
                                                              rsubhn2.  */
-                                                          return 87;
+                                                          return 89;
                                                         }
                                                     }
                                                 }
@@ -14087,7 +18003,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx000100xxxxxxxxxx
                                                              uaddw.  */
-                                                          return 76;
+                                                          return 78;
                                                         }
                                                       else
                                                         {
@@ -14095,7 +18011,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx000100xxxxxxxxxx
                                                              uaddw2.  */
-                                                          return 77;
+                                                          return 79;
                                                         }
                                                     }
                                                   else
@@ -14106,7 +18022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx010100xxxxxxxxxx
                                                              uabal.  */
-                                                          return 84;
+                                                          return 86;
                                                         }
                                                       else
                                                         {
@@ -14114,7 +18030,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx010100xxxxxxxxxx
                                                              uabal2.  */
-                                                          return 85;
+                                                          return 87;
                                                         }
                                                     }
                                                 }
@@ -14128,7 +18044,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx001100xxxxxxxxxx
                                                              usubw.  */
-                                                          return 80;
+                                                          return 82;
                                                         }
                                                       else
                                                         {
@@ -14136,7 +18052,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx001100xxxxxxxxxx
                                                              usubw2.  */
-                                                          return 81;
+                                                          return 83;
                                                         }
                                                     }
                                                   else
@@ -14147,7 +18063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx011100xxxxxxxxxx
                                                              uabdl.  */
-                                                          return 88;
+                                                          return 90;
                                                         }
                                                       else
                                                         {
@@ -14155,7 +18071,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx011100xxxxxxxxxx
                                                              uabdl2.  */
-                                                          return 89;
+                                                          return 91;
                                                         }
                                                     }
                                                 }
@@ -14173,7 +18089,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx000010xxxxxxxxxx
                                                          rev32.  */
-                                                      return 207;
+                                                      return 213;
                                                     }
                                                   else
                                                     {
@@ -14183,7 +18099,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110xx1xxxx0010010xxxxxxxxxx
                                                              clz.  */
-                                                          return 210;
+                                                          return 216;
                                                         }
                                                       else
                                                         {
@@ -14193,7 +18109,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x0101110xx1xxxx1010010xxxxxxxxxx
                                                                  uqxtn.  */
-                                                              return 220;
+                                                              return 226;
                                                             }
                                                           else
                                                             {
@@ -14201,7 +18117,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1101110xx1xxxx1010010xxxxxxxxxx
                                                                  uqxtn2.  */
-                                                              return 221;
+                                                              return 227;
                                                             }
                                                         }
                                                     }
@@ -14216,7 +18132,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110xx1xxxx0001010xxxxxxxxxx
                                                              uaddlp.  */
-                                                          return 208;
+                                                          return 214;
                                                         }
                                                       else
                                                         {
@@ -14226,7 +18142,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x0101110xx1xxxx1001010xxxxxxxxxx
                                                                  sqxtun.  */
-                                                              return 216;
+                                                              return 222;
                                                             }
                                                           else
                                                             {
@@ -14234,7 +18150,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1101110xx1xxxx1001010xxxxxxxxxx
                                                                  sqxtun2.  */
-                                                              return 217;
+                                                              return 223;
                                                             }
                                                         }
                                                     }
@@ -14246,7 +18162,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110xx1xxxx0011010xxxxxxxxxx
                                                              uadalp.  */
-                                                          return 211;
+                                                          return 217;
                                                         }
                                                       else
                                                         {
@@ -14256,7 +18172,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x0101110xx1xxxx1011010xxxxxxxxxx
                                                                  fcvtxn.  */
-                                                              return 222;
+                                                              return 228;
                                                             }
                                                           else
                                                             {
@@ -14264,7 +18180,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1101110xx1xxxx1011010xxxxxxxxxx
                                                                  fcvtxn2.  */
-                                                              return 223;
+                                                              return 229;
                                                             }
                                                         }
                                                     }
@@ -14280,7 +18196,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110x01xxxxx0x0110xxxxxxxxxx
                                                          not.  */
-                                                      return 236;
+                                                      return 242;
                                                     }
                                                   else
                                                     {
@@ -14288,7 +18204,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110x11xxxxx0x0110xxxxxxxxxx
                                                          rbit.  */
-                                                      return 238;
+                                                      return 244;
                                                     }
                                                 }
                                               else
@@ -14303,7 +18219,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx10xxx0001110xxxxxxxxxx
                                                                  usqadd.  */
-                                                              return 209;
+                                                              return 215;
                                                             }
                                                           else
                                                             {
@@ -14311,7 +18227,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx11xxx0001110xxxxxxxxxx
                                                                  uaddlv.  */
-                                                              return 31;
+                                                              return 33;
                                                             }
                                                         }
                                                       else
@@ -14322,7 +18238,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x0101110xx1xxxx1001110xxxxxxxxxx
                                                                  shll.  */
-                                                              return 218;
+                                                              return 224;
                                                             }
                                                           else
                                                             {
@@ -14330,7 +18246,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x1101110xx1xxxx1001110xxxxxxxxxx
                                                                  shll2.  */
-                                                              return 219;
+                                                              return 225;
                                                             }
                                                         }
                                                     }
@@ -14340,7 +18256,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx011110xxxxxxxxxx
                                                          sqneg.  */
-                                                      return 212;
+                                                      return 218;
                                                     }
                                                 }
                                             }
@@ -14360,7 +18276,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx000001xxxxxxxxxx
                                                          uhadd.  */
-                                                      return 314;
+                                                      return 320;
                                                     }
                                                   else
                                                     {
@@ -14368,7 +18284,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx010001xxxxxxxxxx
                                                          ushl.  */
-                                                      return 321;
+                                                      return 327;
                                                     }
                                                 }
                                               else
@@ -14379,7 +18295,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx001001xxxxxxxxxx
                                                          uhsub.  */
-                                                      return 317;
+                                                      return 323;
                                                     }
                                                   else
                                                     {
@@ -14387,7 +18303,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx011001xxxxxxxxxx
                                                          umax.  */
-                                                      return 325;
+                                                      return 331;
                                                     }
                                                 }
                                             }
@@ -14401,7 +18317,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx000101xxxxxxxxxx
                                                          urhadd.  */
-                                                      return 316;
+                                                      return 322;
                                                     }
                                                   else
                                                     {
@@ -14409,7 +18325,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx010101xxxxxxxxxx
                                                          urshl.  */
-                                                      return 323;
+                                                      return 329;
                                                     }
                                                 }
                                               else
@@ -14420,7 +18336,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx001101xxxxxxxxxx
                                                          cmhi.  */
-                                                      return 319;
+                                                      return 325;
                                                     }
                                                   else
                                                     {
@@ -14428,7 +18344,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx011101xxxxxxxxxx
                                                          uabd.  */
-                                                      return 327;
+                                                      return 333;
                                                     }
                                                 }
                                             }
@@ -14445,7 +18361,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx000011xxxxxxxxxx
                                                          uqadd.  */
-                                                      return 315;
+                                                      return 321;
                                                     }
                                                   else
                                                     {
@@ -14453,7 +18369,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx010011xxxxxxxxxx
                                                          uqshl.  */
-                                                      return 322;
+                                                      return 328;
                                                     }
                                                 }
                                               else
@@ -14464,7 +18380,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx001011xxxxxxxxxx
                                                          uqsub.  */
-                                                      return 318;
+                                                      return 324;
                                                     }
                                                   else
                                                     {
@@ -14472,7 +18388,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx011011xxxxxxxxxx
                                                          umin.  */
-                                                      return 326;
+                                                      return 332;
                                                     }
                                                 }
                                             }
@@ -14490,7 +18406,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110001xxxxx000111xxxxxxxxxx
                                                                  eor.  */
-                                                              return 350;
+                                                              return 356;
                                                             }
                                                           else
                                                             {
@@ -14498,7 +18414,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110101xxxxx000111xxxxxxxxxx
                                                                  bit.  */
-                                                              return 362;
+                                                              return 368;
                                                             }
                                                         }
                                                       else
@@ -14509,7 +18425,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110011xxxxx000111xxxxxxxxxx
                                                                  bsl.  */
-                                                              return 351;
+                                                              return 357;
                                                             }
                                                           else
                                                             {
@@ -14517,7 +18433,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110111xxxxx000111xxxxxxxxxx
                                                                  bif.  */
-                                                              return 363;
+                                                              return 369;
                                                             }
                                                         }
                                                     }
@@ -14527,7 +18443,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx010111xxxxxxxxxx
                                                          uqrshl.  */
-                                                      return 324;
+                                                      return 330;
                                                     }
                                                 }
                                               else
@@ -14538,7 +18454,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx001111xxxxxxxxxx
                                                          cmhs.  */
-                                                      return 320;
+                                                      return 326;
                                                     }
                                                   else
                                                     {
@@ -14546,7 +18462,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx011111xxxxxxxxxx
                                                          uaba.  */
-                                                      return 328;
+                                                      return 334;
                                                     }
                                                 }
                                             }
@@ -14574,7 +18490,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0001110xx1xxxxx100000xxxxxxxxxx
                                                              smlal.  */
-                                                          return 58;
+                                                          return 60;
                                                         }
                                                       else
                                                         {
@@ -14584,7 +18500,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx100000xxxxxxxxxx
                                                                  smlal2.  */
-                                                              return 59;
+                                                              return 61;
                                                             }
                                                           else
                                                             {
@@ -14592,7 +18508,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  11001110xx1xxxxx100000xxxxxxxxxx
                                                                  sha512h.  */
-                                                              return 2007;
+                                                              return 2353;
                                                             }
                                                         }
                                                     }
@@ -14604,7 +18520,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx100000xxxxxxxxxx
                                                              umlal.  */
-                                                          return 90;
+                                                          return 92;
                                                         }
                                                       else
                                                         {
@@ -14612,7 +18528,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx100000xxxxxxxxxx
                                                              umlal2.  */
-                                                          return 91;
+                                                          return 93;
                                                         }
                                                     }
                                                 }
@@ -14626,7 +18542,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0001110xx1xxxxx110000xxxxxxxxxx
                                                              smull.  */
-                                                          return 66;
+                                                          return 68;
                                                         }
                                                       else
                                                         {
@@ -14636,7 +18552,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  01001110xx1xxxxx110000xxxxxxxxxx
                                                                  smull2.  */
-                                                              return 67;
+                                                              return 69;
                                                             }
                                                           else
                                                             {
@@ -14644,7 +18560,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  11001110xx1xxxxx110000xxxxxxxxxx
                                                                  sm3partw1.  */
-                                                              return 2020;
+                                                              return 2366;
                                                             }
                                                         }
                                                     }
@@ -14656,7 +18572,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx110000xxxxxxxxxx
                                                              umull.  */
-                                                          return 94;
+                                                          return 96;
                                                         }
                                                       else
                                                         {
@@ -14664,7 +18580,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx110000xxxxxxxxxx
                                                              umull2.  */
-                                                          return 95;
+                                                          return 97;
                                                         }
                                                     }
                                                 }
@@ -14681,7 +18597,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0001110xx1xxxxx101000xxxxxxxxxx
                                                              smlsl.  */
-                                                          return 62;
+                                                          return 64;
                                                         }
                                                       else
                                                         {
@@ -14689,7 +18605,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1001110xx1xxxxx101000xxxxxxxxxx
                                                              smlsl2.  */
-                                                          return 63;
+                                                          return 65;
                                                         }
                                                     }
                                                   else
@@ -14700,7 +18616,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0101110xx1xxxxx101000xxxxxxxxxx
                                                              umlsl.  */
-                                                          return 92;
+                                                          return 94;
                                                         }
                                                       else
                                                         {
@@ -14708,7 +18624,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1101110xx1xxxxx101000xxxxxxxxxx
                                                              umlsl2.  */
-                                                          return 93;
+                                                          return 95;
                                                         }
                                                     }
                                                 }
@@ -14722,7 +18638,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0x01110x01xxxxx111000xxxxxxxxxx
                                                              pmull.  */
-                                                          return 70;
+                                                          return 72;
                                                         }
                                                       else
                                                         {
@@ -14730,7 +18646,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1x01110x01xxxxx111000xxxxxxxxxx
                                                              pmull2.  */
-                                                          return 72;
+                                                          return 74;
                                                         }
                                                     }
                                                   else
@@ -14741,7 +18657,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0x01110x11xxxxx111000xxxxxxxxxx
                                                              pmull.  */
-                                                          return 71;
+                                                          return 73;
                                                         }
                                                       else
                                                         {
@@ -14749,7 +18665,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1x01110x11xxxxx111000xxxxxxxxxx
                                                              pmull2.  */
-                                                          return 73;
+                                                          return 75;
                                                         }
                                                     }
                                                 }
@@ -14767,7 +18683,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x01110xx1xxxxx100100xxxxxxxxxx
                                                          sqdmlal.  */
-                                                      return 60;
+                                                      return 62;
                                                     }
                                                   else
                                                     {
@@ -14775,7 +18691,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x01110xx1xxxxx100100xxxxxxxxxx
                                                          sqdmlal2.  */
-                                                      return 61;
+                                                      return 63;
                                                     }
                                                 }
                                               else
@@ -14786,7 +18702,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x01110xx1xxxxx110100xxxxxxxxxx
                                                          sqdmull.  */
-                                                      return 68;
+                                                      return 70;
                                                     }
                                                   else
                                                     {
@@ -14794,7 +18710,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x01110xx1xxxxx110100xxxxxxxxxx
                                                          sqdmull2.  */
-                                                      return 69;
+                                                      return 71;
                                                     }
                                                 }
                                             }
@@ -14806,7 +18722,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0x01110xx1xxxxx1x1100xxxxxxxxxx
                                                      sqdmlsl.  */
-                                                  return 64;
+                                                  return 66;
                                                 }
                                               else
                                                 {
@@ -14814,7 +18730,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1x01110xx1xxxxx1x1100xxxxxxxxxx
                                                      sqdmlsl2.  */
-                                                  return 65;
+                                                  return 67;
                                                 }
                                             }
                                         }
@@ -14837,7 +18753,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x001110xx1xxxx0100010xxxxxxxxxx
                                                                  cmgt.  */
-                                                              return 164;
+                                                              return 170;
                                                             }
                                                           else
                                                             {
@@ -14849,7 +18765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          0x0011100x1x0xx1100010xxxxxxxxxx
                                                                          frintn.  */
-                                                                      return 176;
+                                                                      return 182;
                                                                     }
                                                                   else
                                                                     {
@@ -14857,7 +18773,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          0x0011101x1x0xx1100010xxxxxxxxxx
                                                                          frintp.  */
-                                                                      return 196;
+                                                                      return 202;
                                                                     }
                                                                 }
                                                               else
@@ -14868,7 +18784,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          0x0011100x1x1xx1100010xxxxxxxxxx
                                                                          frintn.  */
-                                                                      return 177;
+                                                                      return 183;
                                                                     }
                                                                   else
                                                                     {
@@ -14876,7 +18792,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          0x0011101x1x1xx1100010xxxxxxxxxx
                                                                          frintp.  */
-                                                                      return 197;
+                                                                      return 203;
                                                                     }
                                                                 }
                                                             }
@@ -14887,7 +18803,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              1x001110xx1xxxxx100010xxxxxxxxxx
                                                              sha512su1.  */
-                                                          return 2010;
+                                                          return 2356;
                                                         }
                                                     }
                                                   else
@@ -14898,7 +18814,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110xx1xxxx0100010xxxxxxxxxx
                                                              cmge.  */
-                                                          return 213;
+                                                          return 219;
                                                         }
                                                       else
                                                         {
@@ -14908,7 +18824,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx1x0xx1100010xxxxxxxxxx
                                                                  frinta.  */
-                                                              return 224;
+                                                              return 230;
                                                             }
                                                           else
                                                             {
@@ -14916,7 +18832,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx1x1xx1100010xxxxxxxxxx
                                                                  frinta.  */
-                                                              return 225;
+                                                              return 231;
                                                             }
                                                         }
                                                     }
@@ -14935,7 +18851,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      0x0011100x1xxxx0110010xxxxxxxxxx
                                                                      fmaxnmv.  */
-                                                                  return 35;
+                                                                  return 37;
                                                                 }
                                                               else
                                                                 {
@@ -14945,7 +18861,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          0x0011100x1x0xx1110010xxxxxxxxxx
                                                                          fcvtas.  */
-                                                                      return 184;
+                                                                      return 190;
                                                                     }
                                                                   else
                                                                     {
@@ -14953,7 +18869,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          0x0011100x1x1xx1110010xxxxxxxxxx
                                                                          fcvtas.  */
-                                                                      return 185;
+                                                                      return 191;
                                                                     }
                                                                 }
                                                             }
@@ -14963,7 +18879,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x0011100x1xxxxx110010xxxxxxxxxx
                                                                  sm4ekey.  */
-                                                              return 2023;
+                                                              return 2369;
                                                             }
                                                         }
                                                       else
@@ -14974,7 +18890,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx1011100x1xxxx0110010xxxxxxxxxx
                                                                  fmaxnmv.  */
-                                                              return 34;
+                                                              return 36;
                                                             }
                                                           else
                                                             {
@@ -14984,7 +18900,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x0xx1110010xxxxxxxxxx
                                                                      fcvtau.  */
-                                                                  return 232;
+                                                                  return 238;
                                                                 }
                                                               else
                                                                 {
@@ -14992,7 +18908,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x1xx1110010xxxxxxxxxx
                                                                      fcvtau.  */
-                                                                  return 233;
+                                                                  return 239;
                                                                 }
                                                             }
                                                         }
@@ -15011,7 +18927,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011101x100xx0110010xxxxxxxxxx
                                                                          fcmgt.  */
-                                                                      return 188;
+                                                                      return 194;
                                                                     }
                                                                   else
                                                                     {
@@ -15019,7 +18935,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011101x100xx0110010xxxxxxxxxx
                                                                          fcmge.  */
-                                                                      return 239;
+                                                                      return 245;
                                                                     }
                                                                 }
                                                               else
@@ -15030,7 +18946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011101x110xx0110010xxxxxxxxxx
                                                                          fminnmv.  */
-                                                                      return 39;
+                                                                      return 41;
                                                                     }
                                                                   else
                                                                     {
@@ -15038,7 +18954,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011101x110xx0110010xxxxxxxxxx
                                                                          fminnmv.  */
-                                                                      return 38;
+                                                                      return 40;
                                                                     }
                                                                 }
                                                             }
@@ -15050,7 +18966,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x1xx0110010xxxxxxxxxx
                                                                      fcmgt.  */
-                                                                  return 189;
+                                                                  return 195;
                                                                 }
                                                               else
                                                                 {
@@ -15058,7 +18974,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x1xx0110010xxxxxxxxxx
                                                                      fcmge.  */
-                                                                  return 240;
+                                                                  return 246;
                                                                 }
                                                             }
                                                         }
@@ -15070,7 +18986,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx0011101x1xxxx1110010xxxxxxxxxx
                                                                  urecpe.  */
-                                                              return 204;
+                                                              return 210;
                                                             }
                                                           else
                                                             {
@@ -15078,7 +18994,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx1011101x1xxxx1110010xxxxxxxxxx
                                                                  ursqrte.  */
-                                                              return 251;
+                                                              return 257;
                                                             }
                                                         }
                                                     }
@@ -15096,7 +19012,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx01110xx10xxx0101010xxxxxxxxxx
                                                              cmlt.  */
-                                                          return 166;
+                                                          return 172;
                                                         }
                                                       else
                                                         {
@@ -15106,7 +19022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx001110xx11xxx0101010xxxxxxxxxx
                                                                  smaxv.  */
-                                                              return 28;
+                                                              return 30;
                                                             }
                                                           else
                                                             {
@@ -15114,7 +19030,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx11xxx0101010xxxxxxxxxx
                                                                  umaxv.  */
-                                                              return 32;
+                                                              return 34;
                                                             }
                                                         }
                                                     }
@@ -15132,7 +19048,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011100x100xx1101010xxxxxxxxxx
                                                                          fcvtns.  */
-                                                                      return 180;
+                                                                      return 186;
                                                                     }
                                                                   else
                                                                     {
@@ -15140,7 +19056,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011100x100xx1101010xxxxxxxxxx
                                                                          fcvtnu.  */
-                                                                      return 228;
+                                                                      return 234;
                                                                     }
                                                                 }
                                                               else
@@ -15151,7 +19067,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011101x100xx1101010xxxxxxxxxx
                                                                          fcvtps.  */
-                                                                      return 200;
+                                                                      return 206;
                                                                     }
                                                                   else
                                                                     {
@@ -15159,7 +19075,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011101x100xx1101010xxxxxxxxxx
                                                                          fcvtpu.  */
-                                                                      return 247;
+                                                                      return 253;
                                                                     }
                                                                 }
                                                             }
@@ -15171,7 +19087,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx001110xx110xx1101010xxxxxxxxxx
                                                                      sminv.  */
-                                                                  return 29;
+                                                                  return 31;
                                                                 }
                                                               else
                                                                 {
@@ -15179,7 +19095,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx101110xx110xx1101010xxxxxxxxxx
                                                                      uminv.  */
-                                                                  return 33;
+                                                                  return 35;
                                                                 }
                                                             }
                                                         }
@@ -15193,7 +19109,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011100x1x1xx1101010xxxxxxxxxx
                                                                      fcvtns.  */
-                                                                  return 181;
+                                                                  return 187;
                                                                 }
                                                               else
                                                                 {
@@ -15201,7 +19117,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x1xx1101010xxxxxxxxxx
                                                                      fcvtnu.  */
-                                                                  return 229;
+                                                                  return 235;
                                                                 }
                                                             }
                                                           else
@@ -15212,7 +19128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x1xx1101010xxxxxxxxxx
                                                                      fcvtps.  */
-                                                                  return 201;
+                                                                  return 207;
                                                                 }
                                                               else
                                                                 {
@@ -15220,7 +19136,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x1xx1101010xxxxxxxxxx
                                                                      fcvtpu.  */
-                                                                  return 248;
+                                                                  return 254;
                                                                 }
                                                             }
                                                         }
@@ -15228,21 +19144,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110xx1x0xxx111010xxxxxxxxxx
-                                                         fcmlt.  */
-                                                      return 192;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx1x0xx0111010xxxxxxxxxx
+                                                             fcmlt.  */
+                                                          return 198;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx1x1xx0111010xxxxxxxxxx
+                                                             fcmlt.  */
+                                                          return 199;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxx01110xx1x1xxx111010xxxxxxxxxx
-                                                         fcmlt.  */
-                                                      return 193;
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx001110xx1xxxx1111010xxxxxxxxxx
+                                                             frint32z.  */
+                                                          return 158;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx1111010xxxxxxxxxx
+                                                             frint32x.  */
+                                                          return 159;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -15261,7 +19199,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx001110xx1xxxx0100110xxxxxxxxxx
                                                              cmeq.  */
-                                                          return 165;
+                                                          return 171;
                                                         }
                                                       else
                                                         {
@@ -15269,7 +19207,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110xx1xxxx0100110xxxxxxxxxx
                                                              cmle.  */
-                                                          return 214;
+                                                          return 220;
                                                         }
                                                     }
                                                   else
@@ -15284,7 +19222,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011100x1x0xx1100110xxxxxxxxxx
                                                                      frintm.  */
-                                                                  return 178;
+                                                                  return 184;
                                                                 }
                                                               else
                                                                 {
@@ -15292,7 +19230,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x0xx1100110xxxxxxxxxx
                                                                      frintx.  */
-                                                                  return 226;
+                                                                  return 232;
                                                                 }
                                                             }
                                                           else
@@ -15303,7 +19241,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x0xx1100110xxxxxxxxxx
                                                                      frintz.  */
-                                                                  return 198;
+                                                                  return 204;
                                                                 }
                                                               else
                                                                 {
@@ -15311,7 +19249,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x0xx1100110xxxxxxxxxx
                                                                      frinti.  */
-                                                                  return 245;
+                                                                  return 251;
                                                                 }
                                                             }
                                                         }
@@ -15325,7 +19263,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011100x1x1xx1100110xxxxxxxxxx
                                                                      frintm.  */
-                                                                  return 179;
+                                                                  return 185;
                                                                 }
                                                               else
                                                                 {
@@ -15333,7 +19271,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x1xx1100110xxxxxxxxxx
                                                                      frintx.  */
-                                                                  return 227;
+                                                                  return 233;
                                                                 }
                                                             }
                                                           else
@@ -15344,7 +19282,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x1xx1100110xxxxxxxxxx
                                                                      frintz.  */
-                                                                  return 199;
+                                                                  return 205;
                                                                 }
                                                               else
                                                                 {
@@ -15352,7 +19290,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x1xx1100110xxxxxxxxxx
                                                                      frinti.  */
-                                                                  return 246;
+                                                                  return 252;
                                                                 }
                                                             }
                                                         }
@@ -15370,7 +19308,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx001110xx1x0xx0110110xxxxxxxxxx
                                                                  fcmeq.  */
-                                                              return 190;
+                                                              return 196;
                                                             }
                                                           else
                                                             {
@@ -15378,7 +19316,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx1x0xx0110110xxxxxxxxxx
                                                                  fcmle.  */
-                                                              return 241;
+                                                              return 247;
                                                             }
                                                         }
                                                       else
@@ -15389,7 +19327,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx001110xx1x1xx0110110xxxxxxxxxx
                                                                  fcmeq.  */
-                                                              return 191;
+                                                              return 197;
                                                             }
                                                           else
                                                             {
@@ -15397,7 +19335,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx1x1xx0110110xxxxxxxxxx
                                                                  fcmle.  */
-                                                              return 242;
+                                                              return 248;
                                                             }
                                                         }
                                                     }
@@ -15413,7 +19351,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011100x1x0xx1110110xxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 186;
+                                                                  return 192;
                                                                 }
                                                               else
                                                                 {
@@ -15421,7 +19359,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x0xx1110110xxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 234;
+                                                                  return 240;
                                                                 }
                                                             }
                                                           else
@@ -15432,7 +19370,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x0xx1110110xxxxxxxxxx
                                                                      frecpe.  */
-                                                                  return 205;
+                                                                  return 211;
                                                                 }
                                                               else
                                                                 {
@@ -15440,7 +19378,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x0xx1110110xxxxxxxxxx
                                                                      frsqrte.  */
-                                                                  return 252;
+                                                                  return 258;
                                                                 }
                                                             }
                                                         }
@@ -15454,7 +19392,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011100x1x1xx1110110xxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 187;
+                                                                  return 193;
                                                                 }
                                                               else
                                                                 {
@@ -15462,7 +19400,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x1xx1110110xxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 235;
+                                                                  return 241;
                                                                 }
                                                             }
                                                           else
@@ -15473,7 +19411,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x1xx1110110xxxxxxxxxx
                                                                      frecpe.  */
-                                                                  return 206;
+                                                                  return 212;
                                                                 }
                                                               else
                                                                 {
@@ -15481,7 +19419,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x1xx1110110xxxxxxxxxx
                                                                      frsqrte.  */
-                                                                  return 253;
+                                                                  return 259;
                                                                 }
                                                             }
                                                         }
@@ -15500,7 +19438,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx001110xx1xxxx0101110xxxxxxxxxx
                                                              abs.  */
-                                                          return 167;
+                                                          return 173;
                                                         }
                                                       else
                                                         {
@@ -15508,7 +19446,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx101110xx1xxxx0101110xxxxxxxxxx
                                                              neg.  */
-                                                          return 215;
+                                                          return 221;
                                                         }
                                                     }
                                                   else
@@ -15525,7 +19463,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011100x100xx1101110xxxxxxxxxx
                                                                          fcvtms.  */
-                                                                      return 182;
+                                                                      return 188;
                                                                     }
                                                                   else
                                                                     {
@@ -15533,7 +19471,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011100x100xx1101110xxxxxxxxxx
                                                                          fcvtmu.  */
-                                                                      return 230;
+                                                                      return 236;
                                                                     }
                                                                 }
                                                               else
@@ -15544,7 +19482,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011101x100xx1101110xxxxxxxxxx
                                                                          fcvtzs.  */
-                                                                      return 202;
+                                                                      return 208;
                                                                     }
                                                                   else
                                                                     {
@@ -15552,7 +19490,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011101x100xx1101110xxxxxxxxxx
                                                                          fcvtzu.  */
-                                                                      return 249;
+                                                                      return 255;
                                                                     }
                                                                 }
                                                             }
@@ -15562,7 +19500,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx01110xx110xx1101110xxxxxxxxxx
                                                                  addv.  */
-                                                              return 30;
+                                                              return 32;
                                                             }
                                                         }
                                                       else
@@ -15575,7 +19513,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011100x1x1xx1101110xxxxxxxxxx
                                                                      fcvtms.  */
-                                                                  return 183;
+                                                                  return 189;
                                                                 }
                                                               else
                                                                 {
@@ -15583,7 +19521,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011100x1x1xx1101110xxxxxxxxxx
                                                                      fcvtmu.  */
-                                                                  return 231;
+                                                                  return 237;
                                                                 }
                                                             }
                                                           else
@@ -15594,7 +19532,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0011101x1x1xx1101110xxxxxxxxxx
                                                                      fcvtzs.  */
-                                                                  return 203;
+                                                                  return 209;
                                                                 }
                                                               else
                                                                 {
@@ -15602,7 +19540,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1011101x1x1xx1101110xxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 250;
+                                                                  return 256;
                                                                 }
                                                             }
                                                         }
@@ -15622,7 +19560,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx001110xx100xx0111110xxxxxxxxxx
                                                                      fabs.  */
-                                                                  return 194;
+                                                                  return 200;
                                                                 }
                                                               else
                                                                 {
@@ -15630,7 +19568,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx101110xx100xx0111110xxxxxxxxxx
                                                                      fneg.  */
-                                                                  return 243;
+                                                                  return 249;
                                                                 }
                                                             }
                                                           else
@@ -15643,7 +19581,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011100x110xx0111110xxxxxxxxxx
                                                                          fmaxv.  */
-                                                                      return 37;
+                                                                      return 39;
                                                                     }
                                                                   else
                                                                     {
@@ -15651,7 +19589,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011100x110xx0111110xxxxxxxxxx
                                                                          fmaxv.  */
-                                                                      return 36;
+                                                                      return 38;
                                                                     }
                                                                 }
                                                               else
@@ -15662,7 +19600,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0011101x110xx0111110xxxxxxxxxx
                                                                          fminv.  */
-                                                                      return 41;
+                                                                      return 43;
                                                                     }
                                                                   else
                                                                     {
@@ -15670,7 +19608,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1011101x110xx0111110xxxxxxxxxx
                                                                          fminv.  */
-                                                                      return 40;
+                                                                      return 42;
                                                                     }
                                                                 }
                                                             }
@@ -15683,7 +19621,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx001110xx1x1xx0111110xxxxxxxxxx
                                                                  fabs.  */
-                                                              return 195;
+                                                              return 201;
                                                             }
                                                           else
                                                             {
@@ -15691,7 +19629,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx101110xx1x1xx0111110xxxxxxxxxx
                                                                  fneg.  */
-                                                              return 244;
+                                                              return 250;
                                                             }
                                                         }
                                                     }
@@ -15699,11 +19637,33 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx01110xx1x0xx1111110xxxxxxxxxx
-                                                             fsqrt.  */
-                                                          return 254;
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x0xx1111110xxxxxxxxxx
+                                                                     frint64z.  */
+                                                                  return 160;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x0xx1111110xxxxxxxxxx
+                                                                     frint64x.  */
+                                                                  return 161;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx011101x1x0xx1111110xxxxxxxxxx
+                                                                 fsqrt.  */
+                                                              return 260;
+                                                            }
                                                         }
                                                       else
                                                         {
@@ -15711,7 +19671,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx01110xx1x1xx1111110xxxxxxxxxx
                                                              fsqrt.  */
-                                                          return 255;
+                                                          return 261;
                                                         }
                                                     }
                                                 }
@@ -15737,7 +19697,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx100001xxxxxxxxxx
                                                              add.  */
-                                                          return 277;
+                                                          return 283;
                                                         }
                                                       else
                                                         {
@@ -15745,7 +19705,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              1x001110xx1xxxxx100001xxxxxxxxxx
                                                              sha512h2.  */
-                                                          return 2008;
+                                                          return 2354;
                                                         }
                                                     }
                                                   else
@@ -15754,7 +19714,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx100001xxxxxxxxxx
                                                          sub.  */
-                                                      return 329;
+                                                      return 335;
                                                     }
                                                 }
                                               else
@@ -15769,7 +19729,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  0x0011100x1xxxxx110001xxxxxxxxxx
                                                                  fmaxnm.  */
-                                                              return 285;
+                                                              return 291;
                                                             }
                                                           else
                                                             {
@@ -15777,7 +19737,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  1x0011100x1xxxxx110001xxxxxxxxxx
                                                                  sm3partw2.  */
-                                                              return 2021;
+                                                              return 2367;
                                                             }
                                                         }
                                                       else
@@ -15786,7 +19746,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011100x1xxxxx110001xxxxxxxxxx
                                                              fmaxnmp.  */
-                                                          return 336;
+                                                          return 342;
                                                         }
                                                     }
                                                   else
@@ -15797,7 +19757,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011101x1xxxxx110001xxxxxxxxxx
                                                              fminnm.  */
-                                                          return 301;
+                                                          return 307;
                                                         }
                                                       else
                                                         {
@@ -15805,7 +19765,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011101x1xxxxx110001xxxxxxxxxx
                                                              fminnmp.  */
-                                                          return 352;
+                                                          return 358;
                                                         }
                                                     }
                                                 }
@@ -15820,7 +19780,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx001110xx1xxxxx101001xxxxxxxxxx
                                                          smaxp.  */
-                                                      return 281;
+                                                      return 287;
                                                     }
                                                   else
                                                     {
@@ -15828,7 +19788,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx101001xxxxxxxxxx
                                                          umaxp.  */
-                                                      return 333;
+                                                      return 339;
                                                     }
                                                 }
                                               else
@@ -15841,7 +19801,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011100x1xxxxx111001xxxxxxxxxx
                                                              fcmeq.  */
-                                                          return 293;
+                                                          return 299;
                                                         }
                                                       else
                                                         {
@@ -15849,7 +19809,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011100x1xxxxx111001xxxxxxxxxx
                                                              fcmge.  */
-                                                          return 342;
+                                                          return 348;
                                                         }
                                                     }
                                                   else
@@ -15858,7 +19818,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx011101x1xxxxx111001xxxxxxxxxx
                                                          fcmgt.  */
-                                                      return 356;
+                                                      return 362;
                                                     }
                                                 }
                                             }
@@ -15875,7 +19835,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx001110xx1xxxxx100101xxxxxxxxxx
                                                          mla.  */
-                                                      return 279;
+                                                      return 285;
                                                     }
                                                   else
                                                     {
@@ -15883,7 +19843,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx100101xxxxxxxxxx
                                                          mls.  */
-                                                      return 331;
+                                                      return 337;
                                                     }
                                                 }
                                               else
@@ -15896,7 +19856,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011100x1xxxxx110101xxxxxxxxxx
                                                              fadd.  */
-                                                          return 289;
+                                                          return 295;
                                                         }
                                                       else
                                                         {
@@ -15904,7 +19864,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011100x1xxxxx110101xxxxxxxxxx
                                                              faddp.  */
-                                                          return 338;
+                                                          return 344;
                                                         }
                                                     }
                                                   else
@@ -15915,7 +19875,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011101x1xxxxx110101xxxxxxxxxx
                                                              fsub.  */
-                                                          return 305;
+                                                          return 311;
                                                         }
                                                       else
                                                         {
@@ -15923,7 +19883,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011101x1xxxxx110101xxxxxxxxxx
                                                              fabd.  */
-                                                          return 354;
+                                                          return 360;
                                                         }
                                                     }
                                                 }
@@ -15938,7 +19898,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx001110xx1xxxxx101101xxxxxxxxxx
                                                          sqdmulh.  */
-                                                      return 283;
+                                                      return 289;
                                                     }
                                                   else
                                                     {
@@ -15946,7 +19906,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx101101xxxxxxxxxx
                                                          sqrdmulh.  */
-                                                      return 335;
+                                                      return 341;
                                                     }
                                                 }
                                               else
@@ -15959,7 +19919,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011100x1xxxxx111101xxxxxxxxxx
                                                              fmax.  */
-                                                          return 295;
+                                                          return 301;
                                                         }
                                                       else
                                                         {
@@ -15967,7 +19927,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011100x1xxxxx111101xxxxxxxxxx
                                                              fmaxp.  */
-                                                          return 346;
+                                                          return 352;
                                                         }
                                                     }
                                                   else
@@ -15978,7 +19938,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011101x1xxxxx111101xxxxxxxxxx
                                                              fmin.  */
-                                                          return 307;
+                                                          return 313;
                                                         }
                                                       else
                                                         {
@@ -15986,7 +19946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011101x1xxxxx111101xxxxxxxxxx
                                                              fminp.  */
-                                                          return 360;
+                                                          return 366;
                                                         }
                                                     }
                                                 }
@@ -16009,7 +19969,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              0x001110xx1xxxxx100011xxxxxxxxxx
                                                              cmtst.  */
-                                                          return 278;
+                                                          return 284;
                                                         }
                                                       else
                                                         {
@@ -16017,7 +19977,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              1x001110xx1xxxxx100011xxxxxxxxxx
                                                              rax1.  */
-                                                          return 2012;
+                                                          return 2358;
                                                         }
                                                     }
                                                   else
@@ -16026,7 +19986,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx100011xxxxxxxxxx
                                                          cmeq.  */
-                                                      return 330;
+                                                      return 336;
                                                     }
                                                 }
                                               else
@@ -16039,7 +19999,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011100x1xxxxx110011xxxxxxxxxx
                                                              fmla.  */
-                                                          return 287;
+                                                          return 293;
                                                         }
                                                       else
                                                         {
@@ -16049,7 +20009,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x01011100x1xxxxx110011xxxxxxxxxx
                                                                  fmlal2.  */
-                                                              return 2026;
+                                                              return 2372;
                                                             }
                                                           else
                                                             {
@@ -16057,7 +20017,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x11011100x1xxxxx110011xxxxxxxxxx
                                                                  fmlal2.  */
-                                                              return 2030;
+                                                              return 2376;
                                                             }
                                                         }
                                                     }
@@ -16069,7 +20029,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011101x1xxxxx110011xxxxxxxxxx
                                                              fmls.  */
-                                                          return 303;
+                                                          return 309;
                                                         }
                                                       else
                                                         {
@@ -16079,7 +20039,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x01011101x1xxxxx110011xxxxxxxxxx
                                                                  fmlsl2.  */
-                                                              return 2027;
+                                                              return 2373;
                                                             }
                                                           else
                                                             {
@@ -16087,7 +20047,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x11011101x1xxxxx110011xxxxxxxxxx
                                                                  fmlsl2.  */
-                                                              return 2031;
+                                                              return 2377;
                                                             }
                                                         }
                                                     }
@@ -16103,7 +20063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx001110xx1xxxxx101011xxxxxxxxxx
                                                          sminp.  */
-                                                      return 282;
+                                                      return 288;
                                                     }
                                                   else
                                                     {
@@ -16111,7 +20071,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx101011xxxxxxxxxx
                                                          uminp.  */
-                                                      return 334;
+                                                      return 340;
                                                     }
                                                 }
                                               else
@@ -16126,7 +20086,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x00011100x1xxxxx111011xxxxxxxxxx
                                                                  fmlal.  */
-                                                              return 2024;
+                                                              return 2370;
                                                             }
                                                           else
                                                             {
@@ -16134,7 +20094,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10011100x1xxxxx111011xxxxxxxxxx
                                                                  fmlal.  */
-                                                              return 2028;
+                                                              return 2374;
                                                             }
                                                         }
                                                       else
@@ -16143,7 +20103,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011100x1xxxxx111011xxxxxxxxxx
                                                              facge.  */
-                                                          return 344;
+                                                          return 350;
                                                         }
                                                     }
                                                   else
@@ -16156,7 +20116,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x00011101x1xxxxx111011xxxxxxxxxx
                                                                  fmlsl.  */
-                                                              return 2025;
+                                                              return 2371;
                                                             }
                                                           else
                                                             {
@@ -16164,7 +20124,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  x10011101x1xxxxx111011xxxxxxxxxx
                                                                  fmlsl.  */
-                                                              return 2029;
+                                                              return 2375;
                                                             }
                                                         }
                                                       else
@@ -16173,7 +20133,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011101x1xxxxx111011xxxxxxxxxx
                                                              facgt.  */
-                                                          return 358;
+                                                          return 364;
                                                         }
                                                     }
                                                 }
@@ -16191,7 +20151,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx001110xx1xxxxx100111xxxxxxxxxx
                                                          mul.  */
-                                                      return 280;
+                                                      return 286;
                                                     }
                                                   else
                                                     {
@@ -16199,7 +20159,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx100111xxxxxxxxxx
                                                          pmul.  */
-                                                      return 332;
+                                                      return 338;
                                                     }
                                                 }
                                               else
@@ -16210,7 +20170,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx001110xx1xxxxx110111xxxxxxxxxx
                                                          fmulx.  */
-                                                      return 291;
+                                                      return 297;
                                                     }
                                                   else
                                                     {
@@ -16218,7 +20178,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx101110xx1xxxxx110111xxxxxxxxxx
                                                          fmul.  */
-                                                      return 340;
+                                                      return 346;
                                                     }
                                                 }
                                             }
@@ -16230,7 +20190,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx01110xx1xxxxx101111xxxxxxxxxx
                                                      addp.  */
-                                                  return 284;
+                                                  return 290;
                                                 }
                                               else
                                                 {
@@ -16242,7 +20202,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx0011100x1xxxxx111111xxxxxxxxxx
                                                              frecps.  */
-                                                          return 297;
+                                                          return 303;
                                                         }
                                                       else
                                                         {
@@ -16250,7 +20210,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx1011100x1xxxxx111111xxxxxxxxxx
                                                              fdiv.  */
-                                                          return 348;
+                                                          return 354;
                                                         }
                                                     }
                                                   else
@@ -16259,7 +20219,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx011101x1xxxxx111111xxxxxxxxxx
                                                          frsqrts.  */
-                                                      return 309;
+                                                      return 315;
                                                     }
                                                 }
                                             }
@@ -16294,7 +20254,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx100000x00000xxxxxxxxxx
                                                                      fcvtns.  */
-                                                                  return 756;
+                                                                  return 768;
                                                                 }
                                                               else
                                                                 {
@@ -16302,7 +20262,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx110000x00000xxxxxxxxxx
                                                                      fcvtms.  */
-                                                                  return 776;
+                                                                  return 788;
                                                                 }
                                                             }
                                                           else
@@ -16313,7 +20273,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx101000x00000xxxxxxxxxx
                                                                      fcvtps.  */
-                                                                  return 772;
+                                                                  return 784;
                                                                 }
                                                               else
                                                                 {
@@ -16321,7 +20281,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx111000x00000xxxxxxxxxx
                                                                      fcvtzs.  */
-                                                                  return 780;
+                                                                  return 792;
                                                                 }
                                                             }
                                                         }
@@ -16331,7 +20291,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1xx100x00000xxxxxxxxxx
                                                              fcvtas.  */
-                                                          return 764;
+                                                          return 776;
                                                         }
                                                     }
                                                   else
@@ -16342,7 +20302,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1xx010x00000xxxxxxxxxx
                                                              scvtf.  */
-                                                          return 760;
+                                                          return 772;
                                                         }
                                                       else
                                                         {
@@ -16352,7 +20312,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1x0110x00000xxxxxxxxxx
                                                                  fmov.  */
-                                                              return 768;
+                                                              return 780;
                                                             }
                                                           else
                                                             {
@@ -16362,7 +20322,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx101110x00000xxxxxxxxxx
                                                                      fmov.  */
-                                                                  return 784;
+                                                                  return 796;
                                                                 }
                                                               else
                                                                 {
@@ -16370,7 +20330,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx111110x00000xxxxxxxxxx
                                                                      fjcvtzs.  */
-                                                                  return 786;
+                                                                  return 798;
                                                                 }
                                                             }
                                                         }
@@ -16390,7 +20350,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx100001x00000xxxxxxxxxx
                                                                      fcvtnu.  */
-                                                                  return 758;
+                                                                  return 770;
                                                                 }
                                                               else
                                                                 {
@@ -16398,7 +20358,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx110001x00000xxxxxxxxxx
                                                                      fcvtmu.  */
-                                                                  return 778;
+                                                                  return 790;
                                                                 }
                                                             }
                                                           else
@@ -16409,7 +20369,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx101001x00000xxxxxxxxxx
                                                                      fcvtpu.  */
-                                                                  return 774;
+                                                                  return 786;
                                                                 }
                                                               else
                                                                 {
@@ -16417,7 +20377,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xxx11110xx111001x00000xxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 782;
+                                                                  return 794;
                                                                 }
                                                             }
                                                         }
@@ -16427,7 +20387,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1xx101x00000xxxxxxxxxx
                                                              fcvtau.  */
-                                                          return 766;
+                                                          return 778;
                                                         }
                                                     }
                                                   else
@@ -16438,7 +20398,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1xx011x00000xxxxxxxxxx
                                                              ucvtf.  */
-                                                          return 762;
+                                                          return 774;
                                                         }
                                                       else
                                                         {
@@ -16448,7 +20408,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1x0111x00000xxxxxxxxxx
                                                                  fmov.  */
-                                                              return 770;
+                                                              return 782;
                                                             }
                                                           else
                                                             {
@@ -16456,7 +20416,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1x1111x00000xxxxxxxxxx
                                                                  fmov.  */
-                                                              return 785;
+                                                              return 797;
                                                             }
                                                         }
                                                     }
@@ -16472,11 +20432,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 18) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx000010000xxxxxxxxxx
-                                                                 fmov.  */
-                                                              return 799;
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x0000010000xxxxxxxxxx
+                                                                     fmov.  */
+                                                                  return 817;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x1000010000xxxxxxxxxx
+                                                                     frint32z.  */
+                                                                  return 813;
+                                                                }
                                                             }
                                                           else
                                                             {
@@ -16484,18 +20455,29 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1xx100010000xxxxxxxxxx
                                                                  frintn.  */
-                                                              return 808;
+                                                              return 826;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 18) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx001010000xxxxxxxxxx
-                                                                 fneg.  */
-                                                              return 803;
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x0001010000xxxxxxxxxx
+                                                                     fneg.  */
+                                                                  return 821;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x1001010000xxxxxxxxxx
+                                                                     frint64z.  */
+                                                                  return 815;
+                                                                }
                                                             }
                                                           else
                                                             {
@@ -16503,7 +20485,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1xx101010000xxxxxxxxxx
                                                                  frintm.  */
-                                                              return 812;
+                                                              return 830;
                                                             }
                                                         }
                                                     }
@@ -16513,11 +20495,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           if (((word >> 18) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx000110000xxxxxxxxxx
-                                                                 fabs.  */
-                                                              return 801;
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x0000110000xxxxxxxxxx
+                                                                     fabs.  */
+                                                                  return 819;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x1000110000xxxxxxxxxx
+                                                                     frint32x.  */
+                                                                  return 814;
+                                                                }
                                                             }
                                                           else
                                                             {
@@ -16525,18 +20518,29 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1xx100110000xxxxxxxxxx
                                                                  frintp.  */
-                                                              return 810;
+                                                              return 828;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           if (((word >> 18) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxx11110xx1xx001110000xxxxxxxxxx
-                                                                 fsqrt.  */
-                                                              return 805;
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x0001110000xxxxxxxxxx
+                                                                     fsqrt.  */
+                                                                  return 823;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx1x1001110000xxxxxxxxxx
+                                                                     frint64x.  */
+                                                                  return 816;
+                                                                }
                                                             }
                                                           else
                                                             {
@@ -16544,7 +20548,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1xx101110000xxxxxxxxxx
                                                                  frintz.  */
-                                                              return 814;
+                                                              return 832;
                                                             }
                                                         }
                                                     }
@@ -16557,7 +20561,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11110xx1xx01xx10000xxxxxxxxxx
                                                          fcvt.  */
-                                                      return 807;
+                                                      return 825;
                                                     }
                                                   else
                                                     {
@@ -16569,7 +20573,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1xx110010000xxxxxxxxxx
                                                                  frinta.  */
-                                                              return 816;
+                                                              return 834;
                                                             }
                                                           else
                                                             {
@@ -16577,7 +20581,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx1xx111010000xxxxxxxxxx
                                                                  frintx.  */
-                                                              return 818;
+                                                              return 836;
                                                             }
                                                         }
                                                       else
@@ -16586,7 +20590,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1xx11x110000xxxxxxxxxx
                                                              frinti.  */
-                                                          return 820;
+                                                          return 838;
                                                         }
                                                     }
                                                 }
@@ -16602,7 +20606,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11110xx1xxxxxxx1000xxxxx00xxx
                                                      fcmp.  */
-                                                  return 791;
+                                                  return 803;
                                                 }
                                               else
                                                 {
@@ -16610,7 +20614,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11110xx1xxxxxxx1000xxxxx10xxx
                                                      fcmpe.  */
-                                                  return 793;
+                                                  return 805;
                                                 }
                                             }
                                           else
@@ -16621,7 +20625,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11110xx1xxxxxxx1000xxxxx01xxx
                                                      fcmp.  */
-                                                  return 795;
+                                                  return 807;
                                                 }
                                               else
                                                 {
@@ -16629,7 +20633,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11110xx1xxxxxxx1000xxxxx11xxx
                                                      fcmpe.  */
-                                                  return 797;
+                                                  return 809;
                                                 }
                                             }
                                         }
@@ -16642,7 +20646,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0x11110xx1xxxxxxxx100xxxxxxxxxx
                                              fmov.  */
-                                          return 848;
+                                          return 866;
                                         }
                                       else
                                         {
@@ -16654,7 +20658,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1x11110xx1xxxxxx00100xxxxxxxxxx
                                                      sqdmlal.  */
-                                                  return 416;
+                                                  return 422;
                                                 }
                                               else
                                                 {
@@ -16662,7 +20666,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1x11110xx1xxxxxx10100xxxxxxxxxx
                                                      sqdmull.  */
-                                                  return 418;
+                                                  return 424;
                                                 }
                                             }
                                           else
@@ -16671,7 +20675,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x11110xx1xxxxxxx1100xxxxxxxxxx
                                                  sqdmlsl.  */
-                                              return 417;
+                                              return 423;
                                             }
                                         }
                                     }
@@ -16692,7 +20696,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x11110xx1xxxxx000010xxxxxxxxxx
                                                          fmul.  */
-                                                      return 822;
+                                                      return 840;
                                                     }
                                                   else
                                                     {
@@ -16700,7 +20704,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11110xx1xxxxx000010xxxxxxxxxx
                                                          sha1h.  */
-                                                      return 669;
+                                                      return 675;
                                                     }
                                                 }
                                               else
@@ -16713,7 +20717,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0011110xx1xxxxx100010xxxxxxxxxx
                                                              fnmul.  */
-                                                          return 838;
+                                                          return 856;
                                                         }
                                                       else
                                                         {
@@ -16721,7 +20725,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx100010xxxxxxxxxx
                                                              cmgt.  */
-                                                          return 476;
+                                                          return 482;
                                                         }
                                                     }
                                                   else
@@ -16730,7 +20734,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx100010xxxxxxxxxx
                                                          cmge.  */
-                                                      return 505;
+                                                      return 511;
                                                     }
                                                 }
                                             }
@@ -16746,7 +20750,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0011110xx1xxxxx010010xxxxxxxxxx
                                                              fmax.  */
-                                                          return 830;
+                                                          return 848;
                                                         }
                                                       else
                                                         {
@@ -16754,7 +20758,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx010010xxxxxxxxxx
                                                              sqxtn.  */
-                                                          return 480;
+                                                          return 486;
                                                         }
                                                     }
                                                   else
@@ -16763,7 +20767,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx010010xxxxxxxxxx
                                                          uqxtn.  */
-                                                      return 509;
+                                                      return 515;
                                                     }
                                                 }
                                               else
@@ -16780,7 +20784,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx011110xx100xx0110010xxxxxxxxxx
                                                                      fcmgt.  */
-                                                                  return 489;
+                                                                  return 495;
                                                                 }
                                                               else
                                                                 {
@@ -16788,7 +20792,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx111110xx100xx0110010xxxxxxxxxx
                                                                      fcmge.  */
-                                                                  return 519;
+                                                                  return 525;
                                                                 }
                                                             }
                                                           else
@@ -16801,7 +20805,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0111100x110xx0110010xxxxxxxxxx
                                                                          fmaxnmp.  */
-                                                                      return 533;
+                                                                      return 539;
                                                                     }
                                                                   else
                                                                     {
@@ -16809,7 +20813,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1111100x110xx0110010xxxxxxxxxx
                                                                          fmaxnmp.  */
-                                                                      return 532;
+                                                                      return 538;
                                                                     }
                                                                 }
                                                               else
@@ -16820,7 +20824,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0111101x110xx0110010xxxxxxxxxx
                                                                          fminnmp.  */
-                                                                      return 539;
+                                                                      return 545;
                                                                     }
                                                                   else
                                                                     {
@@ -16828,7 +20832,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1111101x110xx0110010xxxxxxxxxx
                                                                          fminnmp.  */
-                                                                      return 538;
+                                                                      return 544;
                                                                     }
                                                                 }
                                                             }
@@ -16841,7 +20845,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx011110xx1x1xx0110010xxxxxxxxxx
                                                                  fcmgt.  */
-                                                              return 490;
+                                                              return 496;
                                                             }
                                                           else
                                                             {
@@ -16849,7 +20853,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx111110xx1x1xx0110010xxxxxxxxxx
                                                                  fcmge.  */
-                                                              return 520;
+                                                              return 526;
                                                             }
                                                         }
                                                     }
@@ -16863,7 +20867,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx011110xx1x0xx1110010xxxxxxxxxx
                                                                  fcvtas.  */
-                                                              return 485;
+                                                              return 491;
                                                             }
                                                           else
                                                             {
@@ -16871,7 +20875,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx111110xx1x0xx1110010xxxxxxxxxx
                                                                  fcvtau.  */
-                                                              return 515;
+                                                              return 521;
                                                             }
                                                         }
                                                       else
@@ -16882,7 +20886,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx011110xx1x1xx1110010xxxxxxxxxx
                                                                  fcvtas.  */
-                                                              return 486;
+                                                              return 492;
                                                             }
                                                           else
                                                             {
@@ -16890,7 +20894,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx111110xx1x1xx1110010xxxxxxxxxx
                                                                  fcvtau.  */
-                                                              return 516;
+                                                              return 522;
                                                             }
                                                         }
                                                     }
@@ -16911,7 +20915,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0011110xx1xxxxx001010xxxxxxxxxx
                                                              fadd.  */
-                                                          return 826;
+                                                          return 844;
                                                         }
                                                       else
                                                         {
@@ -16919,7 +20923,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx001010xxxxxxxxxx
                                                              sha256su0.  */
-                                                          return 671;
+                                                          return 677;
                                                         }
                                                     }
                                                   else
@@ -16928,7 +20932,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx001010xxxxxxxxxx
                                                          sqxtun.  */
-                                                      return 508;
+                                                      return 514;
                                                     }
                                                 }
                                               else
@@ -16939,7 +20943,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11110xx1xxxx0101010xxxxxxxxxx
                                                          cmlt.  */
-                                                      return 478;
+                                                      return 484;
                                                     }
                                                   else
                                                     {
@@ -16953,7 +20957,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111100x1x0xx1101010xxxxxxxxxx
                                                                      fcvtns.  */
-                                                                  return 481;
+                                                                  return 487;
                                                                 }
                                                               else
                                                                 {
@@ -16961,7 +20965,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111100x1x0xx1101010xxxxxxxxxx
                                                                      fcvtnu.  */
-                                                                  return 511;
+                                                                  return 517;
                                                                 }
                                                             }
                                                           else
@@ -16972,7 +20976,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111101x1x0xx1101010xxxxxxxxxx
                                                                      fcvtps.  */
-                                                                  return 495;
+                                                                  return 501;
                                                                 }
                                                               else
                                                                 {
@@ -16980,7 +20984,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111101x1x0xx1101010xxxxxxxxxx
                                                                      fcvtpu.  */
-                                                                  return 523;
+                                                                  return 529;
                                                                 }
                                                             }
                                                         }
@@ -16994,7 +20998,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111100x1x1xx1101010xxxxxxxxxx
                                                                      fcvtns.  */
-                                                                  return 482;
+                                                                  return 488;
                                                                 }
                                                               else
                                                                 {
@@ -17002,7 +21006,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111100x1x1xx1101010xxxxxxxxxx
                                                                      fcvtnu.  */
-                                                                  return 512;
+                                                                  return 518;
                                                                 }
                                                             }
                                                           else
@@ -17013,7 +21017,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111101x1x1xx1101010xxxxxxxxxx
                                                                      fcvtps.  */
-                                                                  return 496;
+                                                                  return 502;
                                                                 }
                                                               else
                                                                 {
@@ -17021,7 +21025,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111101x1x1xx1101010xxxxxxxxxx
                                                                      fcvtpu.  */
-                                                                  return 524;
+                                                                  return 530;
                                                                 }
                                                             }
                                                         }
@@ -17038,7 +21042,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx011110xx1xxxxx011010xxxxxxxxxx
                                                          fmaxnm.  */
-                                                      return 834;
+                                                      return 852;
                                                     }
                                                   else
                                                     {
@@ -17046,7 +21050,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx011010xxxxxxxxxx
                                                          fcvtxn.  */
-                                                      return 510;
+                                                      return 516;
                                                     }
                                                 }
                                               else
@@ -17057,7 +21061,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11110xx1x0xxx111010xxxxxxxxxx
                                                          fcmlt.  */
-                                                      return 493;
+                                                      return 499;
                                                     }
                                                   else
                                                     {
@@ -17065,7 +21069,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xxx11110xx1x1xxx111010xxxxxxxxxx
                                                          fcmlt.  */
-                                                      return 494;
+                                                      return 500;
                                                     }
                                                 }
                                             }
@@ -17085,7 +21089,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x0x11110xx1xxxxx000110xxxxxxxxxx
                                                          fdiv.  */
-                                                      return 824;
+                                                      return 842;
                                                     }
                                                   else
                                                     {
@@ -17093,7 +21097,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1x11110xx1xxxxx000110xxxxxxxxxx
                                                          sha1su1.  */
-                                                      return 670;
+                                                      return 676;
                                                     }
                                                 }
                                               else
@@ -17104,7 +21108,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx011110xx1xxxxx100110xxxxxxxxxx
                                                          cmeq.  */
-                                                      return 477;
+                                                      return 483;
                                                     }
                                                   else
                                                     {
@@ -17112,7 +21116,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx100110xxxxxxxxxx
                                                          cmle.  */
-                                                      return 506;
+                                                      return 512;
                                                     }
                                                 }
                                             }
@@ -17124,7 +21128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xxx11110xx1xxxxx010110xxxxxxxxxx
                                                      fmin.  */
-                                                  return 832;
+                                                  return 850;
                                                 }
                                               else
                                                 {
@@ -17140,7 +21144,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx011110xx100xx0110110xxxxxxxxxx
                                                                      fcmeq.  */
-                                                                  return 491;
+                                                                  return 497;
                                                                 }
                                                               else
                                                                 {
@@ -17148,7 +21152,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx111110xx100xx0110110xxxxxxxxxx
                                                                      fcmle.  */
-                                                                  return 521;
+                                                                  return 527;
                                                                 }
                                                             }
                                                           else
@@ -17159,7 +21163,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx011110xx110xx0110110xxxxxxxxxx
                                                                      faddp.  */
-                                                                  return 535;
+                                                                  return 541;
                                                                 }
                                                               else
                                                                 {
@@ -17167,7 +21171,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx111110xx110xx0110110xxxxxxxxxx
                                                                      faddp.  */
-                                                                  return 534;
+                                                                  return 540;
                                                                 }
                                                             }
                                                         }
@@ -17179,7 +21183,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx011110xx1x1xx0110110xxxxxxxxxx
                                                                  fcmeq.  */
-                                                              return 492;
+                                                              return 498;
                                                             }
                                                           else
                                                             {
@@ -17187,7 +21191,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx111110xx1x1xx0110110xxxxxxxxxx
                                                                  fcmle.  */
-                                                              return 522;
+                                                              return 528;
                                                             }
                                                         }
                                                     }
@@ -17203,7 +21207,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111100x1x0xx1110110xxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 487;
+                                                                  return 493;
                                                                 }
                                                               else
                                                                 {
@@ -17211,7 +21215,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111100x1x0xx1110110xxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 517;
+                                                                  return 523;
                                                                 }
                                                             }
                                                           else
@@ -17222,7 +21226,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111101x1x0xx1110110xxxxxxxxxx
                                                                      frecpe.  */
-                                                                  return 499;
+                                                                  return 505;
                                                                 }
                                                               else
                                                                 {
@@ -17230,7 +21234,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111101x1x0xx1110110xxxxxxxxxx
                                                                      frsqrte.  */
-                                                                  return 527;
+                                                                  return 533;
                                                                 }
                                                             }
                                                         }
@@ -17244,7 +21248,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111100x1x1xx1110110xxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 488;
+                                                                  return 494;
                                                                 }
                                                               else
                                                                 {
@@ -17252,7 +21256,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111100x1x1xx1110110xxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 518;
+                                                                  return 524;
                                                                 }
                                                             }
                                                           else
@@ -17263,7 +21267,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111101x1x1xx1110110xxxxxxxxxx
                                                                      frecpe.  */
-                                                                  return 500;
+                                                                  return 506;
                                                                 }
                                                               else
                                                                 {
@@ -17271,7 +21275,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111101x1x1xx1110110xxxxxxxxxx
                                                                      frsqrte.  */
-                                                                  return 528;
+                                                                  return 534;
                                                                 }
                                                             }
                                                         }
@@ -17293,7 +21297,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0011110xx1xxxxx001110xxxxxxxxxx
                                                              fsub.  */
-                                                          return 828;
+                                                          return 846;
                                                         }
                                                       else
                                                         {
@@ -17301,7 +21305,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx001110xxxxxxxxxx
                                                              suqadd.  */
-                                                          return 474;
+                                                          return 480;
                                                         }
                                                     }
                                                   else
@@ -17310,7 +21314,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx001110xxxxxxxxxx
                                                          usqadd.  */
-                                                      return 503;
+                                                      return 509;
                                                     }
                                                 }
                                               else
@@ -17323,7 +21327,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx011110xx1xxxx0101110xxxxxxxxxx
                                                              abs.  */
-                                                          return 479;
+                                                          return 485;
                                                         }
                                                       else
                                                         {
@@ -17331,7 +21335,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xx111110xx1xxxx0101110xxxxxxxxxx
                                                              neg.  */
-                                                          return 507;
+                                                          return 513;
                                                         }
                                                     }
                                                   else
@@ -17348,7 +21352,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0111100x100xx1101110xxxxxxxxxx
                                                                          fcvtms.  */
-                                                                      return 483;
+                                                                      return 489;
                                                                     }
                                                                   else
                                                                     {
@@ -17356,7 +21360,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1111100x100xx1101110xxxxxxxxxx
                                                                          fcvtmu.  */
-                                                                      return 513;
+                                                                      return 519;
                                                                     }
                                                                 }
                                                               else
@@ -17367,7 +21371,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx0111101x100xx1101110xxxxxxxxxx
                                                                          fcvtzs.  */
-                                                                      return 497;
+                                                                      return 503;
                                                                     }
                                                                   else
                                                                     {
@@ -17375,7 +21379,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                          10987654321098765432109876543210
                                                                          xx1111101x100xx1101110xxxxxxxxxx
                                                                          fcvtzu.  */
-                                                                      return 525;
+                                                                      return 531;
                                                                     }
                                                                 }
                                                             }
@@ -17385,7 +21389,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xxx11110xx110xx1101110xxxxxxxxxx
                                                                  addp.  */
-                                                              return 531;
+                                                              return 537;
                                                             }
                                                         }
                                                       else
@@ -17398,7 +21402,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111100x1x1xx1101110xxxxxxxxxx
                                                                      fcvtms.  */
-                                                                  return 484;
+                                                                  return 490;
                                                                 }
                                                               else
                                                                 {
@@ -17406,7 +21410,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111100x1x1xx1101110xxxxxxxxxx
                                                                      fcvtmu.  */
-                                                                  return 514;
+                                                                  return 520;
                                                                 }
                                                             }
                                                           else
@@ -17417,7 +21421,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx0111101x1x1xx1101110xxxxxxxxxx
                                                                      fcvtzs.  */
-                                                                  return 498;
+                                                                  return 504;
                                                                 }
                                                               else
                                                                 {
@@ -17425,7 +21429,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                      10987654321098765432109876543210
                                                                      xx1111101x1x1xx1101110xxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 526;
+                                                                  return 532;
                                                                 }
                                                             }
                                                         }
@@ -17444,7 +21448,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x0011110xx1xxxxx011110xxxxxxxxxx
                                                              fminnm.  */
-                                                          return 836;
+                                                          return 854;
                                                         }
                                                       else
                                                         {
@@ -17452,7 +21456,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx011110xxxxxxxxxx
                                                              sqabs.  */
-                                                          return 475;
+                                                          return 481;
                                                         }
                                                     }
                                                   else
@@ -17461,7 +21465,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx011110xxxxxxxxxx
                                                          sqneg.  */
-                                                      return 504;
+                                                      return 510;
                                                     }
                                                 }
                                               else
@@ -17476,7 +21480,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx0111100x1xxxx0111110xxxxxxxxxx
                                                                  fmaxp.  */
-                                                              return 537;
+                                                              return 543;
                                                             }
                                                           else
                                                             {
@@ -17484,7 +21488,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx1111100x1xxxx0111110xxxxxxxxxx
                                                                  fmaxp.  */
-                                                              return 536;
+                                                              return 542;
                                                             }
                                                         }
                                                       else
@@ -17495,7 +21499,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx0111101x1xxxx0111110xxxxxxxxxx
                                                                  fminp.  */
-                                                              return 541;
+                                                              return 547;
                                                             }
                                                           else
                                                             {
@@ -17503,7 +21507,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                  10987654321098765432109876543210
                                                                  xx1111101x1xxxx0111110xxxxxxxxxx
                                                                  fminp.  */
-                                                              return 540;
+                                                              return 546;
                                                             }
                                                         }
                                                     }
@@ -17515,7 +21519,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1x0xx1111110xxxxxxxxxx
                                                              frecpx.  */
-                                                          return 501;
+                                                          return 507;
                                                         }
                                                       else
                                                         {
@@ -17523,7 +21527,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              xxx11110xx1x1xx1111110xxxxxxxxxx
                                                              frecpx.  */
-                                                          return 502;
+                                                          return 508;
                                                         }
                                                     }
                                                 }
@@ -17546,7 +21550,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0011110xx1xxxxxxxxx01xxxxx0xxxx
                                                  fccmp.  */
-                                              return 787;
+                                              return 799;
                                             }
                                           else
                                             {
@@ -17554,7 +21558,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0011110xx1xxxxxxxxx01xxxxx1xxxx
                                                  fccmpe.  */
-                                              return 789;
+                                              return 801;
                                             }
                                         }
                                       else
@@ -17569,7 +21573,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxxx00001xxxxxxxxxx
                                                          add.  */
-                                                      return 559;
+                                                      return 565;
                                                     }
                                                   else
                                                     {
@@ -17577,7 +21581,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxxx10001xxxxxxxxxx
                                                          sshl.  */
-                                                      return 557;
+                                                      return 563;
                                                     }
                                                 }
                                               else
@@ -17586,7 +21590,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx1xxxxxxx1001xxxxxxxxxx
                                                      fcmeq.  */
-                                                  return 549;
+                                                  return 555;
                                                 }
                                             }
                                           else
@@ -17597,7 +21601,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx1xxxxxxx0101xxxxxxxxxx
                                                      srshl.  */
-                                                  return 558;
+                                                  return 564;
                                                 }
                                               else
                                                 {
@@ -17607,7 +21611,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxx0x1101xxxxxxxxxx
                                                          cmgt.  */
-                                                      return 555;
+                                                      return 561;
                                                     }
                                                   else
                                                     {
@@ -17615,7 +21619,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxx1x1101xxxxxxxxxx
                                                          sqdmulh.  */
-                                                      return 546;
+                                                      return 552;
                                                     }
                                                 }
                                             }
@@ -17633,7 +21637,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxxx00001xxxxxxxxxx
                                                      sub.  */
-                                                  return 580;
+                                                  return 586;
                                                 }
                                               else
                                                 {
@@ -17641,7 +21645,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxxx10001xxxxxxxxxx
                                                      ushl.  */
-                                                  return 578;
+                                                  return 584;
                                                 }
                                             }
                                           else
@@ -17652,7 +21656,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx1111100x1xxxxxxx1001xxxxxxxxxx
                                                      fcmge.  */
-                                                  return 566;
+                                                  return 572;
                                                 }
                                               else
                                                 {
@@ -17660,7 +21664,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx1111101x1xxxxxxx1001xxxxxxxxxx
                                                      fcmgt.  */
-                                                  return 572;
+                                                  return 578;
                                                 }
                                             }
                                         }
@@ -17674,7 +21678,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxx0x0101xxxxxxxxxx
                                                      urshl.  */
-                                                  return 579;
+                                                  return 585;
                                                 }
                                               else
                                                 {
@@ -17682,7 +21686,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxx1x0101xxxxxxxxxx
                                                      fabd.  */
-                                                  return 570;
+                                                  return 576;
                                                 }
                                             }
                                           else
@@ -17693,7 +21697,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxx0x1101xxxxxxxxxx
                                                      cmhi.  */
-                                                  return 576;
+                                                  return 582;
                                                 }
                                               else
                                                 {
@@ -17701,7 +21705,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxx1x1101xxxxxxxxxx
                                                      sqrdmulh.  */
-                                                  return 565;
+                                                  return 571;
                                                 }
                                             }
                                         }
@@ -17717,7 +21721,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x0011110xx1xxxxxxxxx11xxxxxxxxxx
                                              fcsel.  */
-                                          return 850;
+                                          return 868;
                                         }
                                       else
                                         {
@@ -17733,7 +21737,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx000011xxxxxxxxxx
                                                              sqadd.  */
-                                                          return 542;
+                                                          return 548;
                                                         }
                                                       else
                                                         {
@@ -17741,7 +21745,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x1011110xx1xxxxx100011xxxxxxxxxx
                                                              cmtst.  */
-                                                          return 560;
+                                                          return 566;
                                                         }
                                                     }
                                                   else
@@ -17750,7 +21754,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxxx10011xxxxxxxxxx
                                                          sqshl.  */
-                                                      return 544;
+                                                      return 550;
                                                     }
                                                 }
                                               else
@@ -17759,7 +21763,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011110xx1xxxxxxx1011xxxxxxxxxx
                                                      sqsub.  */
-                                                  return 543;
+                                                  return 549;
                                                 }
                                             }
                                           else
@@ -17772,7 +21776,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxx0x0111xxxxxxxxxx
                                                          sqrshl.  */
-                                                      return 545;
+                                                      return 551;
                                                     }
                                                   else
                                                     {
@@ -17780,7 +21784,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxx1x0111xxxxxxxxxx
                                                          fmulx.  */
-                                                      return 547;
+                                                      return 553;
                                                     }
                                                 }
                                               else
@@ -17791,7 +21795,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x1011110xx1xxxxxx01111xxxxxxxxxx
                                                          cmge.  */
-                                                      return 556;
+                                                      return 562;
                                                     }
                                                   else
                                                     {
@@ -17801,7 +21805,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10111100x1xxxxxx11111xxxxxxxxxx
                                                              frecps.  */
-                                                          return 551;
+                                                          return 557;
                                                         }
                                                       else
                                                         {
@@ -17809,7 +21813,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                              10987654321098765432109876543210
                                                              x10111101x1xxxxxx11111xxxxxxxxxx
                                                              frsqrts.  */
-                                                          return 553;
+                                                          return 559;
                                                         }
                                                     }
                                                 }
@@ -17830,7 +21834,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx000011xxxxxxxxxx
                                                          uqadd.  */
-                                                      return 561;
+                                                      return 567;
                                                     }
                                                   else
                                                     {
@@ -17838,7 +21842,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx111110xx1xxxxx100011xxxxxxxxxx
                                                          cmeq.  */
-                                                      return 581;
+                                                      return 587;
                                                     }
                                                 }
                                               else
@@ -17847,7 +21851,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxxx10011xxxxxxxxxx
                                                      uqshl.  */
-                                                  return 563;
+                                                  return 569;
                                                 }
                                             }
                                           else
@@ -17858,7 +21862,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx111110xx1xxxxxx01011xxxxxxxxxx
                                                      uqsub.  */
-                                                  return 562;
+                                                  return 568;
                                                 }
                                               else
                                                 {
@@ -17868,7 +21872,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx1111100x1xxxxxx11011xxxxxxxxxx
                                                          facge.  */
-                                                      return 568;
+                                                      return 574;
                                                     }
                                                   else
                                                     {
@@ -17876,7 +21880,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          xx1111101x1xxxxxx11011xxxxxxxxxx
                                                          facgt.  */
-                                                      return 574;
+                                                      return 580;
                                                     }
                                                 }
                                             }
@@ -17889,7 +21893,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx111110xx1xxxxxxx0111xxxxxxxxxx
                                                  uqrshl.  */
-                                              return 564;
+                                              return 570;
                                             }
                                           else
                                             {
@@ -17897,7 +21901,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx111110xx1xxxxxxx1111xxxxxxxxxx
                                                  cmhs.  */
-                                              return 577;
+                                              return 583;
                                             }
                                         }
                                     }
@@ -17928,7 +21932,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx0000x0xxxxxxxxxx
                                                      fmlal.  */
-                                                  return 2032;
+                                                  return 2378;
                                                 }
                                               else
                                                 {
@@ -17936,7 +21940,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx0000x0xxxxxxxxxx
                                                      fmlal.  */
-                                                  return 2036;
+                                                  return 2382;
                                                 }
                                             }
                                           else
@@ -17945,7 +21949,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx0000x0xxxxxxxxxx
                                                  mla.  */
-                                              return 117;
+                                              return 119;
                                             }
                                         }
                                       else
@@ -17958,7 +21962,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx0100x0xxxxxxxxxx
                                                      fmlsl.  */
-                                                  return 2033;
+                                                  return 2379;
                                                 }
                                               else
                                                 {
@@ -17966,7 +21970,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx0100x0xxxxxxxxxx
                                                      fmlsl.  */
-                                                  return 2037;
+                                                  return 2383;
                                                 }
                                             }
                                           else
@@ -17975,7 +21979,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx0100x0xxxxxxxxxx
                                                  mls.  */
-                                              return 120;
+                                              return 122;
                                             }
                                         }
                                     }
@@ -17991,7 +21995,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx0010x0xxxxxxxxxx
                                                      smlal.  */
-                                                  return 96;
+                                                  return 98;
                                                 }
                                               else
                                                 {
@@ -17999,7 +22003,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx0010x0xxxxxxxxxx
                                                      smlal2.  */
-                                                  return 97;
+                                                  return 99;
                                                 }
                                             }
                                           else
@@ -18010,7 +22014,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0101111xxxxxxxx0010x0xxxxxxxxxx
                                                      umlal.  */
-                                                  return 118;
+                                                  return 120;
                                                 }
                                               else
                                                 {
@@ -18018,7 +22022,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1101111xxxxxxxx0010x0xxxxxxxxxx
                                                      umlal2.  */
-                                                  return 119;
+                                                  return 121;
                                                 }
                                             }
                                         }
@@ -18032,7 +22036,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx0110x0xxxxxxxxxx
                                                      smlsl.  */
-                                                  return 100;
+                                                  return 102;
                                                 }
                                               else
                                                 {
@@ -18040,7 +22044,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx0110x0xxxxxxxxxx
                                                      smlsl2.  */
-                                                  return 101;
+                                                  return 103;
                                                 }
                                             }
                                           else
@@ -18051,7 +22055,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0101111xxxxxxxx0110x0xxxxxxxxxx
                                                      umlsl.  */
-                                                  return 121;
+                                                  return 123;
                                                 }
                                               else
                                                 {
@@ -18059,7 +22063,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1101111xxxxxxxx0110x0xxxxxxxxxx
                                                      umlsl2.  */
-                                                  return 122;
+                                                  return 124;
                                                 }
                                             }
                                         }
@@ -18079,7 +22083,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0011110xxxxxxx0001x0xxxxxxxxxx
                                                      fmla.  */
-                                                  return 112;
+                                                  return 114;
                                                 }
                                               else
                                                 {
@@ -18087,7 +22091,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0011111xxxxxxx0001x0xxxxxxxxxx
                                                      fmla.  */
-                                                  return 111;
+                                                  return 113;
                                                 }
                                             }
                                           else
@@ -18098,7 +22102,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0011110xxxxxxx0101x0xxxxxxxxxx
                                                      fmls.  */
-                                                  return 114;
+                                                  return 116;
                                                 }
                                               else
                                                 {
@@ -18106,7 +22110,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0011111xxxxxxx0101x0xxxxxxxxxx
                                                      fmls.  */
-                                                  return 113;
+                                                  return 115;
                                                 }
                                             }
                                         }
@@ -18120,7 +22124,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx0011x0xxxxxxxxxx
                                                      sqdmlal.  */
-                                                  return 98;
+                                                  return 100;
                                                 }
                                               else
                                                 {
@@ -18128,7 +22132,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx0011x0xxxxxxxxxx
                                                      sqdmlal2.  */
-                                                  return 99;
+                                                  return 101;
                                                 }
                                             }
                                           else
@@ -18139,7 +22143,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx0111x0xxxxxxxxxx
                                                      sqdmlsl.  */
-                                                  return 102;
+                                                  return 104;
                                                 }
                                               else
                                                 {
@@ -18147,7 +22151,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx0111x0xxxxxxxxxx
                                                      sqdmlsl2.  */
-                                                  return 103;
+                                                  return 105;
                                                 }
                                             }
                                         }
@@ -18158,7 +22162,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx101111xxxxxxxx0xx1x0xxxxxxxxxx
                                          fcmla.  */
-                                      return 129;
+                                      return 131;
                                     }
                                 }
                             }
@@ -18172,7 +22176,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx001111xxxxxxxx0xx0x1xxxxxxxxxx
                                          movi.  */
-                                      return 131;
+                                      return 133;
                                     }
                                   else
                                     {
@@ -18180,7 +22184,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx101111xxxxxxxx0xx0x1xxxxxxxxxx
                                          mvni.  */
-                                      return 139;
+                                      return 141;
                                     }
                                 }
                               else
@@ -18191,7 +22195,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx001111xxxxxxxx0xx1x1xxxxxxxxxx
                                          orr.  */
-                                      return 132;
+                                      return 134;
                                     }
                                   else
                                     {
@@ -18199,7 +22203,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx101111xxxxxxxx0xx1x1xxxxxxxxxx
                                          bic.  */
-                                      return 140;
+                                      return 142;
                                     }
                                 }
                             }
@@ -18216,7 +22220,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x0011111xx0xxxxx0xxxxxxxxxxxxxxx
                                          fmadd.  */
-                                      return 840;
+                                      return 858;
                                     }
                                   else
                                     {
@@ -18224,7 +22228,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x0011111xx1xxxxx0xxxxxxxxxxxxxxx
                                          fnmadd.  */
-                                      return 844;
+                                      return 862;
                                     }
                                 }
                               else
@@ -18241,7 +22245,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10111110xxxxxxx000xx0xxxxxxxxxx
                                                      fmla.  */
-                                                  return 425;
+                                                  return 431;
                                                 }
                                               else
                                                 {
@@ -18249,7 +22253,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10111111xxxxxxx000xx0xxxxxxxxxx
                                                      fmla.  */
-                                                  return 424;
+                                                  return 430;
                                                 }
                                             }
                                           else
@@ -18260,7 +22264,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10111110xxxxxxx010xx0xxxxxxxxxx
                                                      fmls.  */
-                                                  return 427;
+                                                  return 433;
                                                 }
                                               else
                                                 {
@@ -18268,7 +22272,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x10111111xxxxxxx010xx0xxxxxxxxxx
                                                      fmls.  */
-                                                  return 426;
+                                                  return 432;
                                                 }
                                             }
                                         }
@@ -18280,7 +22284,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx001xx0xxxxxxxxxx
                                                  sqdmlal.  */
-                                              return 419;
+                                              return 425;
                                             }
                                           else
                                             {
@@ -18288,7 +22292,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx011xx0xxxxxxxxxx
                                                  sqdmlsl.  */
-                                              return 420;
+                                              return 426;
                                             }
                                         }
                                     }
@@ -18302,7 +22306,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx0x00x1xxxxxxxxxx
                                                  sshr.  */
-                                              return 584;
+                                              return 590;
                                             }
                                           else
                                             {
@@ -18310,7 +22314,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx0x10x1xxxxxxxxxx
                                                  srshr.  */
-                                              return 586;
+                                              return 592;
                                             }
                                         }
                                       else
@@ -18323,7 +22327,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011111xxxxxxxx0001x1xxxxxxxxxx
                                                      ssra.  */
-                                                  return 585;
+                                                  return 591;
                                                 }
                                               else
                                                 {
@@ -18331,7 +22335,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011111xxxxxxxx0101x1xxxxxxxxxx
                                                      shl.  */
-                                                  return 588;
+                                                  return 594;
                                                 }
                                             }
                                           else
@@ -18342,7 +22346,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011111xxxxxxxx0011x1xxxxxxxxxx
                                                      srsra.  */
-                                                  return 587;
+                                                  return 593;
                                                 }
                                               else
                                                 {
@@ -18350,7 +22354,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011111xxxxxxxx0111x1xxxxxxxxxx
                                                      sqshl.  */
-                                                  return 589;
+                                                  return 595;
                                                 }
                                             }
                                         }
@@ -18369,7 +22373,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0000xxxxxxxxxxxx
                                              ushr.  */
-                                          return 596;
+                                          return 602;
                                         }
                                       else
                                         {
@@ -18377,7 +22381,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0100xxxxxxxxxxxx
                                              sri.  */
-                                          return 600;
+                                          return 606;
                                         }
                                     }
                                   else
@@ -18388,7 +22392,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0010xxxxxxxxxxxx
                                              urshr.  */
-                                          return 598;
+                                          return 604;
                                         }
                                       else
                                         {
@@ -18396,7 +22400,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0110xxxxxxxxxxxx
                                              sqshlu.  */
-                                          return 602;
+                                          return 608;
                                         }
                                     }
                                 }
@@ -18410,7 +22414,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0001xxxxxxxxxxxx
                                              usra.  */
-                                          return 597;
+                                          return 603;
                                         }
                                       else
                                         {
@@ -18418,7 +22422,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0101xxxxxxxxxxxx
                                              sli.  */
-                                          return 601;
+                                          return 607;
                                         }
                                     }
                                   else
@@ -18429,7 +22433,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0011xxxxxxxxxxxx
                                              ursra.  */
-                                          return 599;
+                                          return 605;
                                         }
                                       else
                                         {
@@ -18437,7 +22441,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx0111xxxxxxxxxxxx
                                              uqshl.  */
-                                          return 603;
+                                          return 609;
                                         }
                                     }
                                 }
@@ -18462,7 +22466,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx1000x0xxxxxxxxxx
                                                  mul.  */
-                                              return 104;
+                                              return 106;
                                             }
                                           else
                                             {
@@ -18472,7 +22476,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0101111xxxxxxxx1000x0xxxxxxxxxx
                                                      fmlal2.  */
-                                                  return 2034;
+                                                  return 2380;
                                                 }
                                               else
                                                 {
@@ -18480,7 +22484,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1101111xxxxxxxx1000x0xxxxxxxxxx
                                                      fmlal2.  */
-                                                  return 2038;
+                                                  return 2384;
                                                 }
                                             }
                                         }
@@ -18492,7 +22496,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx1100x0xxxxxxxxxx
                                                  sqdmulh.  */
-                                              return 109;
+                                              return 111;
                                             }
                                           else
                                             {
@@ -18502,7 +22506,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0101111xxxxxxxx1100x0xxxxxxxxxx
                                                      fmlsl2.  */
-                                                  return 2035;
+                                                  return 2381;
                                                 }
                                               else
                                                 {
@@ -18510,7 +22514,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1101111xxxxxxxx1100x0xxxxxxxxxx
                                                      fmlsl2.  */
-                                                  return 2039;
+                                                  return 2385;
                                                 }
                                             }
                                         }
@@ -18527,7 +22531,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx1010x0xxxxxxxxxx
                                                      smull.  */
-                                                  return 105;
+                                                  return 107;
                                                 }
                                               else
                                                 {
@@ -18535,7 +22539,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx1010x0xxxxxxxxxx
                                                      smull2.  */
-                                                  return 106;
+                                                  return 108;
                                                 }
                                             }
                                           else
@@ -18546,7 +22550,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0101111xxxxxxxx1010x0xxxxxxxxxx
                                                      umull.  */
-                                                  return 123;
+                                                  return 125;
                                                 }
                                               else
                                                 {
@@ -18554,7 +22558,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1101111xxxxxxxx1010x0xxxxxxxxxx
                                                      umull2.  */
-                                                  return 124;
+                                                  return 126;
                                                 }
                                             }
                                         }
@@ -18566,7 +22570,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx1110x0xxxxxxxxxx
                                                  sdot.  */
-                                              return 2006;
+                                              return 2352;
                                             }
                                           else
                                             {
@@ -18574,7 +22578,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx1110x0xxxxxxxxxx
                                                  udot.  */
-                                              return 2005;
+                                              return 2351;
                                             }
                                         }
                                     }
@@ -18593,7 +22597,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0011110xxxxxxx1001x0xxxxxxxxxx
                                                      fmul.  */
-                                                  return 116;
+                                                  return 118;
                                                 }
                                               else
                                                 {
@@ -18601,7 +22605,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx1011110xxxxxxx1001x0xxxxxxxxxx
                                                      fmulx.  */
-                                                  return 126;
+                                                  return 128;
                                                 }
                                             }
                                           else
@@ -18612,7 +22616,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx0011111xxxxxxx1001x0xxxxxxxxxx
                                                      fmul.  */
-                                                  return 115;
+                                                  return 117;
                                                 }
                                               else
                                                 {
@@ -18620,7 +22624,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx1011111xxxxxxx1001x0xxxxxxxxxx
                                                      fmulx.  */
-                                                  return 125;
+                                                  return 127;
                                                 }
                                             }
                                         }
@@ -18632,7 +22636,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx1101x0xxxxxxxxxx
                                                  sqrdmulh.  */
-                                              return 110;
+                                              return 112;
                                             }
                                           else
                                             {
@@ -18640,7 +22644,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx1101x0xxxxxxxxxx
                                                  sqrdmlah.  */
-                                              return 127;
+                                              return 129;
                                             }
                                         }
                                     }
@@ -18654,7 +22658,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0x01111xxxxxxxx1011x0xxxxxxxxxx
                                                  sqdmull.  */
-                                              return 107;
+                                              return 109;
                                             }
                                           else
                                             {
@@ -18662,17 +22666,72 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1x01111xxxxxxxx1011x0xxxxxxxxxx
                                                  sqdmull2.  */
-                                              return 108;
+                                              return 110;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx00111100xxxxxx1111x0xxxxxxxxxx
+                                                         sudot.  */
+                                                      return 2429;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx00111110xxxxxx1111x0xxxxxxxxxx
+                                                         usdot.  */
+                                                      return 2428;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx00111101xxxxxx1111x0xxxxxxxxxx
+                                                         bfdot.  */
+                                                      return 2440;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x000111111xxxxxx1111x0xxxxxxxxxx
+                                                             bfmlalb.  */
+                                                          return 2448;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x100111111xxxxxx1111x0xxxxxxxxxx
+                                                             bfmlalt.  */
+                                                          return 2447;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101111xxxxxxxx1111x0xxxxxxxxxx
+                                                 sqrdmlsh.  */
+                                              return 130;
                                             }
                                         }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxx01111xxxxxxxx1111x0xxxxxxxxxx
-                                             sqrdmlsh.  */
-                                          return 128;
-                                        }
                                     }
                                 }
                             }
@@ -18690,7 +22749,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx10x001xxxxxxxxxx
                                                  movi.  */
-                                              return 133;
+                                              return 135;
                                             }
                                           else
                                             {
@@ -18698,7 +22757,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx10x001xxxxxxxxxx
                                                  mvni.  */
-                                              return 141;
+                                              return 143;
                                             }
                                         }
                                       else
@@ -18709,7 +22768,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx10x101xxxxxxxxxx
                                                  orr.  */
-                                              return 134;
+                                              return 136;
                                             }
                                           else
                                             {
@@ -18717,7 +22776,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx10x101xxxxxxxxxx
                                                  bic.  */
-                                              return 142;
+                                              return 144;
                                             }
                                         }
                                     }
@@ -18731,7 +22790,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx110x01xxxxxxxxxx
                                                  movi.  */
-                                              return 135;
+                                              return 137;
                                             }
                                           else
                                             {
@@ -18739,7 +22798,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx110x01xxxxxxxxxx
                                                  mvni.  */
-                                              return 143;
+                                              return 145;
                                             }
                                         }
                                       else
@@ -18752,7 +22811,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx001111xxxxxxxx111001xxxxxxxxxx
                                                      movi.  */
-                                                  return 136;
+                                                  return 138;
                                                 }
                                               else
                                                 {
@@ -18760,7 +22819,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx101111xxxxxxxx111001xxxxxxxxxx
                                                      movi.  */
-                                                  return 144;
+                                                  return 146;
                                                 }
                                             }
                                           else
@@ -18771,7 +22830,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx001111xxxxxxxx111101xxxxxxxxxx
                                                      fmov.  */
-                                                  return 137;
+                                                  return 139;
                                                 }
                                               else
                                                 {
@@ -18779,7 +22838,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      xx101111xxxxxxxx111101xxxxxxxxxx
                                                      fmov.  */
-                                                  return 146;
+                                                  return 148;
                                                 }
                                             }
                                         }
@@ -18797,7 +22856,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0001111xxxxxxxx1xx011xxxxxxxxxx
                                                  rshrn.  */
-                                              return 376;
+                                              return 382;
                                             }
                                           else
                                             {
@@ -18805,7 +22864,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1001111xxxxxxxx1xx011xxxxxxxxxx
                                                  rshrn2.  */
-                                              return 377;
+                                              return 383;
                                             }
                                         }
                                       else
@@ -18816,7 +22875,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x0101111xxxxxxxx1xx011xxxxxxxxxx
                                                  sqrshrun.  */
-                                              return 400;
+                                              return 406;
                                             }
                                           else
                                             {
@@ -18824,7 +22883,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1101111xxxxxxxx1xx011xxxxxxxxxx
                                                  sqrshrun2.  */
-                                              return 401;
+                                              return 407;
                                             }
                                         }
                                     }
@@ -18840,7 +22899,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0001111xxxxxxxx1x0111xxxxxxxxxx
                                                      sqrshrn.  */
-                                                  return 380;
+                                                  return 386;
                                                 }
                                               else
                                                 {
@@ -18848,7 +22907,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1001111xxxxxxxx1x0111xxxxxxxxxx
                                                      sqrshrn2.  */
-                                                  return 381;
+                                                  return 387;
                                                 }
                                             }
                                           else
@@ -18859,7 +22918,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x0101111xxxxxxxx1x0111xxxxxxxxxx
                                                      uqrshrn.  */
-                                                  return 404;
+                                                  return 410;
                                                 }
                                               else
                                                 {
@@ -18867,7 +22926,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1101111xxxxxxxx1x0111xxxxxxxxxx
                                                      uqrshrn2.  */
-                                                  return 405;
+                                                  return 411;
                                                 }
                                             }
                                         }
@@ -18879,7 +22938,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx001111xxxxxxxx1x1111xxxxxxxxxx
                                                  fmov.  */
-                                              return 138;
+                                              return 140;
                                             }
                                           else
                                             {
@@ -18887,7 +22946,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx101111xxxxxxxx1x1111xxxxxxxxxx
                                                  fcvtzu.  */
-                                              return 412;
+                                              return 418;
                                             }
                                         }
                                     }
@@ -18906,7 +22965,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x0011111xx0xxxxx1xxxxxxxxxxxxxxx
                                          fmsub.  */
-                                      return 842;
+                                      return 860;
                                     }
                                   else
                                     {
@@ -18914,7 +22973,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          x0011111xx1xxxxx1xxxxxxxxxxxxxxx
                                          fnmsub.  */
-                                      return 846;
+                                      return 864;
                                     }
                                 }
                               else
@@ -18927,7 +22986,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              x1011111xxxxxxxx1xx0x0xxxxxxxxxx
                                              sqdmulh.  */
-                                          return 422;
+                                          return 428;
                                         }
                                       else
                                         {
@@ -18941,7 +23000,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x10111110xxxxxxx1001x0xxxxxxxxxx
                                                          fmul.  */
-                                                      return 429;
+                                                      return 435;
                                                     }
                                                   else
                                                     {
@@ -18949,7 +23008,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                          10987654321098765432109876543210
                                                          x10111111xxxxxxx1001x0xxxxxxxxxx
                                                          fmul.  */
-                                                      return 428;
+                                                      return 434;
                                                     }
                                                 }
                                               else
@@ -18958,7 +23017,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                      10987654321098765432109876543210
                                                      x1011111xxxxxxxx1101x0xxxxxxxxxx
                                                      sqrdmulh.  */
-                                                  return 423;
+                                                  return 429;
                                                 }
                                             }
                                           else
@@ -18967,7 +23026,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx1x11x0xxxxxxxxxx
                                                  sqdmull.  */
-                                              return 421;
+                                              return 427;
                                             }
                                         }
                                     }
@@ -18981,7 +23040,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx1xx001xxxxxxxxxx
                                                  scvtf.  */
-                                              return 592;
+                                              return 598;
                                             }
                                           else
                                             {
@@ -18989,7 +23048,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx1xx101xxxxxxxxxx
                                                  sqshrn.  */
-                                              return 590;
+                                              return 596;
                                             }
                                         }
                                       else
@@ -19000,7 +23059,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx1x0x11xxxxxxxxxx
                                                  sqrshrn.  */
-                                              return 591;
+                                              return 597;
                                             }
                                           else
                                             {
@@ -19008,7 +23067,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  x1011111xxxxxxxx1x1x11xxxxxxxxxx
                                                  fcvtzs.  */
-                                              return 594;
+                                              return 600;
                                             }
                                         }
                                     }
@@ -19028,7 +23087,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx1111110xxxxxxx100xx0xxxxxxxxxx
                                                  fmulx.  */
-                                              return 431;
+                                              return 437;
                                             }
                                           else
                                             {
@@ -19036,7 +23095,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx1111111xxxxxxx100xx0xxxxxxxxxx
                                                  fmulx.  */
-                                              return 430;
+                                              return 436;
                                             }
                                         }
                                       else
@@ -19045,7 +23104,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx110xx0xxxxxxxxxx
                                              sqrdmlah.  */
-                                          return 432;
+                                          return 438;
                                         }
                                     }
                                   else
@@ -19054,7 +23113,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                          10987654321098765432109876543210
                                          xx111111xxxxxxxx1x1xx0xxxxxxxxxx
                                          sqrdmlsh.  */
-                                      return 433;
+                                      return 439;
                                     }
                                 }
                               else
@@ -19069,7 +23128,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx111111xxxxxxxx1x0001xxxxxxxxxx
                                                  sqshrun.  */
-                                              return 604;
+                                              return 610;
                                             }
                                           else
                                             {
@@ -19077,7 +23136,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx111111xxxxxxxx1x1001xxxxxxxxxx
                                                  ucvtf.  */
-                                              return 608;
+                                              return 614;
                                             }
                                         }
                                       else
@@ -19086,7 +23145,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx1xx101xxxxxxxxxx
                                              uqshrn.  */
-                                          return 606;
+                                          return 612;
                                         }
                                     }
                                   else
@@ -19097,7 +23156,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                              10987654321098765432109876543210
                                              xx111111xxxxxxxx1xx011xxxxxxxxxx
                                              sqrshrun.  */
-                                          return 605;
+                                          return 611;
                                         }
                                       else
                                         {
@@ -19107,7 +23166,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx111111xxxxxxxx1x0111xxxxxxxxxx
                                                  uqrshrn.  */
-                                              return 607;
+                                              return 613;
                                             }
                                           else
                                             {
@@ -19115,7 +23174,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                  10987654321098765432109876543210
                                                  xx111111xxxxxxxx1x1111xxxxxxxxxx
                                                  fcvtzu.  */
-                                              return 610;
+                                              return 616;
                                             }
                                         }
                                     }
@@ -19146,241 +23205,258 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
   int value;
   switch (key)
     {
-    case 941: value = 945; break;      /* stnp --> stp.  */
-    case 945: return NULL;             /* stp --> NULL.  */
-    case 939: value = 940; break;      /* stllrb --> stllrh.  */
-    case 940: return NULL;             /* stllrh --> NULL.  */
-    case 942: value = 946; break;      /* ldnp --> ldp.  */
-    case 946: return NULL;             /* ldp --> NULL.  */
-    case 1582: value = 1583; break;    /* ldff1b --> ldff1b.  */
-    case 1583: return NULL;            /* ldff1b --> NULL.  */
-    case 1638: value = 1639; break;    /* ldff1sw --> ldff1sw.  */
-    case 1639: return NULL;            /* ldff1sw --> NULL.  */
-    case 1586: value = 1587; break;    /* ldff1b --> ldff1b.  */
-    case 1587: return NULL;            /* ldff1b --> NULL.  */
-    case 1605: value = 1606; break;    /* ldff1h --> ldff1h.  */
-    case 1606: return NULL;            /* ldff1h --> NULL.  */
-    case 1584: value = 1585; break;    /* ldff1b --> ldff1b.  */
-    case 1585: return NULL;            /* ldff1b --> NULL.  */
-    case 1603: value = 1604; break;    /* ldff1h --> ldff1h.  */
-    case 1604: return NULL;            /* ldff1h --> NULL.  */
-    case 1588: value = 1589; break;    /* ldff1b --> ldff1b.  */
-    case 1589: return NULL;            /* ldff1b --> NULL.  */
-    case 1607: value = 1608; break;    /* ldff1h --> ldff1h.  */
-    case 1608: return NULL;            /* ldff1h --> NULL.  */
-    case 1628: value = 1629; break;    /* ldff1sh --> ldff1sh.  */
-    case 1629: return NULL;            /* ldff1sh --> NULL.  */
-    case 1616: value = 1617; break;    /* ldff1sb --> ldff1sb.  */
-    case 1617: return NULL;            /* ldff1sb --> NULL.  */
-    case 1647: value = 1648; break;    /* ldff1w --> ldff1w.  */
-    case 1648: return NULL;            /* ldff1w --> NULL.  */
-    case 1620: value = 1621; break;    /* ldff1sb --> ldff1sb.  */
-    case 1621: return NULL;            /* ldff1sb --> NULL.  */
-    case 1630: value = 1631; break;    /* ldff1sh --> ldff1sh.  */
-    case 1631: return NULL;            /* ldff1sh --> NULL.  */
-    case 1618: value = 1619; break;    /* ldff1sb --> ldff1sb.  */
-    case 1619: return NULL;            /* ldff1sb --> NULL.  */
-    case 1649: value = 1650; break;    /* ldff1w --> ldff1w.  */
-    case 1650: return NULL;            /* ldff1w --> NULL.  */
-    case 1594: value = 1595; break;    /* ldff1d --> ldff1d.  */
-    case 1595: return NULL;            /* ldff1d --> NULL.  */
-    case 1157: value = 1158; break;    /* msr --> hint.  */
-    case 1158: value = 1173; break;    /* hint --> clrex.  */
-    case 1173: value = 1174; break;    /* clrex --> dsb.  */
-    case 1174: value = 1175; break;    /* dsb --> dmb.  */
-    case 1175: value = 1176; break;    /* dmb --> isb.  */
-    case 1176: value = 1177; break;    /* isb --> sys.  */
-    case 1177: value = 1182; break;    /* sys --> msr.  */
-    case 1182: value = 2040; break;    /* msr --> cfinv.  */
-    case 2040: return NULL;            /* cfinv --> NULL.  */
-    case 1183: value = 1184; break;    /* sysl --> mrs.  */
-    case 1184: return NULL;            /* mrs --> NULL.  */
-    case 434: value = 435; break;      /* st4 --> st1.  */
-    case 435: value = 436; break;      /* st1 --> st2.  */
-    case 436: value = 437; break;      /* st2 --> st3.  */
-    case 437: return NULL;             /* st3 --> NULL.  */
-    case 442: value = 443; break;      /* st4 --> st1.  */
-    case 443: value = 444; break;      /* st1 --> st2.  */
-    case 444: value = 445; break;      /* st2 --> st3.  */
-    case 445: return NULL;             /* st3 --> NULL.  */
-    case 438: value = 439; break;      /* ld4 --> ld1.  */
-    case 439: value = 440; break;      /* ld1 --> ld2.  */
-    case 440: value = 441; break;      /* ld2 --> ld3.  */
-    case 441: return NULL;             /* ld3 --> NULL.  */
-    case 454: value = 456; break;      /* ld1 --> ld1r.  */
-    case 456: return NULL;             /* ld1r --> NULL.  */
-    case 458: value = 460; break;      /* ld2 --> ld2r.  */
-    case 460: return NULL;             /* ld2r --> NULL.  */
-    case 455: value = 457; break;      /* ld3 --> ld3r.  */
-    case 457: return NULL;             /* ld3r --> NULL.  */
-    case 459: value = 461; break;      /* ld4 --> ld4r.  */
-    case 461: return NULL;             /* ld4r --> NULL.  */
-    case 446: value = 447; break;      /* ld4 --> ld1.  */
-    case 447: value = 448; break;      /* ld1 --> ld2.  */
-    case 448: value = 449; break;      /* ld2 --> ld3.  */
-    case 449: return NULL;             /* ld3 --> NULL.  */
-    case 466: value = 468; break;      /* ld1 --> ld1r.  */
-    case 468: return NULL;             /* ld1r --> NULL.  */
-    case 467: value = 469; break;      /* ld3 --> ld3r.  */
-    case 469: return NULL;             /* ld3r --> NULL.  */
-    case 470: value = 472; break;      /* ld2 --> ld2r.  */
-    case 472: return NULL;             /* ld2r --> NULL.  */
-    case 471: value = 473; break;      /* ld4 --> ld4r.  */
-    case 473: return NULL;             /* ld4r --> NULL.  */
-    case 752: value = 753; break;      /* fcvtzs --> fcvtzs.  */
-    case 753: return NULL;             /* fcvtzs --> NULL.  */
-    case 748: value = 749; break;      /* scvtf --> scvtf.  */
-    case 749: return NULL;             /* scvtf --> NULL.  */
-    case 754: value = 755; break;      /* fcvtzu --> fcvtzu.  */
-    case 755: return NULL;             /* fcvtzu --> NULL.  */
-    case 750: value = 751; break;      /* ucvtf --> ucvtf.  */
-    case 751: return NULL;             /* ucvtf --> NULL.  */
-    case 756: value = 757; break;      /* fcvtns --> fcvtns.  */
-    case 757: return NULL;             /* fcvtns --> NULL.  */
-    case 776: value = 777; break;      /* fcvtms --> fcvtms.  */
-    case 777: return NULL;             /* fcvtms --> NULL.  */
-    case 772: value = 773; break;      /* fcvtps --> fcvtps.  */
-    case 773: return NULL;             /* fcvtps --> NULL.  */
-    case 780: value = 781; break;      /* fcvtzs --> fcvtzs.  */
-    case 781: return NULL;             /* fcvtzs --> NULL.  */
-    case 764: value = 765; break;      /* fcvtas --> fcvtas.  */
-    case 765: return NULL;             /* fcvtas --> NULL.  */
+    case 12: value = 19; break;        /* add --> addg.  */
+    case 19: return NULL;              /* addg --> NULL.  */
+    case 16: value = 20; break;        /* sub --> subg.  */
+    case 20: return NULL;              /* subg --> NULL.  */
+    case 971: value = 975; break;      /* stnp --> stp.  */
+    case 975: return NULL;             /* stp --> NULL.  */
+    case 969: value = 970; break;      /* stllrb --> stllrh.  */
+    case 970: return NULL;             /* stllrh --> NULL.  */
+    case 972: value = 976; break;      /* ldnp --> ldp.  */
+    case 976: return NULL;             /* ldp --> NULL.  */
+    case 1637: value = 1638; break;    /* ldff1b --> ldff1b.  */
+    case 1638: return NULL;            /* ldff1b --> NULL.  */
+    case 1693: value = 1694; break;    /* ldff1sw --> ldff1sw.  */
+    case 1694: return NULL;            /* ldff1sw --> NULL.  */
+    case 1641: value = 1642; break;    /* ldff1b --> ldff1b.  */
+    case 1642: return NULL;            /* ldff1b --> NULL.  */
+    case 1660: value = 1661; break;    /* ldff1h --> ldff1h.  */
+    case 1661: return NULL;            /* ldff1h --> NULL.  */
+    case 1639: value = 1640; break;    /* ldff1b --> ldff1b.  */
+    case 1640: return NULL;            /* ldff1b --> NULL.  */
+    case 1658: value = 1659; break;    /* ldff1h --> ldff1h.  */
+    case 1659: return NULL;            /* ldff1h --> NULL.  */
+    case 1643: value = 1644; break;    /* ldff1b --> ldff1b.  */
+    case 1644: return NULL;            /* ldff1b --> NULL.  */
+    case 1662: value = 1663; break;    /* ldff1h --> ldff1h.  */
+    case 1663: return NULL;            /* ldff1h --> NULL.  */
+    case 1683: value = 1684; break;    /* ldff1sh --> ldff1sh.  */
+    case 1684: return NULL;            /* ldff1sh --> NULL.  */
+    case 1671: value = 1672; break;    /* ldff1sb --> ldff1sb.  */
+    case 1672: return NULL;            /* ldff1sb --> NULL.  */
+    case 1702: value = 1703; break;    /* ldff1w --> ldff1w.  */
+    case 1703: return NULL;            /* ldff1w --> NULL.  */
+    case 1675: value = 1676; break;    /* ldff1sb --> ldff1sb.  */
+    case 1676: return NULL;            /* ldff1sb --> NULL.  */
+    case 1685: value = 1686; break;    /* ldff1sh --> ldff1sh.  */
+    case 1686: return NULL;            /* ldff1sh --> NULL.  */
+    case 1673: value = 1674; break;    /* ldff1sb --> ldff1sb.  */
+    case 1674: return NULL;            /* ldff1sb --> NULL.  */
+    case 1704: value = 1705; break;    /* ldff1w --> ldff1w.  */
+    case 1705: return NULL;            /* ldff1w --> NULL.  */
+    case 1649: value = 1650; break;    /* ldff1d --> ldff1d.  */
+    case 1650: return NULL;            /* ldff1d --> NULL.  */
+    case 811: value = 812; break;      /* xaflag --> axflag.  */
+    case 812: value = 1194; break;     /* axflag --> tcommit.  */
+    case 1194: value = 1197; break;    /* tcommit --> csr.  */
+    case 1197: value = 1198; break;    /* csr --> msr.  */
+    case 1198: value = 1199; break;    /* msr --> hint.  */
+    case 1199: value = 1208; break;    /* hint --> dgh.  */
+    case 1208: value = 1217; break;    /* dgh --> clrex.  */
+    case 1217: value = 1218; break;    /* clrex --> dsb.  */
+    case 1218: value = 1219; break;    /* dsb --> dsb.  */
+    case 1219: value = 1223; break;    /* dsb --> dmb.  */
+    case 1223: value = 1224; break;    /* dmb --> isb.  */
+    case 1224: value = 1225; break;    /* isb --> sb.  */
+    case 1225: value = 1226; break;    /* sb --> sys.  */
+    case 1226: value = 1231; break;    /* sys --> wfet.  */
+    case 1231: value = 1232; break;    /* wfet --> wfit.  */
+    case 1232: value = 1236; break;    /* wfit --> cfinv.  */
+    case 1236: value = 1237; break;    /* cfinv --> msr.  */
+    case 1237: return NULL;            /* msr --> NULL.  */
+    case 1193: value = 1195; break;    /* tstart --> ttest.  */
+    case 1195: value = 1238; break;    /* ttest --> sysl.  */
+    case 1238: value = 1239; break;    /* sysl --> mrs.  */
+    case 1239: return NULL;            /* mrs --> NULL.  */
+    case 440: value = 441; break;      /* st4 --> st1.  */
+    case 441: value = 442; break;      /* st1 --> st2.  */
+    case 442: value = 443; break;      /* st2 --> st3.  */
+    case 443: return NULL;             /* st3 --> NULL.  */
+    case 448: value = 449; break;      /* st4 --> st1.  */
+    case 449: value = 450; break;      /* st1 --> st2.  */
+    case 450: value = 451; break;      /* st2 --> st3.  */
+    case 451: return NULL;             /* st3 --> NULL.  */
+    case 444: value = 445; break;      /* ld4 --> ld1.  */
+    case 445: value = 446; break;      /* ld1 --> ld2.  */
+    case 446: value = 447; break;      /* ld2 --> ld3.  */
+    case 447: return NULL;             /* ld3 --> NULL.  */
+    case 460: value = 462; break;      /* ld1 --> ld1r.  */
+    case 462: return NULL;             /* ld1r --> NULL.  */
+    case 464: value = 466; break;      /* ld2 --> ld2r.  */
+    case 466: return NULL;             /* ld2r --> NULL.  */
+    case 461: value = 463; break;      /* ld3 --> ld3r.  */
+    case 463: return NULL;             /* ld3r --> NULL.  */
+    case 465: value = 467; break;      /* ld4 --> ld4r.  */
+    case 467: return NULL;             /* ld4r --> NULL.  */
+    case 452: value = 453; break;      /* ld4 --> ld1.  */
+    case 453: value = 454; break;      /* ld1 --> ld2.  */
+    case 454: value = 455; break;      /* ld2 --> ld3.  */
+    case 455: return NULL;             /* ld3 --> NULL.  */
+    case 472: value = 474; break;      /* ld1 --> ld1r.  */
+    case 474: return NULL;             /* ld1r --> NULL.  */
+    case 473: value = 475; break;      /* ld3 --> ld3r.  */
+    case 475: return NULL;             /* ld3r --> NULL.  */
+    case 476: value = 478; break;      /* ld2 --> ld2r.  */
+    case 478: return NULL;             /* ld2r --> NULL.  */
+    case 477: value = 479; break;      /* ld4 --> ld4r.  */
+    case 479: return NULL;             /* ld4r --> NULL.  */
+    case 764: value = 765; break;      /* fcvtzs --> fcvtzs.  */
+    case 765: return NULL;             /* fcvtzs --> NULL.  */
     case 760: value = 761; break;      /* scvtf --> scvtf.  */
     case 761: return NULL;             /* scvtf --> NULL.  */
-    case 768: value = 769; break;      /* fmov --> fmov.  */
-    case 769: return NULL;             /* fmov --> NULL.  */
-    case 758: value = 759; break;      /* fcvtnu --> fcvtnu.  */
-    case 759: return NULL;             /* fcvtnu --> NULL.  */
-    case 778: value = 779; break;      /* fcvtmu --> fcvtmu.  */
-    case 779: return NULL;             /* fcvtmu --> NULL.  */
-    case 774: value = 775; break;      /* fcvtpu --> fcvtpu.  */
-    case 775: return NULL;             /* fcvtpu --> NULL.  */
-    case 782: value = 783; break;      /* fcvtzu --> fcvtzu.  */
-    case 783: return NULL;             /* fcvtzu --> NULL.  */
-    case 766: value = 767; break;      /* fcvtau --> fcvtau.  */
-    case 767: return NULL;             /* fcvtau --> NULL.  */
+    case 766: value = 767; break;      /* fcvtzu --> fcvtzu.  */
+    case 767: return NULL;             /* fcvtzu --> NULL.  */
     case 762: value = 763; break;      /* ucvtf --> ucvtf.  */
     case 763: return NULL;             /* ucvtf --> NULL.  */
-    case 770: value = 771; break;      /* fmov --> fmov.  */
-    case 771: return NULL;             /* fmov --> NULL.  */
-    case 799: value = 800; break;      /* fmov --> fmov.  */
-    case 800: return NULL;             /* fmov --> NULL.  */
-    case 808: value = 809; break;      /* frintn --> frintn.  */
-    case 809: return NULL;             /* frintn --> NULL.  */
-    case 803: value = 804; break;      /* fneg --> fneg.  */
-    case 804: return NULL;             /* fneg --> NULL.  */
-    case 812: value = 813; break;      /* frintm --> frintm.  */
-    case 813: return NULL;             /* frintm --> NULL.  */
-    case 801: value = 802; break;      /* fabs --> fabs.  */
-    case 802: return NULL;             /* fabs --> NULL.  */
-    case 810: value = 811; break;      /* frintp --> frintp.  */
-    case 811: return NULL;             /* frintp --> NULL.  */
-    case 805: value = 806; break;      /* fsqrt --> fsqrt.  */
-    case 806: return NULL;             /* fsqrt --> NULL.  */
-    case 814: value = 815; break;      /* frintz --> frintz.  */
-    case 815: return NULL;             /* frintz --> NULL.  */
-    case 816: value = 817; break;      /* frinta --> frinta.  */
-    case 817: return NULL;             /* frinta --> NULL.  */
-    case 818: value = 819; break;      /* frintx --> frintx.  */
-    case 819: return NULL;             /* frintx --> NULL.  */
-    case 820: value = 821; break;      /* frinti --> frinti.  */
-    case 821: return NULL;             /* frinti --> NULL.  */
-    case 791: value = 792; break;      /* fcmp --> fcmp.  */
-    case 792: return NULL;             /* fcmp --> NULL.  */
-    case 793: value = 794; break;      /* fcmpe --> fcmpe.  */
-    case 794: return NULL;             /* fcmpe --> NULL.  */
-    case 795: value = 796; break;      /* fcmp --> fcmp.  */
-    case 796: return NULL;             /* fcmp --> NULL.  */
-    case 797: value = 798; break;      /* fcmpe --> fcmpe.  */
-    case 798: return NULL;             /* fcmpe --> NULL.  */
-    case 848: value = 849; break;      /* fmov --> fmov.  */
-    case 849: return NULL;             /* fmov --> NULL.  */
-    case 822: value = 823; break;      /* fmul --> fmul.  */
-    case 823: return NULL;             /* fmul --> NULL.  */
-    case 838: value = 839; break;      /* fnmul --> fnmul.  */
-    case 839: return NULL;             /* fnmul --> NULL.  */
-    case 830: value = 831; break;      /* fmax --> fmax.  */
-    case 831: return NULL;             /* fmax --> NULL.  */
-    case 826: value = 827; break;      /* fadd --> fadd.  */
-    case 827: return NULL;             /* fadd --> NULL.  */
-    case 834: value = 835; break;      /* fmaxnm --> fmaxnm.  */
-    case 835: return NULL;             /* fmaxnm --> NULL.  */
-    case 824: value = 825; break;      /* fdiv --> fdiv.  */
-    case 825: return NULL;             /* fdiv --> NULL.  */
-    case 832: value = 833; break;      /* fmin --> fmin.  */
-    case 833: return NULL;             /* fmin --> NULL.  */
-    case 828: value = 829; break;      /* fsub --> fsub.  */
-    case 829: return NULL;             /* fsub --> NULL.  */
-    case 836: value = 837; break;      /* fminnm --> fminnm.  */
-    case 837: return NULL;             /* fminnm --> NULL.  */
-    case 787: value = 788; break;      /* fccmp --> fccmp.  */
-    case 788: return NULL;             /* fccmp --> NULL.  */
-    case 789: value = 790; break;      /* fccmpe --> fccmpe.  */
-    case 790: return NULL;             /* fccmpe --> NULL.  */
-    case 850: value = 851; break;      /* fcsel --> fcsel.  */
-    case 851: return NULL;             /* fcsel --> NULL.  */
-    case 131: value = 368; break;      /* movi --> sshr.  */
-    case 368: value = 370; break;      /* sshr --> srshr.  */
-    case 370: return NULL;             /* srshr --> NULL.  */
-    case 139: value = 390; break;      /* mvni --> ushr.  */
-    case 390: value = 392; break;      /* ushr --> urshr.  */
-    case 392: value = 394; break;      /* urshr --> sri.  */
-    case 394: value = 396; break;      /* sri --> sqshlu.  */
-    case 396: return NULL;             /* sqshlu --> NULL.  */
-    case 132: value = 369; break;      /* orr --> ssra.  */
-    case 369: value = 371; break;      /* ssra --> srsra.  */
-    case 371: value = 372; break;      /* srsra --> shl.  */
-    case 372: value = 373; break;      /* shl --> sqshl.  */
-    case 373: return NULL;             /* sqshl --> NULL.  */
-    case 140: value = 391; break;      /* bic --> usra.  */
-    case 391: value = 393; break;      /* usra --> ursra.  */
-    case 393: value = 395; break;      /* ursra --> sli.  */
-    case 395: value = 397; break;      /* sli --> uqshl.  */
-    case 397: return NULL;             /* uqshl --> NULL.  */
-    case 840: value = 841; break;      /* fmadd --> fmadd.  */
-    case 841: return NULL;             /* fmadd --> NULL.  */
-    case 844: value = 845; break;      /* fnmadd --> fnmadd.  */
-    case 845: return NULL;             /* fnmadd --> NULL.  */
-    case 133: value = 374; break;      /* movi --> shrn.  */
-    case 374: value = 375; break;      /* shrn --> shrn2.  */
-    case 375: value = 382; break;      /* shrn2 --> sshll.  */
-    case 382: value = 384; break;      /* sshll --> sshll2.  */
-    case 384: return NULL;             /* sshll2 --> NULL.  */
-    case 141: value = 398; break;      /* mvni --> sqshrun.  */
-    case 398: value = 399; break;      /* sqshrun --> sqshrun2.  */
-    case 399: value = 406; break;      /* sqshrun2 --> ushll.  */
-    case 406: value = 408; break;      /* ushll --> ushll2.  */
-    case 408: return NULL;             /* ushll2 --> NULL.  */
-    case 134: value = 378; break;      /* orr --> sqshrn.  */
-    case 378: value = 379; break;      /* sqshrn --> sqshrn2.  */
-    case 379: return NULL;             /* sqshrn2 --> NULL.  */
-    case 142: value = 402; break;      /* bic --> uqshrn.  */
-    case 402: value = 403; break;      /* uqshrn --> uqshrn2.  */
-    case 403: return NULL;             /* uqshrn2 --> NULL.  */
-    case 136: value = 386; break;      /* movi --> scvtf.  */
-    case 386: value = 387; break;      /* scvtf --> scvtf.  */
-    case 387: return NULL;             /* scvtf --> NULL.  */
-    case 144: value = 145; break;      /* movi --> movi.  */
-    case 145: value = 410; break;      /* movi --> ucvtf.  */
-    case 410: value = 411; break;      /* ucvtf --> ucvtf.  */
-    case 411: return NULL;             /* ucvtf --> NULL.  */
-    case 138: value = 388; break;      /* fmov --> fcvtzs.  */
-    case 388: value = 389; break;      /* fcvtzs --> fcvtzs.  */
-    case 389: return NULL;             /* fcvtzs --> NULL.  */
-    case 412: value = 413; break;      /* fcvtzu --> fcvtzu.  */
-    case 413: return NULL;             /* fcvtzu --> NULL.  */
-    case 842: value = 843; break;      /* fmsub --> fmsub.  */
-    case 843: return NULL;             /* fmsub --> NULL.  */
-    case 846: value = 847; break;      /* fnmsub --> fnmsub.  */
-    case 847: return NULL;             /* fnmsub --> NULL.  */
-    case 592: value = 593; break;      /* scvtf --> scvtf.  */
-    case 593: return NULL;             /* scvtf --> NULL.  */
-    case 594: value = 595; break;      /* fcvtzs --> fcvtzs.  */
-    case 595: return NULL;             /* fcvtzs --> NULL.  */
-    case 608: value = 609; break;      /* ucvtf --> ucvtf.  */
-    case 609: return NULL;             /* ucvtf --> NULL.  */
-    case 610: value = 611; break;      /* fcvtzu --> fcvtzu.  */
-    case 611: return NULL;             /* fcvtzu --> NULL.  */
+    case 768: value = 769; break;      /* fcvtns --> fcvtns.  */
+    case 769: return NULL;             /* fcvtns --> NULL.  */
+    case 788: value = 789; break;      /* fcvtms --> fcvtms.  */
+    case 789: return NULL;             /* fcvtms --> NULL.  */
+    case 784: value = 785; break;      /* fcvtps --> fcvtps.  */
+    case 785: return NULL;             /* fcvtps --> NULL.  */
+    case 792: value = 793; break;      /* fcvtzs --> fcvtzs.  */
+    case 793: return NULL;             /* fcvtzs --> NULL.  */
+    case 776: value = 777; break;      /* fcvtas --> fcvtas.  */
+    case 777: return NULL;             /* fcvtas --> NULL.  */
+    case 772: value = 773; break;      /* scvtf --> scvtf.  */
+    case 773: return NULL;             /* scvtf --> NULL.  */
+    case 780: value = 781; break;      /* fmov --> fmov.  */
+    case 781: return NULL;             /* fmov --> NULL.  */
+    case 770: value = 771; break;      /* fcvtnu --> fcvtnu.  */
+    case 771: return NULL;             /* fcvtnu --> NULL.  */
+    case 790: value = 791; break;      /* fcvtmu --> fcvtmu.  */
+    case 791: return NULL;             /* fcvtmu --> NULL.  */
+    case 786: value = 787; break;      /* fcvtpu --> fcvtpu.  */
+    case 787: return NULL;             /* fcvtpu --> NULL.  */
+    case 794: value = 795; break;      /* fcvtzu --> fcvtzu.  */
+    case 795: return NULL;             /* fcvtzu --> NULL.  */
+    case 778: value = 779; break;      /* fcvtau --> fcvtau.  */
+    case 779: return NULL;             /* fcvtau --> NULL.  */
+    case 774: value = 775; break;      /* ucvtf --> ucvtf.  */
+    case 775: return NULL;             /* ucvtf --> NULL.  */
+    case 782: value = 783; break;      /* fmov --> fmov.  */
+    case 783: return NULL;             /* fmov --> NULL.  */
+    case 817: value = 818; break;      /* fmov --> fmov.  */
+    case 818: return NULL;             /* fmov --> NULL.  */
+    case 826: value = 827; break;      /* frintn --> frintn.  */
+    case 827: return NULL;             /* frintn --> NULL.  */
+    case 821: value = 822; break;      /* fneg --> fneg.  */
+    case 822: return NULL;             /* fneg --> NULL.  */
+    case 830: value = 831; break;      /* frintm --> frintm.  */
+    case 831: return NULL;             /* frintm --> NULL.  */
+    case 819: value = 820; break;      /* fabs --> fabs.  */
+    case 820: return NULL;             /* fabs --> NULL.  */
+    case 828: value = 829; break;      /* frintp --> frintp.  */
+    case 829: return NULL;             /* frintp --> NULL.  */
+    case 823: value = 824; break;      /* fsqrt --> fsqrt.  */
+    case 824: return NULL;             /* fsqrt --> NULL.  */
+    case 832: value = 833; break;      /* frintz --> frintz.  */
+    case 833: return NULL;             /* frintz --> NULL.  */
+    case 825: value = 2444; break;     /* fcvt --> bfcvt.  */
+    case 2444: return NULL;            /* bfcvt --> NULL.  */
+    case 834: value = 835; break;      /* frinta --> frinta.  */
+    case 835: return NULL;             /* frinta --> NULL.  */
+    case 836: value = 837; break;      /* frintx --> frintx.  */
+    case 837: return NULL;             /* frintx --> NULL.  */
+    case 838: value = 839; break;      /* frinti --> frinti.  */
+    case 839: return NULL;             /* frinti --> NULL.  */
+    case 803: value = 804; break;      /* fcmp --> fcmp.  */
+    case 804: return NULL;             /* fcmp --> NULL.  */
+    case 805: value = 806; break;      /* fcmpe --> fcmpe.  */
+    case 806: return NULL;             /* fcmpe --> NULL.  */
+    case 807: value = 808; break;      /* fcmp --> fcmp.  */
+    case 808: return NULL;             /* fcmp --> NULL.  */
+    case 809: value = 810; break;      /* fcmpe --> fcmpe.  */
+    case 810: return NULL;             /* fcmpe --> NULL.  */
+    case 866: value = 867; break;      /* fmov --> fmov.  */
+    case 867: return NULL;             /* fmov --> NULL.  */
+    case 840: value = 841; break;      /* fmul --> fmul.  */
+    case 841: return NULL;             /* fmul --> NULL.  */
+    case 856: value = 857; break;      /* fnmul --> fnmul.  */
+    case 857: return NULL;             /* fnmul --> NULL.  */
+    case 848: value = 849; break;      /* fmax --> fmax.  */
+    case 849: return NULL;             /* fmax --> NULL.  */
+    case 844: value = 845; break;      /* fadd --> fadd.  */
+    case 845: return NULL;             /* fadd --> NULL.  */
+    case 852: value = 853; break;      /* fmaxnm --> fmaxnm.  */
+    case 853: return NULL;             /* fmaxnm --> NULL.  */
+    case 842: value = 843; break;      /* fdiv --> fdiv.  */
+    case 843: return NULL;             /* fdiv --> NULL.  */
+    case 850: value = 851; break;      /* fmin --> fmin.  */
+    case 851: return NULL;             /* fmin --> NULL.  */
+    case 846: value = 847; break;      /* fsub --> fsub.  */
+    case 847: return NULL;             /* fsub --> NULL.  */
+    case 854: value = 855; break;      /* fminnm --> fminnm.  */
+    case 855: return NULL;             /* fminnm --> NULL.  */
+    case 799: value = 800; break;      /* fccmp --> fccmp.  */
+    case 800: return NULL;             /* fccmp --> NULL.  */
+    case 801: value = 802; break;      /* fccmpe --> fccmpe.  */
+    case 802: return NULL;             /* fccmpe --> NULL.  */
+    case 868: value = 869; break;      /* fcsel --> fcsel.  */
+    case 869: return NULL;             /* fcsel --> NULL.  */
+    case 133: value = 374; break;      /* movi --> sshr.  */
+    case 374: value = 376; break;      /* sshr --> srshr.  */
+    case 376: return NULL;             /* srshr --> NULL.  */
+    case 141: value = 396; break;      /* mvni --> ushr.  */
+    case 396: value = 398; break;      /* ushr --> urshr.  */
+    case 398: value = 400; break;      /* urshr --> sri.  */
+    case 400: value = 402; break;      /* sri --> sqshlu.  */
+    case 402: return NULL;             /* sqshlu --> NULL.  */
+    case 134: value = 375; break;      /* orr --> ssra.  */
+    case 375: value = 377; break;      /* ssra --> srsra.  */
+    case 377: value = 378; break;      /* srsra --> shl.  */
+    case 378: value = 379; break;      /* shl --> sqshl.  */
+    case 379: return NULL;             /* sqshl --> NULL.  */
+    case 142: value = 397; break;      /* bic --> usra.  */
+    case 397: value = 399; break;      /* usra --> ursra.  */
+    case 399: value = 401; break;      /* ursra --> sli.  */
+    case 401: value = 403; break;      /* sli --> uqshl.  */
+    case 403: return NULL;             /* uqshl --> NULL.  */
+    case 858: value = 859; break;      /* fmadd --> fmadd.  */
+    case 859: return NULL;             /* fmadd --> NULL.  */
+    case 862: value = 863; break;      /* fnmadd --> fnmadd.  */
+    case 863: return NULL;             /* fnmadd --> NULL.  */
+    case 135: value = 380; break;      /* movi --> shrn.  */
+    case 380: value = 381; break;      /* shrn --> shrn2.  */
+    case 381: value = 388; break;      /* shrn2 --> sshll.  */
+    case 388: value = 390; break;      /* sshll --> sshll2.  */
+    case 390: return NULL;             /* sshll2 --> NULL.  */
+    case 143: value = 404; break;      /* mvni --> sqshrun.  */
+    case 404: value = 405; break;      /* sqshrun --> sqshrun2.  */
+    case 405: value = 412; break;      /* sqshrun2 --> ushll.  */
+    case 412: value = 414; break;      /* ushll --> ushll2.  */
+    case 414: return NULL;             /* ushll2 --> NULL.  */
+    case 136: value = 384; break;      /* orr --> sqshrn.  */
+    case 384: value = 385; break;      /* sqshrn --> sqshrn2.  */
+    case 385: return NULL;             /* sqshrn2 --> NULL.  */
+    case 144: value = 408; break;      /* bic --> uqshrn.  */
+    case 408: value = 409; break;      /* uqshrn --> uqshrn2.  */
+    case 409: return NULL;             /* uqshrn2 --> NULL.  */
+    case 138: value = 392; break;      /* movi --> scvtf.  */
+    case 392: value = 393; break;      /* scvtf --> scvtf.  */
+    case 393: return NULL;             /* scvtf --> NULL.  */
+    case 146: value = 147; break;      /* movi --> movi.  */
+    case 147: value = 416; break;      /* movi --> ucvtf.  */
+    case 416: value = 417; break;      /* ucvtf --> ucvtf.  */
+    case 417: return NULL;             /* ucvtf --> NULL.  */
+    case 140: value = 394; break;      /* fmov --> fcvtzs.  */
+    case 394: value = 395; break;      /* fcvtzs --> fcvtzs.  */
+    case 395: return NULL;             /* fcvtzs --> NULL.  */
+    case 418: value = 419; break;      /* fcvtzu --> fcvtzu.  */
+    case 419: return NULL;             /* fcvtzu --> NULL.  */
+    case 860: value = 861; break;      /* fmsub --> fmsub.  */
+    case 861: return NULL;             /* fmsub --> NULL.  */
+    case 864: value = 865; break;      /* fnmsub --> fnmsub.  */
+    case 865: return NULL;             /* fnmsub --> NULL.  */
+    case 598: value = 599; break;      /* scvtf --> scvtf.  */
+    case 599: return NULL;             /* scvtf --> NULL.  */
+    case 600: value = 601; break;      /* fcvtzs --> fcvtzs.  */
+    case 601: return NULL;             /* fcvtzs --> NULL.  */
+    case 614: value = 615; break;      /* ucvtf --> ucvtf.  */
+    case 615: return NULL;             /* ucvtf --> NULL.  */
+    case 616: value = 617; break;      /* fcvtzu --> fcvtzu.  */
+    case 617: return NULL;             /* fcvtzu --> NULL.  */
     default: return NULL;
     }
 
@@ -19402,124 +23478,129 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode)
     case 12: value = 13; break;        /* add --> mov.  */
     case 14: value = 15; break;        /* adds --> cmn.  */
     case 17: value = 18; break;        /* subs --> cmp.  */
-    case 20: value = 21; break;        /* adds --> cmn.  */
-    case 22: value = 23; break;        /* sub --> neg.  */
-    case 24: value = 25; break;        /* subs --> cmp.  */
-    case 150: value = 151; break;      /* umov --> mov.  */
-    case 152: value = 153; break;      /* ins --> mov.  */
+    case 22: value = 23; break;        /* adds --> cmn.  */
+    case 24: value = 25; break;        /* sub --> neg.  */
+    case 26: value = 27; break;        /* subs --> cmp.  */
+    case 152: value = 153; break;      /* umov --> mov.  */
     case 154: value = 155; break;      /* ins --> mov.  */
-    case 236: value = 237; break;      /* not --> mvn.  */
-    case 311: value = 312; break;      /* orr --> mov.  */
-    case 382: value = 383; break;      /* sshll --> sxtl.  */
-    case 384: value = 385; break;      /* sshll2 --> sxtl2.  */
-    case 406: value = 407; break;      /* ushll --> uxtl.  */
-    case 408: value = 409; break;      /* ushll2 --> uxtl2.  */
-    case 529: value = 530; break;      /* dup --> mov.  */
-    case 612: value = 617; break;      /* sbfm --> sxtw.  */
-    case 619: value = 621; break;      /* bfm --> bfc.  */
-    case 623: value = 627; break;      /* ubfm --> uxth.  */
-    case 657: value = 659; break;      /* csinc --> cset.  */
-    case 660: value = 662; break;      /* csinv --> csetm.  */
-    case 663: value = 664; break;      /* csneg --> cneg.  */
-    case 682: value = 682; break;      /* rev --> rev.  */
-    case 707: value = 708; break;      /* lslv --> lsl.  */
-    case 709: value = 710; break;      /* lsrv --> lsr.  */
-    case 711: value = 712; break;      /* asrv --> asr.  */
-    case 713: value = 714; break;      /* rorv --> ror.  */
-    case 724: value = 725; break;      /* madd --> mul.  */
-    case 726: value = 727; break;      /* msub --> mneg.  */
-    case 728: value = 729; break;      /* smaddl --> smull.  */
-    case 730: value = 731; break;      /* smsubl --> smnegl.  */
-    case 733: value = 734; break;      /* umaddl --> umull.  */
-    case 735: value = 736; break;      /* umsubl --> umnegl.  */
-    case 746: value = 747; break;      /* extr --> ror.  */
-    case 959: value = 960; break;      /* and --> bic.  */
-    case 961: value = 962; break;      /* orr --> mov.  */
-    case 964: value = 965; break;      /* ands --> tst.  */
-    case 968: value = 970; break;      /* orr --> uxtw.  */
-    case 971: value = 972; break;      /* orn --> mvn.  */
-    case 975: value = 976; break;      /* ands --> tst.  */
-    case 1006: value = 1102; break;    /* ldaddb --> staddb.  */
-    case 1007: value = 1103; break;    /* ldaddh --> staddh.  */
-    case 1008: value = 1104; break;    /* ldadd --> stadd.  */
-    case 1010: value = 1105; break;    /* ldaddlb --> staddlb.  */
-    case 1013: value = 1106; break;    /* ldaddlh --> staddlh.  */
-    case 1016: value = 1107; break;    /* ldaddl --> staddl.  */
-    case 1018: value = 1108; break;    /* ldclrb --> stclrb.  */
-    case 1019: value = 1109; break;    /* ldclrh --> stclrh.  */
-    case 1020: value = 1110; break;    /* ldclr --> stclr.  */
-    case 1022: value = 1111; break;    /* ldclrlb --> stclrlb.  */
-    case 1025: value = 1112; break;    /* ldclrlh --> stclrlh.  */
-    case 1028: value = 1113; break;    /* ldclrl --> stclrl.  */
-    case 1030: value = 1114; break;    /* ldeorb --> steorb.  */
-    case 1031: value = 1115; break;    /* ldeorh --> steorh.  */
-    case 1032: value = 1116; break;    /* ldeor --> steor.  */
-    case 1034: value = 1117; break;    /* ldeorlb --> steorlb.  */
-    case 1037: value = 1118; break;    /* ldeorlh --> steorlh.  */
-    case 1040: value = 1119; break;    /* ldeorl --> steorl.  */
-    case 1042: value = 1120; break;    /* ldsetb --> stsetb.  */
-    case 1043: value = 1121; break;    /* ldseth --> stseth.  */
-    case 1044: value = 1122; break;    /* ldset --> stset.  */
-    case 1046: value = 1123; break;    /* ldsetlb --> stsetlb.  */
-    case 1049: value = 1124; break;    /* ldsetlh --> stsetlh.  */
-    case 1052: value = 1125; break;    /* ldsetl --> stsetl.  */
-    case 1054: value = 1126; break;    /* ldsmaxb --> stsmaxb.  */
-    case 1055: value = 1127; break;    /* ldsmaxh --> stsmaxh.  */
-    case 1056: value = 1128; break;    /* ldsmax --> stsmax.  */
-    case 1058: value = 1129; break;    /* ldsmaxlb --> stsmaxlb.  */
-    case 1061: value = 1130; break;    /* ldsmaxlh --> stsmaxlh.  */
-    case 1064: value = 1131; break;    /* ldsmaxl --> stsmaxl.  */
-    case 1066: value = 1132; break;    /* ldsminb --> stsminb.  */
-    case 1067: value = 1133; break;    /* ldsminh --> stsminh.  */
-    case 1068: value = 1134; break;    /* ldsmin --> stsmin.  */
-    case 1070: value = 1135; break;    /* ldsminlb --> stsminlb.  */
-    case 1073: value = 1136; break;    /* ldsminlh --> stsminlh.  */
-    case 1076: value = 1137; break;    /* ldsminl --> stsminl.  */
-    case 1078: value = 1138; break;    /* ldumaxb --> stumaxb.  */
-    case 1079: value = 1139; break;    /* ldumaxh --> stumaxh.  */
-    case 1080: value = 1140; break;    /* ldumax --> stumax.  */
-    case 1082: value = 1141; break;    /* ldumaxlb --> stumaxlb.  */
-    case 1085: value = 1142; break;    /* ldumaxlh --> stumaxlh.  */
-    case 1088: value = 1143; break;    /* ldumaxl --> stumaxl.  */
-    case 1090: value = 1144; break;    /* lduminb --> stuminb.  */
-    case 1091: value = 1145; break;    /* lduminh --> stuminh.  */
-    case 1092: value = 1146; break;    /* ldumin --> stumin.  */
-    case 1094: value = 1147; break;    /* lduminlb --> stuminlb.  */
-    case 1097: value = 1148; break;    /* lduminlh --> stuminlh.  */
-    case 1100: value = 1149; break;    /* lduminl --> stuminl.  */
-    case 1150: value = 1151; break;    /* movn --> mov.  */
-    case 1152: value = 1153; break;    /* movz --> mov.  */
-    case 1158: value = 1192; break;    /* hint --> autibsp.  */
-    case 1177: value = 1181; break;    /* sys --> tlbi.  */
-    case 1240: value = 1990; break;    /* and --> bic.  */
-    case 1242: value = 1223; break;    /* and --> mov.  */
-    case 1243: value = 1227; break;    /* ands --> movs.  */
-    case 1278: value = 1991; break;    /* cmpge --> cmple.  */
-    case 1281: value = 1994; break;    /* cmpgt --> cmplt.  */
-    case 1283: value = 1992; break;    /* cmphi --> cmplo.  */
-    case 1286: value = 1993; break;    /* cmphs --> cmpls.  */
-    case 1308: value = 1220; break;    /* cpy --> mov.  */
-    case 1309: value = 1222; break;    /* cpy --> mov.  */
-    case 1310: value = 2001; break;    /* cpy --> fmov.  */
-    case 1322: value = 1215; break;    /* dup --> mov.  */
-    case 1323: value = 1217; break;    /* dup --> mov.  */
-    case 1324: value = 2000; break;    /* dup --> fmov.  */
-    case 1325: value = 1218; break;    /* dupm --> mov.  */
-    case 1327: value = 1995; break;    /* eor --> eon.  */
-    case 1329: value = 1228; break;    /* eor --> not.  */
-    case 1330: value = 1229; break;    /* eors --> nots.  */
-    case 1335: value = 1996; break;    /* facge --> facle.  */
-    case 1336: value = 1997; break;    /* facgt --> faclt.  */
-    case 1349: value = 1998; break;    /* fcmge --> fcmle.  */
-    case 1351: value = 1999; break;    /* fcmgt --> fcmlt.  */
-    case 1357: value = 1212; break;    /* fcpy --> fmov.  */
-    case 1380: value = 1211; break;    /* fdup --> fmov.  */
-    case 1711: value = 1213; break;    /* orr --> mov.  */
-    case 1712: value = 2002; break;    /* orr --> orn.  */
-    case 1714: value = 1216; break;    /* orr --> mov.  */
-    case 1715: value = 1226; break;    /* orrs --> movs.  */
-    case 1777: value = 1221; break;    /* sel --> mov.  */
-    case 1778: value = 1224; break;    /* sel --> mov.  */
+    case 156: value = 157; break;      /* ins --> mov.  */
+    case 242: value = 243; break;      /* not --> mvn.  */
+    case 317: value = 318; break;      /* orr --> mov.  */
+    case 388: value = 389; break;      /* sshll --> sxtl.  */
+    case 390: value = 391; break;      /* sshll2 --> sxtl2.  */
+    case 412: value = 413; break;      /* ushll --> uxtl.  */
+    case 414: value = 415; break;      /* ushll2 --> uxtl2.  */
+    case 535: value = 536; break;      /* dup --> mov.  */
+    case 618: value = 623; break;      /* sbfm --> sxtw.  */
+    case 625: value = 627; break;      /* bfm --> bfc.  */
+    case 629: value = 633; break;      /* ubfm --> uxth.  */
+    case 663: value = 665; break;      /* csinc --> cset.  */
+    case 666: value = 668; break;      /* csinv --> csetm.  */
+    case 669: value = 670; break;      /* csneg --> cneg.  */
+    case 688: value = 688; break;      /* rev --> rev.  */
+    case 713: value = 714; break;      /* lslv --> lsl.  */
+    case 715: value = 716; break;      /* lsrv --> lsr.  */
+    case 717: value = 718; break;      /* asrv --> asr.  */
+    case 719: value = 720; break;      /* rorv --> ror.  */
+    case 722: value = 723; break;      /* subps --> cmpp.  */
+    case 735: value = 736; break;      /* madd --> mul.  */
+    case 737: value = 738; break;      /* msub --> mneg.  */
+    case 739: value = 740; break;      /* smaddl --> smull.  */
+    case 741: value = 742; break;      /* smsubl --> smnegl.  */
+    case 744: value = 745; break;      /* umaddl --> umull.  */
+    case 746: value = 747; break;      /* umsubl --> umnegl.  */
+    case 758: value = 759; break;      /* extr --> ror.  */
+    case 995: value = 996; break;      /* and --> bic.  */
+    case 997: value = 998; break;      /* orr --> mov.  */
+    case 1000: value = 1001; break;    /* ands --> tst.  */
+    case 1004: value = 1006; break;    /* orr --> uxtw.  */
+    case 1007: value = 1008; break;    /* orn --> mvn.  */
+    case 1011: value = 1012; break;    /* ands --> tst.  */
+    case 1042: value = 1138; break;    /* ldaddb --> staddb.  */
+    case 1043: value = 1139; break;    /* ldaddh --> staddh.  */
+    case 1044: value = 1140; break;    /* ldadd --> stadd.  */
+    case 1046: value = 1141; break;    /* ldaddlb --> staddlb.  */
+    case 1049: value = 1142; break;    /* ldaddlh --> staddlh.  */
+    case 1052: value = 1143; break;    /* ldaddl --> staddl.  */
+    case 1054: value = 1144; break;    /* ldclrb --> stclrb.  */
+    case 1055: value = 1145; break;    /* ldclrh --> stclrh.  */
+    case 1056: value = 1146; break;    /* ldclr --> stclr.  */
+    case 1058: value = 1147; break;    /* ldclrlb --> stclrlb.  */
+    case 1061: value = 1148; break;    /* ldclrlh --> stclrlh.  */
+    case 1064: value = 1149; break;    /* ldclrl --> stclrl.  */
+    case 1066: value = 1150; break;    /* ldeorb --> steorb.  */
+    case 1067: value = 1151; break;    /* ldeorh --> steorh.  */
+    case 1068: value = 1152; break;    /* ldeor --> steor.  */
+    case 1070: value = 1153; break;    /* ldeorlb --> steorlb.  */
+    case 1073: value = 1154; break;    /* ldeorlh --> steorlh.  */
+    case 1076: value = 1155; break;    /* ldeorl --> steorl.  */
+    case 1078: value = 1156; break;    /* ldsetb --> stsetb.  */
+    case 1079: value = 1157; break;    /* ldseth --> stseth.  */
+    case 1080: value = 1158; break;    /* ldset --> stset.  */
+    case 1082: value = 1159; break;    /* ldsetlb --> stsetlb.  */
+    case 1085: value = 1160; break;    /* ldsetlh --> stsetlh.  */
+    case 1088: value = 1161; break;    /* ldsetl --> stsetl.  */
+    case 1090: value = 1162; break;    /* ldsmaxb --> stsmaxb.  */
+    case 1091: value = 1163; break;    /* ldsmaxh --> stsmaxh.  */
+    case 1092: value = 1164; break;    /* ldsmax --> stsmax.  */
+    case 1094: value = 1165; break;    /* ldsmaxlb --> stsmaxlb.  */
+    case 1097: value = 1166; break;    /* ldsmaxlh --> stsmaxlh.  */
+    case 1100: value = 1167; break;    /* ldsmaxl --> stsmaxl.  */
+    case 1102: value = 1168; break;    /* ldsminb --> stsminb.  */
+    case 1103: value = 1169; break;    /* ldsminh --> stsminh.  */
+    case 1104: value = 1170; break;    /* ldsmin --> stsmin.  */
+    case 1106: value = 1171; break;    /* ldsminlb --> stsminlb.  */
+    case 1109: value = 1172; break;    /* ldsminlh --> stsminlh.  */
+    case 1112: value = 1173; break;    /* ldsminl --> stsminl.  */
+    case 1114: value = 1174; break;    /* ldumaxb --> stumaxb.  */
+    case 1115: value = 1175; break;    /* ldumaxh --> stumaxh.  */
+    case 1116: value = 1176; break;    /* ldumax --> stumax.  */
+    case 1118: value = 1177; break;    /* ldumaxlb --> stumaxlb.  */
+    case 1121: value = 1178; break;    /* ldumaxlh --> stumaxlh.  */
+    case 1124: value = 1179; break;    /* ldumaxl --> stumaxl.  */
+    case 1126: value = 1180; break;    /* lduminb --> stuminb.  */
+    case 1127: value = 1181; break;    /* lduminh --> stuminh.  */
+    case 1128: value = 1182; break;    /* ldumin --> stumin.  */
+    case 1130: value = 1183; break;    /* lduminlb --> stuminlb.  */
+    case 1133: value = 1184; break;    /* lduminlh --> stuminlh.  */
+    case 1136: value = 1185; break;    /* lduminl --> stuminl.  */
+    case 1186: value = 1187; break;    /* movn --> mov.  */
+    case 1188: value = 1189; break;    /* movz --> mov.  */
+    case 1199: value = 1247; break;    /* hint --> autibsp.  */
+    case 1218: value = 1222; break;    /* dsb --> pssbb.  */
+    case 1219: value = 1219; break;    /* dsb --> dsb.  */
+    case 1226: value = 1235; break;    /* sys --> cpp.  */
+    case 1231: value = 1231; break;    /* wfet --> wfet.  */
+    case 1232: value = 1232; break;    /* wfit --> wfit.  */
+    case 1295: value = 2045; break;    /* and --> bic.  */
+    case 1297: value = 1278; break;    /* and --> mov.  */
+    case 1298: value = 1282; break;    /* ands --> movs.  */
+    case 1333: value = 2046; break;    /* cmpge --> cmple.  */
+    case 1336: value = 2049; break;    /* cmpgt --> cmplt.  */
+    case 1338: value = 2047; break;    /* cmphi --> cmplo.  */
+    case 1341: value = 2048; break;    /* cmphs --> cmpls.  */
+    case 1363: value = 1275; break;    /* cpy --> mov.  */
+    case 1364: value = 1277; break;    /* cpy --> mov.  */
+    case 1365: value = 2056; break;    /* cpy --> fmov.  */
+    case 1377: value = 1270; break;    /* dup --> mov.  */
+    case 1378: value = 1272; break;    /* dup --> mov.  */
+    case 1379: value = 2055; break;    /* dup --> fmov.  */
+    case 1380: value = 1273; break;    /* dupm --> mov.  */
+    case 1382: value = 2050; break;    /* eor --> eon.  */
+    case 1384: value = 1283; break;    /* eor --> not.  */
+    case 1385: value = 1284; break;    /* eors --> nots.  */
+    case 1390: value = 2051; break;    /* facge --> facle.  */
+    case 1391: value = 2052; break;    /* facgt --> faclt.  */
+    case 1404: value = 2053; break;    /* fcmge --> fcmle.  */
+    case 1406: value = 2054; break;    /* fcmgt --> fcmlt.  */
+    case 1412: value = 1267; break;    /* fcpy --> fmov.  */
+    case 1435: value = 1266; break;    /* fdup --> fmov.  */
+    case 1766: value = 1268; break;    /* orr --> mov.  */
+    case 1767: value = 2057; break;    /* orr --> orn.  */
+    case 1769: value = 1271; break;    /* orr --> mov.  */
+    case 1770: value = 1281; break;    /* orrs --> movs.  */
+    case 1832: value = 1276; break;    /* sel --> mov.  */
+    case 1833: value = 1279; break;    /* sel --> mov.  */
     default: return NULL;
     }
 
@@ -19541,167 +23622,176 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode)
     case 13: value = 12; break;        /* mov --> add.  */
     case 15: value = 14; break;        /* cmn --> adds.  */
     case 18: value = 17; break;        /* cmp --> subs.  */
-    case 21: value = 20; break;        /* cmn --> adds.  */
-    case 23: value = 22; break;        /* neg --> sub.  */
-    case 25: value = 26; break;        /* cmp --> negs.  */
-    case 26: value = 24; break;        /* negs --> subs.  */
-    case 151: value = 150; break;      /* mov --> umov.  */
-    case 153: value = 152; break;      /* mov --> ins.  */
+    case 23: value = 22; break;        /* cmn --> adds.  */
+    case 25: value = 24; break;        /* neg --> sub.  */
+    case 27: value = 28; break;        /* cmp --> negs.  */
+    case 28: value = 26; break;        /* negs --> subs.  */
+    case 153: value = 152; break;      /* mov --> umov.  */
     case 155: value = 154; break;      /* mov --> ins.  */
-    case 237: value = 236; break;      /* mvn --> not.  */
-    case 312: value = 311; break;      /* mov --> orr.  */
-    case 383: value = 382; break;      /* sxtl --> sshll.  */
-    case 385: value = 384; break;      /* sxtl2 --> sshll2.  */
-    case 407: value = 406; break;      /* uxtl --> ushll.  */
-    case 409: value = 408; break;      /* uxtl2 --> ushll2.  */
-    case 530: value = 529; break;      /* mov --> dup.  */
-    case 617: value = 616; break;      /* sxtw --> sxth.  */
-    case 616: value = 615; break;      /* sxth --> sxtb.  */
-    case 615: value = 618; break;      /* sxtb --> asr.  */
-    case 618: value = 614; break;      /* asr --> sbfx.  */
-    case 614: value = 613; break;      /* sbfx --> sbfiz.  */
-    case 613: value = 612; break;      /* sbfiz --> sbfm.  */
-    case 621: value = 622; break;      /* bfc --> bfxil.  */
-    case 622: value = 620; break;      /* bfxil --> bfi.  */
-    case 620: value = 619; break;      /* bfi --> bfm.  */
-    case 627: value = 626; break;      /* uxth --> uxtb.  */
-    case 626: value = 629; break;      /* uxtb --> lsr.  */
-    case 629: value = 628; break;      /* lsr --> lsl.  */
-    case 628: value = 625; break;      /* lsl --> ubfx.  */
-    case 625: value = 624; break;      /* ubfx --> ubfiz.  */
-    case 624: value = 623; break;      /* ubfiz --> ubfm.  */
-    case 659: value = 658; break;      /* cset --> cinc.  */
-    case 658: value = 657; break;      /* cinc --> csinc.  */
-    case 662: value = 661; break;      /* csetm --> cinv.  */
-    case 661: value = 660; break;      /* cinv --> csinv.  */
-    case 664: value = 663; break;      /* cneg --> csneg.  */
-    case 682: value = 683; break;      /* rev --> rev64.  */
-    case 708: value = 707; break;      /* lsl --> lslv.  */
-    case 710: value = 709; break;      /* lsr --> lsrv.  */
-    case 712: value = 711; break;      /* asr --> asrv.  */
-    case 714: value = 713; break;      /* ror --> rorv.  */
-    case 725: value = 724; break;      /* mul --> madd.  */
-    case 727: value = 726; break;      /* mneg --> msub.  */
-    case 729: value = 728; break;      /* smull --> smaddl.  */
-    case 731: value = 730; break;      /* smnegl --> smsubl.  */
-    case 734: value = 733; break;      /* umull --> umaddl.  */
-    case 736: value = 735; break;      /* umnegl --> umsubl.  */
-    case 747: value = 746; break;      /* ror --> extr.  */
-    case 960: value = 959; break;      /* bic --> and.  */
-    case 962: value = 961; break;      /* mov --> orr.  */
-    case 965: value = 964; break;      /* tst --> ands.  */
-    case 970: value = 969; break;      /* uxtw --> mov.  */
-    case 969: value = 968; break;      /* mov --> orr.  */
-    case 972: value = 971; break;      /* mvn --> orn.  */
-    case 976: value = 975; break;      /* tst --> ands.  */
-    case 1102: value = 1006; break;    /* staddb --> ldaddb.  */
-    case 1103: value = 1007; break;    /* staddh --> ldaddh.  */
-    case 1104: value = 1008; break;    /* stadd --> ldadd.  */
-    case 1105: value = 1010; break;    /* staddlb --> ldaddlb.  */
-    case 1106: value = 1013; break;    /* staddlh --> ldaddlh.  */
-    case 1107: value = 1016; break;    /* staddl --> ldaddl.  */
-    case 1108: value = 1018; break;    /* stclrb --> ldclrb.  */
-    case 1109: value = 1019; break;    /* stclrh --> ldclrh.  */
-    case 1110: value = 1020; break;    /* stclr --> ldclr.  */
-    case 1111: value = 1022; break;    /* stclrlb --> ldclrlb.  */
-    case 1112: value = 1025; break;    /* stclrlh --> ldclrlh.  */
-    case 1113: value = 1028; break;    /* stclrl --> ldclrl.  */
-    case 1114: value = 1030; break;    /* steorb --> ldeorb.  */
-    case 1115: value = 1031; break;    /* steorh --> ldeorh.  */
-    case 1116: value = 1032; break;    /* steor --> ldeor.  */
-    case 1117: value = 1034; break;    /* steorlb --> ldeorlb.  */
-    case 1118: value = 1037; break;    /* steorlh --> ldeorlh.  */
-    case 1119: value = 1040; break;    /* steorl --> ldeorl.  */
-    case 1120: value = 1042; break;    /* stsetb --> ldsetb.  */
-    case 1121: value = 1043; break;    /* stseth --> ldseth.  */
-    case 1122: value = 1044; break;    /* stset --> ldset.  */
-    case 1123: value = 1046; break;    /* stsetlb --> ldsetlb.  */
-    case 1124: value = 1049; break;    /* stsetlh --> ldsetlh.  */
-    case 1125: value = 1052; break;    /* stsetl --> ldsetl.  */
-    case 1126: value = 1054; break;    /* stsmaxb --> ldsmaxb.  */
-    case 1127: value = 1055; break;    /* stsmaxh --> ldsmaxh.  */
-    case 1128: value = 1056; break;    /* stsmax --> ldsmax.  */
-    case 1129: value = 1058; break;    /* stsmaxlb --> ldsmaxlb.  */
-    case 1130: value = 1061; break;    /* stsmaxlh --> ldsmaxlh.  */
-    case 1131: value = 1064; break;    /* stsmaxl --> ldsmaxl.  */
-    case 1132: value = 1066; break;    /* stsminb --> ldsminb.  */
-    case 1133: value = 1067; break;    /* stsminh --> ldsminh.  */
-    case 1134: value = 1068; break;    /* stsmin --> ldsmin.  */
-    case 1135: value = 1070; break;    /* stsminlb --> ldsminlb.  */
-    case 1136: value = 1073; break;    /* stsminlh --> ldsminlh.  */
-    case 1137: value = 1076; break;    /* stsminl --> ldsminl.  */
-    case 1138: value = 1078; break;    /* stumaxb --> ldumaxb.  */
-    case 1139: value = 1079; break;    /* stumaxh --> ldumaxh.  */
-    case 1140: value = 1080; break;    /* stumax --> ldumax.  */
-    case 1141: value = 1082; break;    /* stumaxlb --> ldumaxlb.  */
-    case 1142: value = 1085; break;    /* stumaxlh --> ldumaxlh.  */
-    case 1143: value = 1088; break;    /* stumaxl --> ldumaxl.  */
-    case 1144: value = 1090; break;    /* stuminb --> lduminb.  */
-    case 1145: value = 1091; break;    /* stuminh --> lduminh.  */
-    case 1146: value = 1092; break;    /* stumin --> ldumin.  */
-    case 1147: value = 1094; break;    /* stuminlb --> lduminlb.  */
-    case 1148: value = 1097; break;    /* stuminlh --> lduminlh.  */
-    case 1149: value = 1100; break;    /* stuminl --> lduminl.  */
-    case 1151: value = 1150; break;    /* mov --> movn.  */
-    case 1153: value = 1152; break;    /* mov --> movz.  */
-    case 1192: value = 1191; break;    /* autibsp --> autibz.  */
-    case 1191: value = 1190; break;    /* autibz --> autiasp.  */
-    case 1190: value = 1189; break;    /* autiasp --> autiaz.  */
-    case 1189: value = 1188; break;    /* autiaz --> pacibsp.  */
-    case 1188: value = 1187; break;    /* pacibsp --> pacibz.  */
-    case 1187: value = 1186; break;    /* pacibz --> paciasp.  */
-    case 1186: value = 1185; break;    /* paciasp --> paciaz.  */
-    case 1185: value = 1172; break;    /* paciaz --> psb.  */
-    case 1172: value = 1171; break;    /* psb --> esb.  */
-    case 1171: value = 1170; break;    /* esb --> autib1716.  */
-    case 1170: value = 1169; break;    /* autib1716 --> autia1716.  */
-    case 1169: value = 1168; break;    /* autia1716 --> pacib1716.  */
-    case 1168: value = 1167; break;    /* pacib1716 --> pacia1716.  */
-    case 1167: value = 1166; break;    /* pacia1716 --> xpaclri.  */
-    case 1166: value = 1165; break;    /* xpaclri --> sevl.  */
-    case 1165: value = 1164; break;    /* sevl --> sev.  */
-    case 1164: value = 1163; break;    /* sev --> wfi.  */
-    case 1163: value = 1162; break;    /* wfi --> wfe.  */
-    case 1162: value = 1161; break;    /* wfe --> yield.  */
-    case 1161: value = 1160; break;    /* yield --> csdb.  */
-    case 1160: value = 1159; break;    /* csdb --> nop.  */
-    case 1159: value = 1158; break;    /* nop --> hint.  */
-    case 1181: value = 1180; break;    /* tlbi --> ic.  */
-    case 1180: value = 1179; break;    /* ic --> dc.  */
-    case 1179: value = 1178; break;    /* dc --> at.  */
-    case 1178: value = 1177; break;    /* at --> sys.  */
-    case 1990: value = 1240; break;    /* bic --> and.  */
-    case 1223: value = 1242; break;    /* mov --> and.  */
-    case 1227: value = 1243; break;    /* movs --> ands.  */
-    case 1991: value = 1278; break;    /* cmple --> cmpge.  */
-    case 1994: value = 1281; break;    /* cmplt --> cmpgt.  */
-    case 1992: value = 1283; break;    /* cmplo --> cmphi.  */
-    case 1993: value = 1286; break;    /* cmpls --> cmphs.  */
-    case 1220: value = 1308; break;    /* mov --> cpy.  */
-    case 1222: value = 1309; break;    /* mov --> cpy.  */
-    case 2001: value = 1225; break;    /* fmov --> mov.  */
-    case 1225: value = 1310; break;    /* mov --> cpy.  */
-    case 1215: value = 1322; break;    /* mov --> dup.  */
-    case 1217: value = 1214; break;    /* mov --> mov.  */
-    case 1214: value = 1323; break;    /* mov --> dup.  */
-    case 2000: value = 1219; break;    /* fmov --> mov.  */
-    case 1219: value = 1324; break;    /* mov --> dup.  */
-    case 1218: value = 1325; break;    /* mov --> dupm.  */
-    case 1995: value = 1327; break;    /* eon --> eor.  */
-    case 1228: value = 1329; break;    /* not --> eor.  */
-    case 1229: value = 1330; break;    /* nots --> eors.  */
-    case 1996: value = 1335; break;    /* facle --> facge.  */
-    case 1997: value = 1336; break;    /* faclt --> facgt.  */
-    case 1998: value = 1349; break;    /* fcmle --> fcmge.  */
-    case 1999: value = 1351; break;    /* fcmlt --> fcmgt.  */
-    case 1212: value = 1357; break;    /* fmov --> fcpy.  */
-    case 1211: value = 1380; break;    /* fmov --> fdup.  */
-    case 1213: value = 1711; break;    /* mov --> orr.  */
-    case 2002: value = 1712; break;    /* orn --> orr.  */
-    case 1216: value = 1714; break;    /* mov --> orr.  */
-    case 1226: value = 1715; break;    /* movs --> orrs.  */
-    case 1221: value = 1777; break;    /* mov --> sel.  */
-    case 1224: value = 1778; break;    /* mov --> sel.  */
+    case 157: value = 156; break;      /* mov --> ins.  */
+    case 243: value = 242; break;      /* mvn --> not.  */
+    case 318: value = 317; break;      /* mov --> orr.  */
+    case 389: value = 388; break;      /* sxtl --> sshll.  */
+    case 391: value = 390; break;      /* sxtl2 --> sshll2.  */
+    case 413: value = 412; break;      /* uxtl --> ushll.  */
+    case 415: value = 414; break;      /* uxtl2 --> ushll2.  */
+    case 536: value = 535; break;      /* mov --> dup.  */
+    case 623: value = 622; break;      /* sxtw --> sxth.  */
+    case 622: value = 621; break;      /* sxth --> sxtb.  */
+    case 621: value = 624; break;      /* sxtb --> asr.  */
+    case 624: value = 620; break;      /* asr --> sbfx.  */
+    case 620: value = 619; break;      /* sbfx --> sbfiz.  */
+    case 619: value = 618; break;      /* sbfiz --> sbfm.  */
+    case 627: value = 628; break;      /* bfc --> bfxil.  */
+    case 628: value = 626; break;      /* bfxil --> bfi.  */
+    case 626: value = 625; break;      /* bfi --> bfm.  */
+    case 633: value = 632; break;      /* uxth --> uxtb.  */
+    case 632: value = 635; break;      /* uxtb --> lsr.  */
+    case 635: value = 634; break;      /* lsr --> lsl.  */
+    case 634: value = 631; break;      /* lsl --> ubfx.  */
+    case 631: value = 630; break;      /* ubfx --> ubfiz.  */
+    case 630: value = 629; break;      /* ubfiz --> ubfm.  */
+    case 665: value = 664; break;      /* cset --> cinc.  */
+    case 664: value = 663; break;      /* cinc --> csinc.  */
+    case 668: value = 667; break;      /* csetm --> cinv.  */
+    case 667: value = 666; break;      /* cinv --> csinv.  */
+    case 670: value = 669; break;      /* cneg --> csneg.  */
+    case 688: value = 689; break;      /* rev --> rev64.  */
+    case 714: value = 713; break;      /* lsl --> lslv.  */
+    case 716: value = 715; break;      /* lsr --> lsrv.  */
+    case 718: value = 717; break;      /* asr --> asrv.  */
+    case 720: value = 719; break;      /* ror --> rorv.  */
+    case 723: value = 722; break;      /* cmpp --> subps.  */
+    case 736: value = 735; break;      /* mul --> madd.  */
+    case 738: value = 737; break;      /* mneg --> msub.  */
+    case 740: value = 739; break;      /* smull --> smaddl.  */
+    case 742: value = 741; break;      /* smnegl --> smsubl.  */
+    case 745: value = 744; break;      /* umull --> umaddl.  */
+    case 747: value = 746; break;      /* umnegl --> umsubl.  */
+    case 759: value = 758; break;      /* ror --> extr.  */
+    case 996: value = 995; break;      /* bic --> and.  */
+    case 998: value = 997; break;      /* mov --> orr.  */
+    case 1001: value = 1000; break;    /* tst --> ands.  */
+    case 1006: value = 1005; break;    /* uxtw --> mov.  */
+    case 1005: value = 1004; break;    /* mov --> orr.  */
+    case 1008: value = 1007; break;    /* mvn --> orn.  */
+    case 1012: value = 1011; break;    /* tst --> ands.  */
+    case 1138: value = 1042; break;    /* staddb --> ldaddb.  */
+    case 1139: value = 1043; break;    /* staddh --> ldaddh.  */
+    case 1140: value = 1044; break;    /* stadd --> ldadd.  */
+    case 1141: value = 1046; break;    /* staddlb --> ldaddlb.  */
+    case 1142: value = 1049; break;    /* staddlh --> ldaddlh.  */
+    case 1143: value = 1052; break;    /* staddl --> ldaddl.  */
+    case 1144: value = 1054; break;    /* stclrb --> ldclrb.  */
+    case 1145: value = 1055; break;    /* stclrh --> ldclrh.  */
+    case 1146: value = 1056; break;    /* stclr --> ldclr.  */
+    case 1147: value = 1058; break;    /* stclrlb --> ldclrlb.  */
+    case 1148: value = 1061; break;    /* stclrlh --> ldclrlh.  */
+    case 1149: value = 1064; break;    /* stclrl --> ldclrl.  */
+    case 1150: value = 1066; break;    /* steorb --> ldeorb.  */
+    case 1151: value = 1067; break;    /* steorh --> ldeorh.  */
+    case 1152: value = 1068; break;    /* steor --> ldeor.  */
+    case 1153: value = 1070; break;    /* steorlb --> ldeorlb.  */
+    case 1154: value = 1073; break;    /* steorlh --> ldeorlh.  */
+    case 1155: value = 1076; break;    /* steorl --> ldeorl.  */
+    case 1156: value = 1078; break;    /* stsetb --> ldsetb.  */
+    case 1157: value = 1079; break;    /* stseth --> ldseth.  */
+    case 1158: value = 1080; break;    /* stset --> ldset.  */
+    case 1159: value = 1082; break;    /* stsetlb --> ldsetlb.  */
+    case 1160: value = 1085; break;    /* stsetlh --> ldsetlh.  */
+    case 1161: value = 1088; break;    /* stsetl --> ldsetl.  */
+    case 1162: value = 1090; break;    /* stsmaxb --> ldsmaxb.  */
+    case 1163: value = 1091; break;    /* stsmaxh --> ldsmaxh.  */
+    case 1164: value = 1092; break;    /* stsmax --> ldsmax.  */
+    case 1165: value = 1094; break;    /* stsmaxlb --> ldsmaxlb.  */
+    case 1166: value = 1097; break;    /* stsmaxlh --> ldsmaxlh.  */
+    case 1167: value = 1100; break;    /* stsmaxl --> ldsmaxl.  */
+    case 1168: value = 1102; break;    /* stsminb --> ldsminb.  */
+    case 1169: value = 1103; break;    /* stsminh --> ldsminh.  */
+    case 1170: value = 1104; break;    /* stsmin --> ldsmin.  */
+    case 1171: value = 1106; break;    /* stsminlb --> ldsminlb.  */
+    case 1172: value = 1109; break;    /* stsminlh --> ldsminlh.  */
+    case 1173: value = 1112; break;    /* stsminl --> ldsminl.  */
+    case 1174: value = 1114; break;    /* stumaxb --> ldumaxb.  */
+    case 1175: value = 1115; break;    /* stumaxh --> ldumaxh.  */
+    case 1176: value = 1116; break;    /* stumax --> ldumax.  */
+    case 1177: value = 1118; break;    /* stumaxlb --> ldumaxlb.  */
+    case 1178: value = 1121; break;    /* stumaxlh --> ldumaxlh.  */
+    case 1179: value = 1124; break;    /* stumaxl --> ldumaxl.  */
+    case 1180: value = 1126; break;    /* stuminb --> lduminb.  */
+    case 1181: value = 1127; break;    /* stuminh --> lduminh.  */
+    case 1182: value = 1128; break;    /* stumin --> ldumin.  */
+    case 1183: value = 1130; break;    /* stuminlb --> lduminlb.  */
+    case 1184: value = 1133; break;    /* stuminlh --> lduminlh.  */
+    case 1185: value = 1136; break;    /* stuminl --> lduminl.  */
+    case 1187: value = 1186; break;    /* mov --> movn.  */
+    case 1189: value = 1188; break;    /* mov --> movz.  */
+    case 1247: value = 1246; break;    /* autibsp --> autibz.  */
+    case 1246: value = 1245; break;    /* autibz --> autiasp.  */
+    case 1245: value = 1244; break;    /* autiasp --> autiaz.  */
+    case 1244: value = 1243; break;    /* autiaz --> pacibsp.  */
+    case 1243: value = 1242; break;    /* pacibsp --> pacibz.  */
+    case 1242: value = 1241; break;    /* pacibz --> paciasp.  */
+    case 1241: value = 1240; break;    /* paciasp --> paciaz.  */
+    case 1240: value = 1216; break;    /* paciaz --> tsb.  */
+    case 1216: value = 1215; break;    /* tsb --> psb.  */
+    case 1215: value = 1214; break;    /* psb --> esb.  */
+    case 1214: value = 1213; break;    /* esb --> autib1716.  */
+    case 1213: value = 1212; break;    /* autib1716 --> autia1716.  */
+    case 1212: value = 1211; break;    /* autia1716 --> pacib1716.  */
+    case 1211: value = 1210; break;    /* pacib1716 --> pacia1716.  */
+    case 1210: value = 1209; break;    /* pacia1716 --> xpaclri.  */
+    case 1209: value = 1207; break;    /* xpaclri --> sevl.  */
+    case 1207: value = 1206; break;    /* sevl --> sev.  */
+    case 1206: value = 1205; break;    /* sev --> wfi.  */
+    case 1205: value = 1204; break;    /* wfi --> wfe.  */
+    case 1204: value = 1203; break;    /* wfe --> yield.  */
+    case 1203: value = 1202; break;    /* yield --> bti.  */
+    case 1202: value = 1201; break;    /* bti --> csdb.  */
+    case 1201: value = 1200; break;    /* csdb --> nop.  */
+    case 1200: value = 1199; break;    /* nop --> hint.  */
+    case 1222: value = 1221; break;    /* pssbb --> ssbb.  */
+    case 1221: value = 1220; break;    /* ssbb --> dfb.  */
+    case 1220: value = 1218; break;    /* dfb --> dsb.  */
+    case 1235: value = 1234; break;    /* cpp --> dvp.  */
+    case 1234: value = 1233; break;    /* dvp --> cfp.  */
+    case 1233: value = 1230; break;    /* cfp --> tlbi.  */
+    case 1230: value = 1229; break;    /* tlbi --> ic.  */
+    case 1229: value = 1228; break;    /* ic --> dc.  */
+    case 1228: value = 1227; break;    /* dc --> at.  */
+    case 1227: value = 1226; break;    /* at --> sys.  */
+    case 2045: value = 1295; break;    /* bic --> and.  */
+    case 1278: value = 1297; break;    /* mov --> and.  */
+    case 1282: value = 1298; break;    /* movs --> ands.  */
+    case 2046: value = 1333; break;    /* cmple --> cmpge.  */
+    case 2049: value = 1336; break;    /* cmplt --> cmpgt.  */
+    case 2047: value = 1338; break;    /* cmplo --> cmphi.  */
+    case 2048: value = 1341; break;    /* cmpls --> cmphs.  */
+    case 1275: value = 1363; break;    /* mov --> cpy.  */
+    case 1277: value = 1364; break;    /* mov --> cpy.  */
+    case 2056: value = 1280; break;    /* fmov --> mov.  */
+    case 1280: value = 1365; break;    /* mov --> cpy.  */
+    case 1270: value = 1377; break;    /* mov --> dup.  */
+    case 1272: value = 1269; break;    /* mov --> mov.  */
+    case 1269: value = 1378; break;    /* mov --> dup.  */
+    case 2055: value = 1274; break;    /* fmov --> mov.  */
+    case 1274: value = 1379; break;    /* mov --> dup.  */
+    case 1273: value = 1380; break;    /* mov --> dupm.  */
+    case 2050: value = 1382; break;    /* eon --> eor.  */
+    case 1283: value = 1384; break;    /* not --> eor.  */
+    case 1284: value = 1385; break;    /* nots --> eors.  */
+    case 2051: value = 1390; break;    /* facle --> facge.  */
+    case 2052: value = 1391; break;    /* faclt --> facgt.  */
+    case 2053: value = 1404; break;    /* fcmle --> fcmge.  */
+    case 2054: value = 1406; break;    /* fcmlt --> fcmgt.  */
+    case 1267: value = 1412; break;    /* fmov --> fcpy.  */
+    case 1266: value = 1435; break;    /* fmov --> fdup.  */
+    case 1268: value = 1766; break;    /* mov --> orr.  */
+    case 2057: value = 1767; break;    /* orn --> orr.  */
+    case 1271: value = 1769; break;    /* mov --> orr.  */
+    case 1281: value = 1770; break;    /* movs --> orrs.  */
+    case 1276: value = 1832; break;    /* mov --> sel.  */
+    case 1279: value = 1833; break;    /* mov --> sel.  */
     default: return NULL;
     }
 
@@ -19725,15 +23815,15 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 5:
     case 6:
     case 7:
+    case 8:
     case 9:
-    case 10:
     case 11:
-    case 15:
-    case 16:
+    case 12:
+    case 13:
     case 17:
     case 18:
+    case 19:
     case 20:
-    case 21:
     case 22:
     case 23:
     case 24:
@@ -19742,58 +23832,58 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 27:
     case 28:
     case 29:
-    case 153:
-    case 154:
-    case 155:
-    case 156:
-    case 157:
-    case 158:
-    case 159:
-    case 160:
-    case 161:
-    case 162:
+    case 30:
+    case 31:
+    case 166:
+    case 167:
+    case 168:
+    case 169:
+    case 170:
+    case 171:
+    case 172:
+    case 173:
+    case 174:
     case 175:
-    case 176:
-    case 177:
-    case 178:
-    case 179:
-    case 180:
-    case 181:
-    case 182:
-    case 183:
-    case 187:
     case 190:
+    case 191:
+    case 192:
+    case 193:
+    case 194:
+    case 195:
+    case 196:
+    case 197:
+    case 198:
+    case 204:
+    case 207:
       return aarch64_ext_regno (self, info, code, inst, errors);
-    case 8:
+    case 10:
       return aarch64_ext_regrt_sysins (self, info, code, inst, errors);
-    case 12:
+    case 14:
       return aarch64_ext_regno_pair (self, info, code, inst, errors);
-    case 13:
+    case 15:
       return aarch64_ext_reg_extended (self, info, code, inst, errors);
-    case 14:
+    case 16:
       return aarch64_ext_reg_shifted (self, info, code, inst, errors);
-    case 19:
+    case 21:
       return aarch64_ext_ft (self, info, code, inst, errors);
-    case 30:
-    case 31:
     case 32:
     case 33:
-    case 192:
-      return aarch64_ext_reglane (self, info, code, inst, errors);
     case 34:
-      return aarch64_ext_reglist (self, info, code, inst, errors);
     case 35:
-      return aarch64_ext_ldst_reglist (self, info, code, inst, errors);
+    case 210:
+      return aarch64_ext_reglane (self, info, code, inst, errors);
     case 36:
-      return aarch64_ext_ldst_reglist_r (self, info, code, inst, errors);
+      return aarch64_ext_reglist (self, info, code, inst, errors);
     case 37:
-      return aarch64_ext_ldst_elemlist (self, info, code, inst, errors);
+      return aarch64_ext_ldst_reglist (self, info, code, inst, errors);
     case 38:
+      return aarch64_ext_ldst_reglist_r (self, info, code, inst, errors);
     case 39:
+      return aarch64_ext_ldst_elemlist (self, info, code, inst, errors);
     case 40:
     case 41:
-    case 51:
-    case 52:
+    case 42:
+    case 43:
     case 53:
     case 54:
     case 55:
@@ -19806,116 +23896,119 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 62:
     case 63:
     case 64:
-    case 75:
-    case 76:
-    case 77:
-    case 78:
-    case 79:
-    case 150:
-    case 152:
-    case 167:
-    case 168:
-    case 169:
-    case 170:
-    case 171:
-    case 172:
-    case 173:
-    case 174:
+    case 65:
+    case 66:
+    case 67:
+    case 68:
+    case 69:
+    case 80:
+    case 81:
+    case 82:
+    case 83:
+    case 84:
+    case 163:
+    case 165:
+    case 182:
+    case 183:
+    case 184:
+    case 185:
+    case 186:
+    case 187:
+    case 188:
+    case 189:
+    case 209:
       return aarch64_ext_imm (self, info, code, inst, errors);
-    case 42:
-    case 43:
-      return aarch64_ext_advsimd_imm_shift (self, info, code, inst, errors);
     case 44:
     case 45:
+      return aarch64_ext_advsimd_imm_shift (self, info, code, inst, errors);
     case 46:
-      return aarch64_ext_advsimd_imm_modified (self, info, code, inst, errors);
     case 47:
+    case 48:
+      return aarch64_ext_advsimd_imm_modified (self, info, code, inst, errors);
+    case 49:
       return aarch64_ext_shll_imm (self, info, code, inst, errors);
-    case 50:
-    case 141:
+    case 52:
+    case 153:
       return aarch64_ext_fpimm (self, info, code, inst, errors);
-    case 65:
-    case 148:
+    case 70:
+    case 161:
       return aarch64_ext_limm (self, info, code, inst, errors);
-    case 66:
+    case 71:
       return aarch64_ext_aimm (self, info, code, inst, errors);
-    case 67:
+    case 72:
       return aarch64_ext_imm_half (self, info, code, inst, errors);
-    case 68:
+    case 73:
       return aarch64_ext_fbits (self, info, code, inst, errors);
-    case 70:
-    case 71:
-    case 146:
+    case 75:
+    case 76:
+    case 158:
       return aarch64_ext_imm_rotate2 (self, info, code, inst, errors);
-    case 72:
-    case 145:
+    case 77:
+    case 157:
+    case 159:
       return aarch64_ext_imm_rotate1 (self, info, code, inst, errors);
-    case 73:
-    case 74:
+    case 78:
+    case 79:
       return aarch64_ext_cond (self, info, code, inst, errors);
-    case 80:
-    case 87:
-      return aarch64_ext_addr_simple (self, info, code, inst, errors);
-    case 81:
-      return aarch64_ext_addr_regoff (self, info, code, inst, errors);
-    case 82:
-    case 83:
-    case 84:
-      return aarch64_ext_addr_simm (self, info, code, inst, errors);
     case 85:
-      return aarch64_ext_addr_simm10 (self, info, code, inst, errors);
+    case 94:
+      return aarch64_ext_addr_simple (self, info, code, inst, errors);
     case 86:
-      return aarch64_ext_addr_uimm12 (self, info, code, inst, errors);
+      return aarch64_ext_addr_regoff (self, info, code, inst, errors);
+    case 87:
     case 88:
-      return aarch64_ext_addr_offset (self, info, code, inst, errors);
     case 89:
-      return aarch64_ext_simd_addr_post (self, info, code, inst, errors);
-    case 90:
-      return aarch64_ext_sysreg (self, info, code, inst, errors);
     case 91:
-      return aarch64_ext_pstatefield (self, info, code, inst, errors);
-    case 92:
     case 93:
-    case 94:
+      return aarch64_ext_addr_simm (self, info, code, inst, errors);
+    case 90:
+      return aarch64_ext_addr_simm10 (self, info, code, inst, errors);
+    case 92:
+      return aarch64_ext_addr_uimm12 (self, info, code, inst, errors);
     case 95:
-      return aarch64_ext_sysins_op (self, info, code, inst, errors);
+      return aarch64_ext_addr_offset (self, info, code, inst, errors);
     case 96:
+      return aarch64_ext_simd_addr_post (self, info, code, inst, errors);
     case 97:
-      return aarch64_ext_barrier (self, info, code, inst, errors);
+      return aarch64_ext_sysreg (self, info, code, inst, errors);
     case 98:
-      return aarch64_ext_prfop (self, info, code, inst, errors);
+      return aarch64_ext_pstatefield (self, info, code, inst, errors);
     case 99:
-      return aarch64_ext_hint (self, info, code, inst, errors);
     case 100:
-      return aarch64_ext_sve_addr_ri_s4 (self, info, code, inst, errors);
     case 101:
     case 102:
     case 103:
+      return aarch64_ext_sysins_op (self, info, code, inst, errors);
     case 104:
-      return aarch64_ext_sve_addr_ri_s4xvl (self, info, code, inst, errors);
-    case 105:
-      return aarch64_ext_sve_addr_ri_s6xvl (self, info, code, inst, errors);
     case 106:
-      return aarch64_ext_sve_addr_ri_s9xvl (self, info, code, inst, errors);
+      return aarch64_ext_barrier (self, info, code, inst, errors);
+    case 105:
+      return aarch64_ext_barrier_dsb_nxs (self, info, code, inst, errors);
     case 107:
+      return aarch64_ext_prfop (self, info, code, inst, errors);
     case 108:
+      return aarch64_ext_none (self, info, code, inst, errors);
     case 109:
+      return aarch64_ext_hint (self, info, code, inst, errors);
     case 110:
-      return aarch64_ext_sve_addr_ri_u6 (self, info, code, inst, errors);
     case 111:
+      return aarch64_ext_sve_addr_ri_s4 (self, info, code, inst, errors);
     case 112:
     case 113:
     case 114:
     case 115:
+      return aarch64_ext_sve_addr_ri_s4xvl (self, info, code, inst, errors);
     case 116:
+      return aarch64_ext_sve_addr_ri_s6xvl (self, info, code, inst, errors);
     case 117:
+      return aarch64_ext_sve_addr_ri_s9xvl (self, info, code, inst, errors);
     case 118:
     case 119:
     case 120:
     case 121:
+      return aarch64_ext_sve_addr_ri_u6 (self, info, code, inst, errors);
     case 122:
     case 123:
-      return aarch64_ext_sve_addr_rr_lsl (self, info, code, inst, errors);
     case 124:
     case 125:
     case 126:
@@ -19924,48 +24017,65 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 129:
     case 130:
     case 131:
-      return aarch64_ext_sve_addr_rz_xtw (self, info, code, inst, errors);
     case 132:
     case 133:
     case 134:
     case 135:
-      return aarch64_ext_sve_addr_zi_u5 (self, info, code, inst, errors);
+      return aarch64_ext_sve_addr_rr_lsl (self, info, code, inst, errors);
     case 136:
-      return aarch64_ext_sve_addr_zz_lsl (self, info, code, inst, errors);
     case 137:
-      return aarch64_ext_sve_addr_zz_sxtw (self, info, code, inst, errors);
     case 138:
-      return aarch64_ext_sve_addr_zz_uxtw (self, info, code, inst, errors);
     case 139:
-      return aarch64_ext_sve_aimm (self, info, code, inst, errors);
     case 140:
-      return aarch64_ext_sve_asimm (self, info, code, inst, errors);
+    case 141:
     case 142:
-      return aarch64_ext_sve_float_half_one (self, info, code, inst, errors);
     case 143:
-      return aarch64_ext_sve_float_half_two (self, info, code, inst, errors);
+      return aarch64_ext_sve_addr_rz_xtw (self, info, code, inst, errors);
     case 144:
-      return aarch64_ext_sve_float_zero_one (self, info, code, inst, errors);
+    case 145:
+    case 146:
     case 147:
-      return aarch64_ext_inv_limm (self, info, code, inst, errors);
+      return aarch64_ext_sve_addr_zi_u5 (self, info, code, inst, errors);
+    case 148:
+      return aarch64_ext_sve_addr_zz_lsl (self, info, code, inst, errors);
     case 149:
-      return aarch64_ext_sve_limm_mov (self, info, code, inst, errors);
+      return aarch64_ext_sve_addr_zz_sxtw (self, info, code, inst, errors);
+    case 150:
+      return aarch64_ext_sve_addr_zz_uxtw (self, info, code, inst, errors);
     case 151:
-      return aarch64_ext_sve_scale (self, info, code, inst, errors);
-    case 163:
+      return aarch64_ext_sve_aimm (self, info, code, inst, errors);
+    case 152:
+      return aarch64_ext_sve_asimm (self, info, code, inst, errors);
+    case 154:
+      return aarch64_ext_sve_float_half_one (self, info, code, inst, errors);
+    case 155:
+      return aarch64_ext_sve_float_half_two (self, info, code, inst, errors);
+    case 156:
+      return aarch64_ext_sve_float_zero_one (self, info, code, inst, errors);
+    case 160:
+      return aarch64_ext_inv_limm (self, info, code, inst, errors);
+    case 162:
+      return aarch64_ext_sve_limm_mov (self, info, code, inst, errors);
     case 164:
+      return aarch64_ext_sve_scale (self, info, code, inst, errors);
+    case 176:
+    case 177:
+    case 178:
       return aarch64_ext_sve_shlimm (self, info, code, inst, errors);
-    case 165:
-    case 166:
+    case 179:
+    case 180:
+    case 181:
       return aarch64_ext_sve_shrimm (self, info, code, inst, errors);
-    case 184:
-    case 185:
-    case 186:
+    case 199:
+    case 200:
+    case 201:
+    case 202:
+    case 203:
       return aarch64_ext_sve_quad_index (self, info, code, inst, errors);
-    case 188:
+    case 205:
       return aarch64_ext_sve_index (self, info, code, inst, errors);
-    case 189:
-    case 191:
+    case 206:
+    case 208:
       return aarch64_ext_sve_reglist (self, info, code, inst, errors);
     default: assert (0); abort ();
     }