Modify AArch64 Assembly and disassembly functions to be able to fail and report why.
[deliverable/binutils-gdb.git] / opcodes / aarch64-dis-2.c
index 3af371ccd372c16e323cb0638d27b433e255de52..c4ec3ca1a3ae35e55f901d1c0ba6deab7483b68a 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is automatically generated by aarch64-gen.  Do not edit!  */
-/* Copyright (C) 2012-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2018 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of the GNU opcodes library.
@@ -38,17 +38,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                     {
                       /* 33222222222211111111110000000000
                          10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxx0000xxx0
+                         0xxx0000xxxxxxxxxxxxxxxxxxxxxxxx
                          adr.  */
-                      return 1115;
+                      return 1155;
                     }
                   else
                     {
                       /* 33222222222211111111110000000000
                          10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxxx0000xxx1
+                         1xxx0000xxxxxxxxxxxxxxxxxxxxxxxx
                          adrp.  */
-                      return 1116;
+                      return 1156;
                     }
                 }
               else
@@ -59,7 +59,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx1000x00x
+                             x00x0001xxxxxxxxxxxxxxxxxxxxxxxx
                              add.  */
                           return 12;
                         }
@@ -67,7 +67,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx1000x01x
+                             x10x0001xxxxxxxxxxxxxxxxxxxxxxxx
                              sub.  */
                           return 16;
                         }
@@ -78,7 +78,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx1000x10x
+                             x01x0001xxxxxxxxxxxxxxxxxxxxxxxx
                              adds.  */
                           return 14;
                         }
@@ -86,7 +86,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx1000x11x
+                             x11x0001xxxxxxxxxxxxxxxxxxxxxxxx
                              subs.  */
                           return 17;
                         }
@@ -113,26 +113,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx000x0010000
+                                                 0000100x000xxxxx0xxxxxxxxxxxxxxx
                                                  stxrb.  */
-                                              return 873;
+                                              return 910;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx000x0010010
+                                                 0100100x000xxxxx0xxxxxxxxxxxxxxx
                                                  stxrh.  */
-                                              return 879;
+                                              return 916;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx000x00100x1
+                                             1x00100x000xxxxx0xxxxxxxxxxxxxxx
                                              stxr.  */
-                                          return 885;
+                                          return 922;
                                         }
                                     }
                                   else
@@ -141,17 +141,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx100x00100x0
+                                             0x00100x001xxxxx0xxxxxxxxxxxxxxx
                                              casp.  */
-                                          return 950;
+                                          return 990;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx100x00100x1
+                                             1x00100x001xxxxx0xxxxxxxxxxxxxxx
                                              stxp.  */
-                                          return 887;
+                                          return 924;
                                         }
                                     }
                                 }
@@ -165,26 +165,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx000x0010000
+                                                 0000100x000xxxxx1xxxxxxxxxxxxxxx
                                                  stlxrb.  */
-                                              return 874;
+                                              return 911;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx000x0010010
+                                                 0100100x000xxxxx1xxxxxxxxxxxxxxx
                                                  stlxrh.  */
-                                              return 880;
+                                              return 917;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx000x00100x1
+                                             1x00100x000xxxxx1xxxxxxxxxxxxxxx
                                              stlxr.  */
-                                          return 886;
+                                          return 923;
                                         }
                                     }
                                   else
@@ -193,17 +193,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx100x00100x0
+                                             0x00100x001xxxxx1xxxxxxxxxxxxxxx
                                              caspl.  */
-                                          return 952;
+                                          return 992;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx100x00100x1
+                                             1x00100x001xxxxx1xxxxxxxxxxxxxxx
                                              stlxp.  */
-                                          return 888;
+                                          return 925;
                                         }
                                     }
                                 }
@@ -212,9 +212,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxx00x00101xx
+                                 xx10100x00xxxxxxxxxxxxxxxxxxxxxx
                                  stnp.  */
-                              return 901;
+                              return 941;
                             }
                         }
                       else
@@ -229,17 +229,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx001x00100x0
+                                             0x00100x100xxxxx0xxxxxxxxxxxxxxx
                                              stllrb.  */
-                                          return 899;
+                                          return 939;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx001x00100x1
+                                             1x00100x100xxxxx0xxxxxxxxxxxxxxx
                                              stllr.  */
-                                          return 898;
+                                          return 938;
                                         }
                                     }
                                   else
@@ -250,26 +250,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx101x0010000
+                                                 0000100x101xxxxx0xxxxxxxxxxxxxxx
                                                  casb.  */
-                                              return 938;
+                                              return 978;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx101x0010010
+                                                 0100100x101xxxxx0xxxxxxxxxxxxxxx
                                                  cash.  */
-                                              return 939;
+                                              return 979;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx101x00100x1
+                                             1x00100x101xxxxx0xxxxxxxxxxxxxxx
                                              cas.  */
-                                          return 940;
+                                          return 980;
                                         }
                                     }
                                 }
@@ -283,26 +283,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx001x0010000
+                                                 0000100x100xxxxx1xxxxxxxxxxxxxxx
                                                  stlrb.  */
-                                              return 877;
+                                              return 914;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx001x0010010
+                                                 0100100x100xxxxx1xxxxxxxxxxxxxxx
                                                  stlrh.  */
-                                              return 883;
+                                              return 920;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx001x00100x1
+                                             1x00100x100xxxxx1xxxxxxxxxxxxxxx
                                              stlr.  */
-                                          return 893;
+                                          return 930;
                                         }
                                     }
                                   else
@@ -313,26 +313,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx101x0010000
+                                                 0000100x101xxxxx1xxxxxxxxxxxxxxx
                                                  caslb.  */
-                                              return 942;
+                                              return 982;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx101x0010010
+                                                 0100100x101xxxxx1xxxxxxxxxxxxxxx
                                                  caslh.  */
-                                              return 945;
+                                              return 985;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx101x00100x1
+                                             1x00100x101xxxxx1xxxxxxxxxxxxxxx
                                              casl.  */
-                                          return 948;
+                                          return 988;
                                         }
                                     }
                                 }
@@ -341,9 +341,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxx01x00101xx
+                                 xx10100x10xxxxxxxxxxxxxxxxxxxxxx
                                  stp.  */
-                              return 910;
+                              return 950;
                             }
                         }
                     }
@@ -363,26 +363,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx010x0010000
+                                                 0000100x010xxxxx0xxxxxxxxxxxxxxx
                                                  ldxrb.  */
-                                              return 875;
+                                              return 912;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx010x0010010
+                                                 0100100x010xxxxx0xxxxxxxxxxxxxxx
                                                  ldxrh.  */
-                                              return 881;
+                                              return 918;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx010x00100x1
+                                             1x00100x010xxxxx0xxxxxxxxxxxxxxx
                                              ldxr.  */
-                                          return 889;
+                                          return 926;
                                         }
                                     }
                                   else
@@ -391,17 +391,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx110x00100x0
+                                             0x00100x011xxxxx0xxxxxxxxxxxxxxx
                                              caspa.  */
-                                          return 951;
+                                          return 991;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx110x00100x1
+                                             1x00100x011xxxxx0xxxxxxxxxxxxxxx
                                              ldxp.  */
-                                          return 891;
+                                          return 928;
                                         }
                                     }
                                 }
@@ -415,26 +415,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx010x0010000
+                                                 0000100x010xxxxx1xxxxxxxxxxxxxxx
                                                  ldaxrb.  */
-                                              return 876;
+                                              return 913;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx010x0010010
+                                                 0100100x010xxxxx1xxxxxxxxxxxxxxx
                                                  ldaxrh.  */
-                                              return 882;
+                                              return 919;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx010x00100x1
+                                             1x00100x010xxxxx1xxxxxxxxxxxxxxx
                                              ldaxr.  */
-                                          return 890;
+                                          return 927;
                                         }
                                     }
                                   else
@@ -443,17 +443,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx110x00100x0
+                                             0x00100x011xxxxx1xxxxxxxxxxxxxxx
                                              caspal.  */
-                                          return 953;
+                                          return 993;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx110x00100x1
+                                             1x00100x011xxxxx1xxxxxxxxxxxxxxx
                                              ldaxp.  */
-                                          return 892;
+                                          return 929;
                                         }
                                     }
                                 }
@@ -464,17 +464,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx10x001010x
+                                     x010100x01xxxxxxxxxxxxxxxxxxxxxx
                                      ldnp.  */
-                                  return 902;
+                                  return 942;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx10x001011x
+                                     x110100x01xxxxxxxxxxxxxxxxxxxxxx
                                      ldpsw.  */
-                                  return 909;
+                                  return 949;
                                 }
                             }
                         }
@@ -492,26 +492,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx011x0010000
+                                                 0000100x110xxxxx0xxxxxxxxxxxxxxx
                                                  ldlarb.  */
-                                              return 896;
+                                              return 936;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx011x0010010
+                                                 0100100x110xxxxx0xxxxxxxxxxxxxxx
                                                  ldlarh.  */
-                                              return 897;
+                                              return 937;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx011x00100x1
+                                             1x00100x110xxxxx0xxxxxxxxxxxxxxx
                                              ldlar.  */
-                                          return 895;
+                                          return 935;
                                         }
                                     }
                                   else
@@ -522,26 +522,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx111x0010000
+                                                 0000100x111xxxxx0xxxxxxxxxxxxxxx
                                                  casab.  */
-                                              return 941;
+                                              return 981;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx0xxxxx111x0010010
+                                                 0100100x111xxxxx0xxxxxxxxxxxxxxx
                                                  casah.  */
-                                              return 944;
+                                              return 984;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxxx111x00100x1
+                                             1x00100x111xxxxx0xxxxxxxxxxxxxxx
                                              casa.  */
-                                          return 947;
+                                          return 987;
                                         }
                                     }
                                 }
@@ -555,26 +555,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx011x0010000
+                                                 0000100x110xxxxx1xxxxxxxxxxxxxxx
                                                  ldarb.  */
-                                              return 878;
+                                              return 915;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx011x0010010
+                                                 0100100x110xxxxx1xxxxxxxxxxxxxxx
                                                  ldarh.  */
-                                              return 884;
+                                              return 921;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx011x00100x1
+                                             1x00100x110xxxxx1xxxxxxxxxxxxxxx
                                              ldar.  */
-                                          return 894;
+                                          return 931;
                                         }
                                     }
                                   else
@@ -585,26 +585,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx111x0010000
+                                                 0000100x111xxxxx1xxxxxxxxxxxxxxx
                                                  casalb.  */
-                                              return 943;
+                                              return 983;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxx1xxxxx111x0010010
+                                                 0100100x111xxxxx1xxxxxxxxxxxxxxx
                                                  casalh.  */
-                                              return 946;
+                                              return 986;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxxx111x00100x1
+                                             1x00100x111xxxxx1xxxxxxxxxxxxxxx
                                              casal.  */
-                                          return 949;
+                                          return 989;
                                         }
                                     }
                                 }
@@ -615,17 +615,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx11x001010x
+                                     x010100x11xxxxxxxxxxxxxxxxxxxxxx
                                      ldp.  */
-                                  return 911;
+                                  return 951;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx11x001011x
+                                     x110100x11xxxxxxxxxxxxxxxxxxxxxx
                                      ldpsw.  */
-                                  return 914;
+                                  return 954;
                                 }
                             }
                         }
@@ -641,9 +641,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxxx000110x0
+                                 0x011000xxxxxxxxxxxxxxxxxxxxxxxx
                                  ldr.  */
-                              return 915;
+                              return 955;
                             }
                           else
                             {
@@ -651,17 +651,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxxx00011001
+                                     10011000xxxxxxxxxxxxxxxxxxxxxxxx
                                      ldrsw.  */
-                                  return 917;
+                                  return 957;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxxx00011011
+                                     11011000xxxxxxxxxxxxxxxxxxxxxxxx
                                      prfm.  */
-                                  return 918;
+                                  return 958;
                                 }
                             }
                         }
@@ -683,26 +683,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00xxxxxxxxx00000011100
+                                                         00111000000xxxxxxxxx00xxxxxxxxxx
                                                          sturb.  */
-                                                      return 861;
+                                                      return 896;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00xxxxxxxxx00000011110
+                                                         01111000000xxxxxxxxx00xxxxxxxxxx
                                                          sturh.  */
-                                                      return 866;
+                                                      return 901;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx000000111x1
+                                                     1x111000000xxxxxxxxx00xxxxxxxxxx
                                                      stur.  */
-                                                  return 869;
+                                                  return 904;
                                                 }
                                             }
                                           else
@@ -713,26 +713,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00xxxxxxxxx01000011100
+                                                         00111000010xxxxxxxxx00xxxxxxxxxx
                                                          ldurb.  */
-                                                      return 862;
+                                                      return 897;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00xxxxxxxxx01000011110
+                                                         01111000010xxxxxxxxx00xxxxxxxxxx
                                                          ldurh.  */
-                                                      return 867;
+                                                      return 902;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx010000111x1
+                                                     1x111000010xxxxxxxxx00xxxxxxxxxx
                                                      ldur.  */
-                                                  return 870;
+                                                  return 905;
                                                 }
                                             }
                                         }
@@ -744,17 +744,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0x100011100
+                                                     001110001x0xxxxxxxxx00xxxxxxxxxx
                                                      ldursb.  */
-                                                  return 863;
+                                                  return 898;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0x100011101
+                                                     101110001x0xxxxxxxxx00xxxxxxxxxx
                                                      ldursw.  */
-                                                  return 871;
+                                                  return 906;
                                                 }
                                             }
                                           else
@@ -763,17 +763,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0x100011110
+                                                     011110001x0xxxxxxxxx00xxxxxxxxxx
                                                      ldursh.  */
-                                                  return 868;
+                                                  return 903;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0x100011111
+                                                     111110001x0xxxxxxxxx00xxxxxxxxxx
                                                      prfum.  */
-                                                  return 872;
+                                                  return 907;
                                                 }
                                             }
                                         }
@@ -798,26 +798,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx10000011100
+                                                                         00111000001xxxxx000000xxxxxxxxxx
                                                                          ldaddb.  */
-                                                                      return 966;
+                                                                      return 1006;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx10000011110
+                                                                         01111000001xxxxx000000xxxxxxxxxx
                                                                          ldaddh.  */
-                                                                      return 967;
+                                                                      return 1007;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000000xxxxx100000111x1
+                                                                     1x111000001xxxxx000000xxxxxxxxxx
                                                                      ldadd.  */
-                                                                  return 968;
+                                                                  return 1008;
                                                                 }
                                                             }
                                                           else
@@ -828,26 +828,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx10100011100
+                                                                         00111000101xxxxx000000xxxxxxxxxx
                                                                          ldaddab.  */
-                                                                      return 969;
+                                                                      return 1009;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx10100011110
+                                                                         01111000101xxxxx000000xxxxxxxxxx
                                                                          ldaddah.  */
-                                                                      return 972;
+                                                                      return 1012;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000000xxxxx101000111x1
+                                                                     1x111000101xxxxx000000xxxxxxxxxx
                                                                      ldadda.  */
-                                                                  return 975;
+                                                                  return 1015;
                                                                 }
                                                             }
                                                         }
@@ -861,26 +861,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx11000011100
+                                                                         00111000011xxxxx000000xxxxxxxxxx
                                                                          ldaddlb.  */
-                                                                      return 970;
+                                                                      return 1010;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx11000011110
+                                                                         01111000011xxxxx000000xxxxxxxxxx
                                                                          ldaddlh.  */
-                                                                      return 973;
+                                                                      return 1013;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000000xxxxx110000111x1
+                                                                     1x111000011xxxxx000000xxxxxxxxxx
                                                                      ldaddl.  */
-                                                                  return 976;
+                                                                  return 1016;
                                                                 }
                                                             }
                                                           else
@@ -891,26 +891,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx11100011100
+                                                                         00111000111xxxxx000000xxxxxxxxxx
                                                                          ldaddalb.  */
-                                                                      return 971;
+                                                                      return 1011;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000xxxxx11100011110
+                                                                         01111000111xxxxx000000xxxxxxxxxx
                                                                          ldaddalh.  */
-                                                                      return 974;
+                                                                      return 1014;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000000xxxxx111000111x1
+                                                                     1x111000111xxxxx000000xxxxxxxxxx
                                                                      ldaddal.  */
-                                                                  return 977;
+                                                                  return 1017;
                                                                 }
                                                             }
                                                         }
@@ -927,26 +927,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx10000011100
+                                                                         00111000001xxxxx100000xxxxxxxxxx
                                                                          swpb.  */
-                                                                      return 954;
+                                                                      return 994;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx10000011110
+                                                                         01111000001xxxxx100000xxxxxxxxxx
                                                                          swph.  */
-                                                                      return 955;
+                                                                      return 995;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000001xxxxx100000111x1
+                                                                     1x111000001xxxxx100000xxxxxxxxxx
                                                                      swp.  */
-                                                                  return 956;
+                                                                  return 996;
                                                                 }
                                                             }
                                                           else
@@ -957,26 +957,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx10100011100
+                                                                         00111000101xxxxx100000xxxxxxxxxx
                                                                          swpab.  */
-                                                                      return 957;
+                                                                      return 997;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx10100011110
+                                                                         01111000101xxxxx100000xxxxxxxxxx
                                                                          swpah.  */
-                                                                      return 960;
+                                                                      return 1000;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000001xxxxx101000111x1
+                                                                     1x111000101xxxxx100000xxxxxxxxxx
                                                                      swpa.  */
-                                                                  return 963;
+                                                                  return 1003;
                                                                 }
                                                             }
                                                         }
@@ -990,26 +990,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx11000011100
+                                                                         00111000011xxxxx100000xxxxxxxxxx
                                                                          swplb.  */
-                                                                      return 958;
+                                                                      return 998;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx11000011110
+                                                                         01111000011xxxxx100000xxxxxxxxxx
                                                                          swplh.  */
-                                                                      return 961;
+                                                                      return 1001;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000001xxxxx110000111x1
+                                                                     1x111000011xxxxx100000xxxxxxxxxx
                                                                      swpl.  */
-                                                                  return 964;
+                                                                  return 1004;
                                                                 }
                                                             }
                                                           else
@@ -1020,26 +1020,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx11100011100
+                                                                         00111000111xxxxx100000xxxxxxxxxx
                                                                          swpalb.  */
-                                                                      return 959;
+                                                                      return 999;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000001xxxxx11100011110
+                                                                         01111000111xxxxx100000xxxxxxxxxx
                                                                          swpalh.  */
-                                                                      return 962;
+                                                                      return 1002;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx000001xxxxx111000111x1
+                                                                     1x111000111xxxxx100000xxxxxxxxxx
                                                                      swpal.  */
-                                                                  return 965;
+                                                                  return 1005;
                                                                 }
                                                             }
                                                         }
@@ -1047,131 +1047,164 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 }
                                               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
-                                                                     xxxxxxxxxx00001xxxxxx10000011100
-                                                                     ldsmaxb.  */
-                                                                  return 1014;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000001xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxb.  */
+                                                                      return 1054;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000001xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxh.  */
+                                                                      return 1055;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00001xxxxxx10000011110
-                                                                     ldsmaxh.  */
-                                                                  return 1015;
+                                                                     1x111000001xxxxx010000xxxxxxxxxx
+                                                                     ldsmax.  */
+                                                                  return 1056;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx00001xxxxxx100000111x1
-                                                                 ldsmax.  */
-                                                              return 1016;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx00001xxxxxx10100011100
-                                                                     ldsmaxab.  */
-                                                                  return 1017;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000101xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxab.  */
+                                                                      return 1057;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000101xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxah.  */
+                                                                      return 1060;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00001xxxxxx10100011110
-                                                                     ldsmaxah.  */
-                                                                  return 1020;
+                                                                     1x111000101xxxxx010000xxxxxxxxxx
+                                                                     ldsmaxa.  */
+                                                                  return 1063;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx00001xxxxxx101000111x1
-                                                                 ldsmaxa.  */
-                                                              return 1023;
-                                                            }
                                                         }
-                                                    }
-                                                  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
-                                                                     xxxxxxxxxx00001xxxxxx11000011100
-                                                                     ldsmaxlb.  */
-                                                                  return 1018;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000011xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxlb.  */
+                                                                      return 1058;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000011xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxlh.  */
+                                                                      return 1061;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00001xxxxxx11000011110
-                                                                     ldsmaxlh.  */
-                                                                  return 1021;
+                                                                     1x111000011xxxxx010000xxxxxxxxxx
+                                                                     ldsmaxl.  */
+                                                                  return 1064;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx00001xxxxxx110000111x1
-                                                                 ldsmaxl.  */
-                                                              return 1024;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 31) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 30) & 0x1) == 0)
+                                                              if (((word >> 31) & 0x1) == 0)
                                                                 {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx00001xxxxxx11100011100
-                                                                     ldsmaxalb.  */
-                                                                  return 1019;
+                                                                  if (((word >> 30) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         00111000111xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxalb.  */
+                                                                      return 1059;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         01111000111xxxxx010000xxxxxxxxxx
+                                                                         ldsmaxalh.  */
+                                                                      return 1062;
+                                                                    }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00001xxxxxx11100011110
-                                                                     ldsmaxalh.  */
-                                                                  return 1022;
+                                                                     1x111000111xxxxx010000xxxxxxxxxx
+                                                                     ldsmaxal.  */
+                                                                  return 1065;
                                                                 }
                                                             }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 31) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00111000xx1xxxxx110000xxxxxxxxxx
+                                                                 ldaprb.  */
+                                                              return 932;
+                                                            }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00001xxxxxx111000111x1
-                                                                 ldsmaxal.  */
-                                                              return 1025;
+                                                                 01111000xx1xxxxx110000xxxxxxxxxx
+                                                                 ldaprh.  */
+                                                              return 933;
                                                             }
                                                         }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             1x111000xx1xxxxx110000xxxxxxxxxx
+                                                             ldapr.  */
+                                                          return 934;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -1189,26 +1222,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx10000011100
+                                                                     00111000001xxxxxx01000xxxxxxxxxx
                                                                      ldeorb.  */
-                                                                  return 990;
+                                                                  return 1030;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx10000011110
+                                                                     01111000001xxxxxx01000xxxxxxxxxx
                                                                      ldeorh.  */
-                                                                  return 991;
+                                                                  return 1031;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00010xxxxxx100000111x1
+                                                                 1x111000001xxxxxx01000xxxxxxxxxx
                                                                  ldeor.  */
-                                                              return 992;
+                                                              return 1032;
                                                             }
                                                         }
                                                       else
@@ -1219,26 +1252,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx10100011100
+                                                                     00111000101xxxxxx01000xxxxxxxxxx
                                                                      ldeorab.  */
-                                                                  return 993;
+                                                                  return 1033;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx10100011110
+                                                                     01111000101xxxxxx01000xxxxxxxxxx
                                                                      ldeorah.  */
-                                                                  return 996;
+                                                                  return 1036;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00010xxxxxx101000111x1
+                                                                 1x111000101xxxxxx01000xxxxxxxxxx
                                                                  ldeora.  */
-                                                              return 999;
+                                                              return 1039;
                                                             }
                                                         }
                                                     }
@@ -1252,26 +1285,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx11000011100
+                                                                     00111000011xxxxxx01000xxxxxxxxxx
                                                                      ldeorlb.  */
-                                                                  return 994;
+                                                                  return 1034;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx11000011110
+                                                                     01111000011xxxxxx01000xxxxxxxxxx
                                                                      ldeorlh.  */
-                                                                  return 997;
+                                                                  return 1037;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00010xxxxxx110000111x1
+                                                                 1x111000011xxxxxx01000xxxxxxxxxx
                                                                  ldeorl.  */
-                                                              return 1000;
+                                                              return 1040;
                                                             }
                                                         }
                                                       else
@@ -1282,26 +1315,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx11100011100
+                                                                     00111000111xxxxxx01000xxxxxxxxxx
                                                                      ldeoralb.  */
-                                                                  return 995;
+                                                                  return 1035;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00010xxxxxx11100011110
+                                                                     01111000111xxxxxx01000xxxxxxxxxx
                                                                      ldeoralh.  */
-                                                                  return 998;
+                                                                  return 1038;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00010xxxxxx111000111x1
+                                                                 1x111000111xxxxxx01000xxxxxxxxxx
                                                                  ldeoral.  */
-                                                              return 1001;
+                                                              return 1041;
                                                             }
                                                         }
                                                     }
@@ -1318,26 +1351,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx10000011100
+                                                                     00111000001xxxxxx11000xxxxxxxxxx
                                                                      ldumaxb.  */
-                                                                  return 1038;
+                                                                  return 1078;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx10000011110
+                                                                     01111000001xxxxxx11000xxxxxxxxxx
                                                                      ldumaxh.  */
-                                                                  return 1039;
+                                                                  return 1079;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00011xxxxxx100000111x1
+                                                                 1x111000001xxxxxx11000xxxxxxxxxx
                                                                  ldumax.  */
-                                                              return 1040;
+                                                              return 1080;
                                                             }
                                                         }
                                                       else
@@ -1348,26 +1381,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx10100011100
+                                                                     00111000101xxxxxx11000xxxxxxxxxx
                                                                      ldumaxab.  */
-                                                                  return 1041;
+                                                                  return 1081;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx10100011110
+                                                                     01111000101xxxxxx11000xxxxxxxxxx
                                                                      ldumaxah.  */
-                                                                  return 1044;
+                                                                  return 1084;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00011xxxxxx101000111x1
+                                                                 1x111000101xxxxxx11000xxxxxxxxxx
                                                                  ldumaxa.  */
-                                                              return 1047;
+                                                              return 1087;
                                                             }
                                                         }
                                                     }
@@ -1381,26 +1414,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx11000011100
+                                                                     00111000011xxxxxx11000xxxxxxxxxx
                                                                      ldumaxlb.  */
-                                                                  return 1042;
+                                                                  return 1082;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx11000011110
+                                                                     01111000011xxxxxx11000xxxxxxxxxx
                                                                      ldumaxlh.  */
-                                                                  return 1045;
+                                                                  return 1085;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00011xxxxxx110000111x1
+                                                                 1x111000011xxxxxx11000xxxxxxxxxx
                                                                  ldumaxl.  */
-                                                              return 1048;
+                                                              return 1088;
                                                             }
                                                         }
                                                       else
@@ -1411,26 +1444,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx11100011100
+                                                                     00111000111xxxxxx11000xxxxxxxxxx
                                                                      ldumaxalb.  */
-                                                                  return 1043;
+                                                                  return 1083;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00011xxxxxx11100011110
+                                                                     01111000111xxxxxx11000xxxxxxxxxx
                                                                      ldumaxalh.  */
-                                                                  return 1046;
+                                                                  return 1086;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00011xxxxxx111000111x1
+                                                                 1x111000111xxxxxx11000xxxxxxxxxx
                                                                  ldumaxal.  */
-                                                              return 1049;
+                                                              return 1089;
                                                             }
                                                         }
                                                     }
@@ -1453,26 +1486,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx10000011100
+                                                                     00111000001xxxxxx00100xxxxxxxxxx
                                                                      ldclrb.  */
-                                                                  return 978;
+                                                                  return 1018;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx10000011110
+                                                                     01111000001xxxxxx00100xxxxxxxxxx
                                                                      ldclrh.  */
-                                                                  return 979;
+                                                                  return 1019;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00100xxxxxx100000111x1
+                                                                 1x111000001xxxxxx00100xxxxxxxxxx
                                                                  ldclr.  */
-                                                              return 980;
+                                                              return 1020;
                                                             }
                                                         }
                                                       else
@@ -1483,26 +1516,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx10100011100
+                                                                     00111000101xxxxxx00100xxxxxxxxxx
                                                                      ldclrab.  */
-                                                                  return 981;
+                                                                  return 1021;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx10100011110
+                                                                     01111000101xxxxxx00100xxxxxxxxxx
                                                                      ldclrah.  */
-                                                                  return 984;
+                                                                  return 1024;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00100xxxxxx101000111x1
+                                                                 1x111000101xxxxxx00100xxxxxxxxxx
                                                                  ldclra.  */
-                                                              return 987;
+                                                              return 1027;
                                                             }
                                                         }
                                                     }
@@ -1516,26 +1549,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx11000011100
+                                                                     00111000011xxxxxx00100xxxxxxxxxx
                                                                      ldclrlb.  */
-                                                                  return 982;
+                                                                  return 1022;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx11000011110
+                                                                     01111000011xxxxxx00100xxxxxxxxxx
                                                                      ldclrlh.  */
-                                                                  return 985;
+                                                                  return 1025;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00100xxxxxx110000111x1
+                                                                 1x111000011xxxxxx00100xxxxxxxxxx
                                                                  ldclrl.  */
-                                                              return 988;
+                                                              return 1028;
                                                             }
                                                         }
                                                       else
@@ -1546,26 +1579,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx11100011100
+                                                                     00111000111xxxxxx00100xxxxxxxxxx
                                                                      ldclralb.  */
-                                                                  return 983;
+                                                                  return 1023;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00100xxxxxx11100011110
+                                                                     01111000111xxxxxx00100xxxxxxxxxx
                                                                      ldclralh.  */
-                                                                  return 986;
+                                                                  return 1026;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00100xxxxxx111000111x1
+                                                                 1x111000111xxxxxx00100xxxxxxxxxx
                                                                  ldclral.  */
-                                                              return 989;
+                                                              return 1029;
                                                             }
                                                         }
                                                     }
@@ -1582,26 +1615,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx10000011100
+                                                                     00111000001xxxxxx10100xxxxxxxxxx
                                                                      ldsminb.  */
-                                                                  return 1026;
+                                                                  return 1066;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx10000011110
+                                                                     01111000001xxxxxx10100xxxxxxxxxx
                                                                      ldsminh.  */
-                                                                  return 1027;
+                                                                  return 1067;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00101xxxxxx100000111x1
+                                                                 1x111000001xxxxxx10100xxxxxxxxxx
                                                                  ldsmin.  */
-                                                              return 1028;
+                                                              return 1068;
                                                             }
                                                         }
                                                       else
@@ -1612,26 +1645,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx10100011100
+                                                                     00111000101xxxxxx10100xxxxxxxxxx
                                                                      ldsminab.  */
-                                                                  return 1029;
+                                                                  return 1069;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx10100011110
+                                                                     01111000101xxxxxx10100xxxxxxxxxx
                                                                      ldsminah.  */
-                                                                  return 1032;
+                                                                  return 1072;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00101xxxxxx101000111x1
+                                                                 1x111000101xxxxxx10100xxxxxxxxxx
                                                                  ldsmina.  */
-                                                              return 1035;
+                                                              return 1075;
                                                             }
                                                         }
                                                     }
@@ -1645,26 +1678,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx11000011100
+                                                                     00111000011xxxxxx10100xxxxxxxxxx
                                                                      ldsminlb.  */
-                                                                  return 1030;
+                                                                  return 1070;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx11000011110
+                                                                     01111000011xxxxxx10100xxxxxxxxxx
                                                                      ldsminlh.  */
-                                                                  return 1033;
+                                                                  return 1073;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00101xxxxxx110000111x1
+                                                                 1x111000011xxxxxx10100xxxxxxxxxx
                                                                  ldsminl.  */
-                                                              return 1036;
+                                                              return 1076;
                                                             }
                                                         }
                                                       else
@@ -1675,26 +1708,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx11100011100
+                                                                     00111000111xxxxxx10100xxxxxxxxxx
                                                                      ldsminalb.  */
-                                                                  return 1031;
+                                                                  return 1071;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00101xxxxxx11100011110
+                                                                     01111000111xxxxxx10100xxxxxxxxxx
                                                                      ldsminalh.  */
-                                                                  return 1034;
+                                                                  return 1074;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00101xxxxxx111000111x1
+                                                                 1x111000111xxxxxx10100xxxxxxxxxx
                                                                  ldsminal.  */
-                                                              return 1037;
+                                                              return 1077;
                                                             }
                                                         }
                                                     }
@@ -1714,26 +1747,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx10000011100
+                                                                     00111000001xxxxxx01100xxxxxxxxxx
                                                                      ldsetb.  */
-                                                                  return 1002;
+                                                                  return 1042;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx10000011110
+                                                                     01111000001xxxxxx01100xxxxxxxxxx
                                                                      ldseth.  */
-                                                                  return 1003;
+                                                                  return 1043;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00110xxxxxx100000111x1
+                                                                 1x111000001xxxxxx01100xxxxxxxxxx
                                                                  ldset.  */
-                                                              return 1004;
+                                                              return 1044;
                                                             }
                                                         }
                                                       else
@@ -1744,26 +1777,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx10100011100
+                                                                     00111000101xxxxxx01100xxxxxxxxxx
                                                                      ldsetab.  */
-                                                                  return 1005;
+                                                                  return 1045;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx10100011110
+                                                                     01111000101xxxxxx01100xxxxxxxxxx
                                                                      ldsetah.  */
-                                                                  return 1008;
+                                                                  return 1048;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00110xxxxxx101000111x1
+                                                                 1x111000101xxxxxx01100xxxxxxxxxx
                                                                  ldseta.  */
-                                                              return 1011;
+                                                              return 1051;
                                                             }
                                                         }
                                                     }
@@ -1777,26 +1810,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx11000011100
+                                                                     00111000011xxxxxx01100xxxxxxxxxx
                                                                      ldsetlb.  */
-                                                                  return 1006;
+                                                                  return 1046;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx11000011110
+                                                                     01111000011xxxxxx01100xxxxxxxxxx
                                                                      ldsetlh.  */
-                                                                  return 1009;
+                                                                  return 1049;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00110xxxxxx110000111x1
+                                                                 1x111000011xxxxxx01100xxxxxxxxxx
                                                                  ldsetl.  */
-                                                              return 1012;
+                                                              return 1052;
                                                             }
                                                         }
                                                       else
@@ -1807,26 +1840,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx11100011100
+                                                                     00111000111xxxxxx01100xxxxxxxxxx
                                                                      ldsetalb.  */
-                                                                  return 1007;
+                                                                  return 1047;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00110xxxxxx11100011110
+                                                                     01111000111xxxxxx01100xxxxxxxxxx
                                                                      ldsetalh.  */
-                                                                  return 1010;
+                                                                  return 1050;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00110xxxxxx111000111x1
+                                                                 1x111000111xxxxxx01100xxxxxxxxxx
                                                                  ldsetal.  */
-                                                              return 1013;
+                                                              return 1053;
                                                             }
                                                         }
                                                     }
@@ -1843,26 +1876,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx10000011100
+                                                                     00111000001xxxxxx11100xxxxxxxxxx
                                                                      lduminb.  */
-                                                                  return 1050;
+                                                                  return 1090;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx10000011110
+                                                                     01111000001xxxxxx11100xxxxxxxxxx
                                                                      lduminh.  */
-                                                                  return 1051;
+                                                                  return 1091;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00111xxxxxx100000111x1
+                                                                 1x111000001xxxxxx11100xxxxxxxxxx
                                                                  ldumin.  */
-                                                              return 1052;
+                                                              return 1092;
                                                             }
                                                         }
                                                       else
@@ -1873,26 +1906,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx10100011100
+                                                                     00111000101xxxxxx11100xxxxxxxxxx
                                                                      lduminab.  */
-                                                                  return 1053;
+                                                                  return 1093;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx10100011110
+                                                                     01111000101xxxxxx11100xxxxxxxxxx
                                                                      lduminah.  */
-                                                                  return 1056;
+                                                                  return 1096;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00111xxxxxx101000111x1
+                                                                 1x111000101xxxxxx11100xxxxxxxxxx
                                                                  ldumina.  */
-                                                              return 1059;
+                                                              return 1099;
                                                             }
                                                         }
                                                     }
@@ -1906,26 +1939,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx11000011100
+                                                                     00111000011xxxxxx11100xxxxxxxxxx
                                                                      lduminlb.  */
-                                                                  return 1054;
+                                                                  return 1094;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx11000011110
+                                                                     01111000011xxxxxx11100xxxxxxxxxx
                                                                      lduminlh.  */
-                                                                  return 1057;
+                                                                  return 1097;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00111xxxxxx110000111x1
+                                                                 1x111000011xxxxxx11100xxxxxxxxxx
                                                                  lduminl.  */
-                                                              return 1060;
+                                                              return 1100;
                                                             }
                                                         }
                                                       else
@@ -1936,26 +1969,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx11100011100
+                                                                     00111000111xxxxxx11100xxxxxxxxxx
                                                                      lduminalb.  */
-                                                                  return 1055;
+                                                                  return 1095;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00111xxxxxx11100011110
+                                                                     01111000111xxxxxx11100xxxxxxxxxx
                                                                      lduminalh.  */
-                                                                  return 1058;
+                                                                  return 1098;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00111xxxxxx111000111x1
+                                                                 1x111000111xxxxxx11100xxxxxxxxxx
                                                                  lduminal.  */
-                                                              return 1061;
+                                                              return 1101;
                                                             }
                                                         }
                                                     }
@@ -1978,26 +2011,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx00000011100
+                                                         00111000000xxxxxxxxx10xxxxxxxxxx
                                                          sttrb.  */
-                                                      return 852;
+                                                      return 887;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx00000011110
+                                                         01111000000xxxxxxxxx10xxxxxxxxxx
                                                          sttrh.  */
-                                                      return 855;
+                                                      return 890;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx000000111x1
+                                                     1x111000000xxxxxxxxx10xxxxxxxxxx
                                                      sttr.  */
-                                                  return 858;
+                                                  return 893;
                                                 }
                                             }
                                           else
@@ -2008,26 +2041,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx01000011100
+                                                         00111000010xxxxxxxxx10xxxxxxxxxx
                                                          ldtrb.  */
-                                                      return 853;
+                                                      return 888;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx01000011110
+                                                         01111000010xxxxxxxxx10xxxxxxxxxx
                                                          ldtrh.  */
-                                                      return 856;
+                                                      return 891;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx010000111x1
+                                                     1x111000010xxxxxxxxx10xxxxxxxxxx
                                                      ldtr.  */
-                                                  return 859;
+                                                  return 894;
                                                 }
                                             }
                                         }
@@ -2039,26 +2072,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx0x100011100
+                                                     001110001x0xxxxxxxxx10xxxxxxxxxx
                                                      ldtrsb.  */
-                                                  return 854;
+                                                  return 889;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx0x100011101
+                                                     101110001x0xxxxxxxxx10xxxxxxxxxx
                                                      ldtrsw.  */
-                                                  return 860;
+                                                  return 895;
                                                 }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx01xxxxxxxxx0x10001111x
+                                                 x11110001x0xxxxxxxxx10xxxxxxxxxx
                                                  ldtrsh.  */
-                                              return 857;
+                                              return 892;
                                             }
                                         }
                                     }
@@ -2074,26 +2107,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx10000011100
+                                                         00111000001xxxxxxxxx10xxxxxxxxxx
                                                          strb.  */
-                                                      return 840;
+                                                      return 875;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx10000011110
+                                                         01111000001xxxxxxxxx10xxxxxxxxxx
                                                          strh.  */
-                                                      return 845;
+                                                      return 880;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx100000111x1
+                                                     1x111000001xxxxxxxxx10xxxxxxxxxx
                                                      str.  */
-                                                  return 848;
+                                                  return 883;
                                                 }
                                             }
                                           else
@@ -2104,26 +2137,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx11000011100
+                                                         00111000011xxxxxxxxx10xxxxxxxxxx
                                                          ldrb.  */
-                                                      return 841;
+                                                      return 876;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01xxxxxxxxx11000011110
+                                                         01111000011xxxxxxxxx10xxxxxxxxxx
                                                          ldrh.  */
-                                                      return 846;
+                                                      return 881;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx110000111x1
+                                                     1x111000011xxxxxxxxx10xxxxxxxxxx
                                                      ldr.  */
-                                                  return 849;
+                                                  return 884;
                                                 }
                                             }
                                         }
@@ -2135,17 +2168,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx1x100011100
+                                                     001110001x1xxxxxxxxx10xxxxxxxxxx
                                                      ldrsb.  */
-                                                  return 842;
+                                                  return 877;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx1x100011101
+                                                     101110001x1xxxxxxxxx10xxxxxxxxxx
                                                      ldrsw.  */
-                                                  return 850;
+                                                  return 885;
                                                 }
                                             }
                                           else
@@ -2154,17 +2187,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx1x100011110
+                                                     011110001x1xxxxxxxxx10xxxxxxxxxx
                                                      ldrsh.  */
-                                                  return 847;
+                                                  return 882;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01xxxxxxxxx1x100011111
+                                                     111110001x1xxxxxxxxx10xxxxxxxxxx
                                                      prfm.  */
-                                                  return 851;
+                                                  return 886;
                                                 }
                                             }
                                         }
@@ -2173,97 +2206,119 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             }
                           else
                             {
-                              if (((word >> 23) & 0x1) == 0)
+                              if (((word >> 21) & 0x1) == 0)
                                 {
-                                  if (((word >> 22) & 0x1) == 0)
+                                  if (((word >> 23) & 0x1) == 0)
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx1xxxxxxxxxxx0000011100
-                                                 strb.  */
-                                              return 817;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     00111000000xxxxxxxxxx1xxxxxxxxxx
+                                                     strb.  */
+                                                  return 852;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     01111000000xxxxxxxxxx1xxxxxxxxxx
+                                                     strh.  */
+                                                  return 857;
+                                                }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1xxxxxxxxxxx0000011110
-                                                 strh.  */
-                                              return 822;
+                                                 1x111000000xxxxxxxxxx1xxxxxxxxxx
+                                                 str.  */
+                                              return 860;
                                             }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxxxxxxxxx00000111x1
-                                             str.  */
-                                          return 825;
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     00111000010xxxxxxxxxx1xxxxxxxxxx
+                                                     ldrb.  */
+                                                  return 853;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     01111000010xxxxxxxxxx1xxxxxxxxxx
+                                                     ldrh.  */
+                                                  return 858;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 1x111000010xxxxxxxxxx1xxxxxxxxxx
+                                                 ldr.  */
+                                              return 861;
+                                            }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1xxxxxxxxxxx1000011100
-                                                 ldrb.  */
-                                              return 818;
+                                                 001110001x0xxxxxxxxxx1xxxxxxxxxx
+                                                 ldrsb.  */
+                                              return 854;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1xxxxxxxxxxx1000011110
-                                                 ldrh.  */
-                                              return 823;
+                                                 101110001x0xxxxxxxxxx1xxxxxxxxxx
+                                                 ldrsw.  */
+                                              return 862;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxxxxxxxxx10000111x1
-                                             ldr.  */
-                                          return 826;
+                                             x11110001x0xxxxxxxxxx1xxxxxxxxxx
+                                             ldrsh.  */
+                                          return 859;
                                         }
                                     }
                                 }
                               else
                                 {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 23) & 0x1) == 0)
                                     {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxxxxxxxxxx100011100
-                                             ldrsb.  */
-                                          return 819;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxxxxxxxxxx100011101
-                                             ldrsw.  */
-                                          return 827;
-                                        }
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xx1110000x1xxxxxxxxxx1xxxxxxxxxx
+                                         ldraa.  */
+                                      return 908;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx1xxxxxxxxxxxx10001111x
-                                         ldrsh.  */
-                                      return 824;
+                                         xx1110001x1xxxxxxxxxx1xxxxxxxxxx
+                                         ldrab.  */
+                                      return 909;
                                     }
                                 }
                             }
@@ -2275,103 +2330,246 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           if (((word >> 22) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 29) & 0x1) == 0)
                                 {
                                   if (((word >> 30) & 0x1) == 0)
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx0010011x00
-                                         strb.  */
-                                      return 828;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0001100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlurb.  */
+                                          return 2044;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1001100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlur.  */
+                                          return 2052;
+                                        }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx0010011x10
-                                         strh.  */
-                                      return 833;
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0101100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlurh.  */
+                                          return 2048;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1101100100xxxxxxxxxxxxxxxxxxxxxx
+                                             stlur.  */
+                                          return 2055;
+                                        }
                                     }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx0010011xx1
-                                     str.  */
-                                  return 836;
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 31) & 0x1) == 0)
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
+                                  if (((word >> 31) & 0x1) == 0)
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx1010011x00
-                                         ldrb.  */
-                                      return 829;
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0011100100xxxxxxxxxxxxxxxxxxxxxx
+                                             strb.  */
+                                          return 863;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0111100100xxxxxxxxxxxxxxxxxxxxxx
+                                             strh.  */
+                                          return 868;
+                                        }
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxxx1010011x10
-                                         ldrh.  */
-                                      return 834;
+                                         1x11100100xxxxxxxxxxxxxxxxxxxxxx
+                                         str.  */
+                                      return 871;
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 29) & 0x1) == 0)
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0001100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapurb.  */
+                                          return 2045;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1001100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapur.  */
+                                          return 2053;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0101100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapurh.  */
+                                          return 2049;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1101100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapur.  */
+                                          return 2056;
+                                        }
                                     }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx1010011xx1
-                                     ldr.  */
-                                  return 837;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0011100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldrb.  */
+                                          return 864;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0111100101xxxxxxxxxxxxxxxxxxxxxx
+                                             ldrh.  */
+                                          return 869;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         1x11100101xxxxxxxxxxxxxxxxxxxxxx
+                                         ldr.  */
+                                      return 872;
+                                    }
                                 }
                             }
                         }
                       else
                         {
-                          if (((word >> 30) & 0x1) == 0)
+                          if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 22) & 0x1) == 0)
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxx110011x00
-                                     ldrsb.  */
-                                  return 830;
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             0001100110xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapursb.  */
+                                          return 2047;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1001100110xxxxxxxxxxxxxxxxxxxxxx
+                                             ldapursw.  */
+                                          return 2054;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x101100110xxxxxxxxxxxxxxxxxxxxxx
+                                         ldapursh.  */
+                                      return 2051;
+                                    }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxx110011x01
-                                     ldrsw.  */
-                                  return 838;
+                                  if (((word >> 30) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x001100111xxxxxxxxxxxxxxxxxxxxxx
+                                         ldapursb.  */
+                                      return 2046;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x101100111xxxxxxxxxxxxxxxxxxxxxx
+                                         ldapursh.  */
+                                      return 2050;
+                                    }
                                 }
                             }
                           else
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxx110011x10
-                                     ldrsh.  */
-                                  return 835;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         001110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         ldrsb.  */
+                                      return 865;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         101110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         ldrsw.  */
+                                      return 873;
+                                    }
                                 }
                               else
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxx110011x11
-                                     prfm.  */
-                                  return 839;
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         011110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         ldrsh.  */
+                                      return 870;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         111110011xxxxxxxxxxxxxxxxxxxxxxx
+                                         prfm.  */
+                                      return 874;
+                                    }
                                 }
                             }
                         }
@@ -2393,17 +2591,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx00100x00x
+                                 x00x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  and.  */
-                              return 919;
+                              return 959;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx00100x01x
+                                 x10x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  eor.  */
-                              return 923;
+                              return 963;
                             }
                         }
                       else
@@ -2412,17 +2610,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx00100x10x
+                                 x01x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  orr.  */
-                              return 921;
+                              return 961;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx00100x11x
+                                 x11x00100xxxxxxxxxxxxxxxxxxxxxxx
                                  ands.  */
-                              return 924;
+                              return 964;
                             }
                         }
                     }
@@ -2434,26 +2632,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx10100x00x
+                                 x00x00101xxxxxxxxxxxxxxxxxxxxxxx
                                  movn.  */
-                              return 1110;
+                              return 1150;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx10100x01x
+                                 x10x00101xxxxxxxxxxxxxxxxxxxxxxx
                                  movz.  */
-                              return 1112;
+                              return 1152;
                             }
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxx10100x1xx
+                             xx1x00101xxxxxxxxxxxxxxxxxxxxxxx
                              movk.  */
-                          return 1114;
+                          return 1154;
                         }
                     }
                 }
@@ -2469,17 +2667,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx0101000x
+                                     x0001010xx0xxxxxxxxxxxxxxxxxxxxx
                                      and.  */
-                                  return 926;
+                                  return 966;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx0101001x
+                                     x1001010xx0xxxxxxxxxxxxxxxxxxxxx
                                      eor.  */
-                                  return 933;
+                                  return 973;
                                 }
                             }
                           else
@@ -2488,17 +2686,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx0101010x
+                                     x0101010xx0xxxxxxxxxxxxxxxxxxxxx
                                      orr.  */
-                                  return 928;
+                                  return 968;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx0101011x
+                                     x1101010xx0xxxxxxxxxxxxxxxxxxxxx
                                      ands.  */
-                                  return 935;
+                                  return 975;
                                 }
                             }
                         }
@@ -2518,7 +2716,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0000101100x
+                                                     x0011010000xxxxxxxxx00xxxxxxxxxx
                                                      adc.  */
                                                   return 0;
                                                 }
@@ -2526,7 +2724,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0000101101x
+                                                     x1011010000xxxxxxxxx00xxxxxxxxxx
                                                      sbc.  */
                                                   return 2;
                                                 }
@@ -2537,7 +2735,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0000101110x
+                                                     x0111010000xxxxxxxxx00xxxxxxxxxx
                                                      adcs.  */
                                                   return 1;
                                                 }
@@ -2545,7 +2743,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx00xxxxxxxxx0000101111x
+                                                     x1111010000xxxxxxxxx00xxxxxxxxxx
                                                      sbcs.  */
                                                   return 4;
                                                 }
@@ -2557,17 +2755,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxx00101011x0x
+                                                 x0x11010100xxxxxxxxx00xxxxxxxxxx
                                                  csel.  */
-                                              return 641;
+                                              return 656;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxx00101011x1x
+                                                 x1x11010100xxxxxxxxx00xxxxxxxxxx
                                                  csinv.  */
-                                              return 645;
+                                              return 660;
                                             }
                                         }
                                     }
@@ -2579,17 +2777,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxx01001011x0x
+                                                 x0x11010010xxxxxxxxx00xxxxxxxxxx
                                                  ccmn.  */
-                                              return 639;
+                                              return 654;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx00xxxxxxxxx01001011x1x
+                                                 x1x11010010xxxxxxxxx00xxxxxxxxxx
                                                  ccmp.  */
-                                              return 640;
+                                              return 655;
                                             }
                                         }
                                       else
@@ -2600,210 +2798,408 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00000xxxxxx01101011xxx
-                                                         rbit.  */
-                                                      return 664;
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11010110xxxx0x00000xxxxxxxxxx
+                                                             rbit.  */
+                                                          return 679;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11010110xxxx1x00000xxxxxxxxxx
+                                                             pacia.  */
+                                                          return 687;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00001xxxxxx01101011xxx
-                                                         crc32b.  */
-                                                      return 682;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0x11010110xxxxxx10000xxxxxxxxxx
+                                                             crc32b.  */
+                                                          return 716;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1x11010110xxxxxx10000xxxxxxxxxx
+                                                             xpaci.  */
+                                                          return 703;
+                                                        }
                                                     }
                                                 }
                                               else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx0001xxxxxxx01101011xxx
-                                                     lslv.  */
-                                                  return 674;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx001x0xxxxxx01101011xxx
-                                                     clz.  */
-                                                  return 669;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx001x1xxxxxx01101011xxx
-                                                     crc32cb.  */
-                                                  return 686;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 23) & 0x1) == 0)
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx01xxxxxxxxx0x001011x0x
-                                             ccmn.  */
-                                          return 637;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx01xxxxxxxxx0x001011x1x
-                                             ccmp.  */
-                                          return 638;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 12) & 0x1) == 0)
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
                                                 {
                                                   if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01000xxxxxx0x101011x0x
-                                                         udiv.  */
-                                                      return 672;
+                                                         x0x11010110xxxxxxx1000xxxxxxxxxx
+                                                         lslv.  */
+                                                      return 707;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 31) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010110xxxxxxx1000xxxxxxxxxx
+                                                         paciza.  */
+                                                      return 695;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx01000xxxxxx0x101011x10
-                                                             rev.  */
-                                                          return 666;
+                                                             xxx11010110xxxx0x00100xxxxxxxxxx
+                                                             clz.  */
+                                                          return 684;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx01000xxxxxx0x101011x11
-                                                             rev32.  */
-                                                          return 671;
+                                                             xxx11010110xxxx1x00100xxxxxxxxxx
+                                                             autia.  */
+                                                          return 691;
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx10100xxxxxxxxxx
+                                                         crc32cb.  */
+                                                      return 720;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx01001xxxxxx0x101011xxx
-                                                     crc32w.  */
-                                                  return 684;
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x0x11010110xxxxxxx1100xxxxxxxxxx
+                                                         pacga.  */
+                                                      return 715;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010110xxxxxxx1100xxxxxxxxxx
+                                                         autiza.  */
+                                                      return 699;
+                                                    }
                                                 }
                                             }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0101xxxxxxx0x101011xxx
-                                                 asrv.  */
-                                              return 678;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx011xxxxxxxx0x101011xxx
-                                             crc32cw.  */
-                                          return 688;
                                         }
                                     }
                                 }
-                            }
-                          else
-                            {
-                              if (((word >> 11) & 0x1) == 0)
+                              else
                                 {
                                   if (((word >> 22) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 14) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx10xxxxxxxxx00x01011x0x
-                                             csinc.  */
-                                          return 642;
+                                             xxx11010x00xxxxxx0xx10xxxxxxxxxx
+                                             setf8.  */
+                                          return 2042;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx10xxxxxxxxx00x01011x1x
-                                             csneg.  */
-                                          return 648;
+                                             xxx11010x00xxxxxx1xx10xxxxxxxxxx
+                                             setf16.  */
+                                          return 2043;
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 12) & 0x1) == 0)
+                                      if (((word >> 23) & 0x1) == 0)
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
+                                          if (((word >> 30) & 0x1) == 0)
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0x11010010xxxxxxxxx10xxxxxxxxxx
+                                                 ccmn.  */
+                                              return 652;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1x11010010xxxxxxxxx10xxxxxxxxxx
+                                                 ccmp.  */
+                                              return 653;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx10000xxxxxx01x01011xxx
-                                                     rev16.  */
-                                                  return 665;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0x11010110xxxxxx00010xxxxxxxxxx
+                                                             udiv.  */
+                                                          return 705;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 31) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01x11010110xxxx0x00010xxxxxxxxxx
+                                                                     rev.  */
+                                                                  return 681;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     11x11010110xxxx0x00010xxxxxxxxxx
+                                                                     rev32.  */
+                                                                  return 686;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x1x11010110xxxx1x00010xxxxxxxxxx
+                                                                 pacda.  */
+                                                              return 689;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx10010xxxxxxxxxx
+                                                         crc32w.  */
+                                                      return 718;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x0x11010110xxxxxxx1010xxxxxxxxxx
+                                                         asrv.  */
+                                                      return 711;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010110xxxxxxx1010xxxxxxxxxx
+                                                         pacdza.  */
+                                                      return 697;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx00110xxxxxxxxxx
+                                                         autda.  */
+                                                      return 693;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010110xxxxxx10110xxxxxxxxxx
+                                                         crc32cw.  */
+                                                      return 722;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx10001xxxxxx01x01011xxx
-                                                     crc32h.  */
-                                                  return 683;
+                                                     xxx11010110xxxxxxx1110xxxxxxxxxx
+                                                     autdza.  */
+                                                  return 701;
                                                 }
                                             }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 11) & 0x1) == 0)
+                                {
+                                  if (((word >> 22) & 0x1) == 0)
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxx11010000xxxxxxxxx01xxxxxxxxxx
+                                             rmif.  */
+                                          return 2041;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0x11010100xxxxxxxxx01xxxxxxxxxx
+                                                 csinc.  */
+                                              return 657;
+                                            }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1001xxxxxxx01x01011xxx
-                                                 lsrv.  */
-                                              return 676;
+                                                 x1x11010100xxxxxxxxx01xxxxxxxxxx
+                                                 csneg.  */
+                                              return 663;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010x10xxxx0x00001xxxxxxxxxx
+                                                         rev16.  */
+                                                      return 680;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010x10xxxx1x00001xxxxxxxxxx
+                                                         pacib.  */
+                                                      return 688;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 30) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x0x11010x10xxxxxx10001xxxxxxxxxx
+                                                         crc32h.  */
+                                                      return 717;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010x10xxxxxx10001xxxxxxxxxx
+                                                         xpacd.  */
+                                                      return 704;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0x11010x10xxxxxxx1001xxxxxxxxxx
+                                                     lsrv.  */
+                                                  return 709;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x11010x10xxxxxxx1001xxxxxxxxxx
+                                                     pacizb.  */
+                                                  return 696;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx101x0xxxxxx01x01011xxx
-                                                 cls.  */
-                                              return 670;
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010x10xxxx0x00101xxxxxxxxxx
+                                                         cls.  */
+                                                      return 685;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx11010x10xxxx1x00101xxxxxxxxxx
+                                                         autib.  */
+                                                      return 692;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11010x10xxxxxx10101xxxxxxxxxx
+                                                     crc32ch.  */
+                                                  return 721;
+                                                }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx101x1xxxxxx01x01011xxx
-                                                 crc32ch.  */
-                                              return 687;
+                                                 xxx11010x10xxxxxxx1101xxxxxxxxxx
+                                                 autizb.  */
+                                              return 700;
                                             }
                                         }
                                     }
@@ -2820,44 +3216,88 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx11000xxxxxx0xx01011x0x
+                                                     x0x11010xx0xxxxxx00011xxxxxxxxxx
                                                      sdiv.  */
-                                                  return 673;
+                                                  return 706;
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx11000xxxxxx0xx01011x1x
-                                                     rev.  */
-                                                  return 667;
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010xx0xxxx0x00011xxxxxxxxxx
+                                                         rev.  */
+                                                      return 682;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x1x11010xx0xxxx1x00011xxxxxxxxxx
+                                                         pacdb.  */
+                                                      return 690;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx11001xxxxxx0xx01011xxx
+                                                 xxx11010xx0xxxxxx10011xxxxxxxxxx
                                                  crc32x.  */
-                                              return 685;
+                                              return 719;
                                             }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1101xxxxxxx0xx01011xxx
-                                             rorv.  */
-                                          return 680;
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0x11010xx0xxxxxxx1011xxxxxxxxxx
+                                                 rorv.  */
+                                              return 713;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1x11010xx0xxxxxxx1011xxxxxxxxxx
+                                                 pacdzb.  */
+                                              return 698;
+                                            }
                                         }
                                     }
                                   else
                                     {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxx111xxxxxxxx0xx01011xxx
-                                         crc32cx.  */
-                                      return 689;
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxx11010xx0xxxxxx00111xxxxxxxxxx
+                                                 autdb.  */
+                                              return 694;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xxx11010xx0xxxxxx10111xxxxxxxxxx
+                                                 crc32cx.  */
+                                              return 723;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxx11010xx0xxxxxxx1111xxxxxxxxxx
+                                             autdzb.  */
+                                          return 702;
+                                        }
                                     }
                                 }
                             }
@@ -2871,17 +3311,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxx1xx0101x00x
+                                 x00x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  bic.  */
-                              return 927;
+                              return 967;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxx1xx0101x01x
+                                 x10x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  eon.  */
-                              return 934;
+                              return 974;
                             }
                         }
                       else
@@ -2890,17 +3330,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxx1xx0101x10x
+                                 x01x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  orn.  */
-                              return 931;
+                              return 971;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxx1xx0101x11x
+                                 x11x1010xx1xxxxxxxxxxxxxxxxxxxxx
                                  bics.  */
-                              return 937;
+                              return 977;
                             }
                         }
                     }
@@ -2918,35 +3358,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx01100x00x
+                                 x00x00110xxxxxxxxxxxxxxxxxxxxxxx
                                  sbfm.  */
-                              return 609;
+                              return 612;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxxx01100x01x
+                                 x10x00110xxxxxxxxxxxxxxxxxxxxxxx
                                  ubfm.  */
-                              return 620;
+                              return 623;
                             }
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxx01100x1xx
+                             xx1x00110xxxxxxxxxxxxxxxxxxxxxxx
                              bfm.  */
-                          return 616;
+                          return 619;
                         }
                     }
                   else
                     {
                       /* 33222222222211111111110000000000
                          10987654321098765432109876543210
-                         xxxxxxxxxxxxxxxxxxxxxxx11100xxxx
+                         xxxx00111xxxxxxxxxxxxxxxxxxxxxxx
                          extr.  */
-                      return 712;
+                      return 746;
                     }
                 }
               else
@@ -2961,7 +3401,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx1101000x
+                                     x0001011xx0xxxxxxxxxxxxxxxxxxxxx
                                      add.  */
                                   return 19;
                                 }
@@ -2969,7 +3409,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx1101001x
+                                     x1001011xx0xxxxxxxxxxxxxxxxxxxxx
                                      sub.  */
                                   return 22;
                                 }
@@ -2980,7 +3420,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx1101010x
+                                     x0101011xx0xxxxxxxxxxxxxxxxxxxxx
                                      adds.  */
                                   return 20;
                                 }
@@ -2988,7 +3428,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxx0xx1101011x
+                                     x1101011xx0xxxxxxxxxxxxxxxxxxxxx
                                      subs.  */
                                   return 24;
                                 }
@@ -3002,9 +3442,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxx0xxxxx00x11011xxx
+                                     xxx11011x00xxxxx0xxxxxxxxxxxxxxx
                                      madd.  */
-                                  return 690;
+                                  return 724;
                                 }
                               else
                                 {
@@ -3012,17 +3452,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx0xxxxx01011011xxx
+                                         xxx11011010xxxxx0xxxxxxxxxxxxxxx
                                          smulh.  */
-                                      return 698;
+                                      return 732;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx0xxxxx01111011xxx
+                                         xxx11011110xxxxx0xxxxxxxxxxxxxxx
                                          umulh.  */
-                                      return 703;
+                                      return 737;
                                     }
                                 }
                             }
@@ -3030,9 +3470,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxx1xxxxx0xx11011xxx
+                                 xxx11011xx0xxxxx1xxxxxxxxxxxxxxx
                                  msub.  */
-                              return 692;
+                              return 726;
                             }
                         }
                     }
@@ -3048,7 +3488,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx1x01101000x
+                                         x00010110x1xxxxxxxxxxxxxxxxxxxxx
                                          add.  */
                                       return 6;
                                     }
@@ -3056,7 +3496,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx1x01101001x
+                                         x10010110x1xxxxxxxxxxxxxxxxxxxxx
                                          sub.  */
                                       return 9;
                                     }
@@ -3067,7 +3507,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx1x01101010x
+                                         x01010110x1xxxxxxxxxxxxxxxxxxxxx
                                          adds.  */
                                       return 7;
                                     }
@@ -3075,7 +3515,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx1x01101011x
+                                         x11010110x1xxxxxxxxxxxxxxxxxxxxx
                                          subs.  */
                                       return 10;
                                     }
@@ -3087,17 +3527,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxx0xxxxx1x011011xxx
+                                     xxx110110x1xxxxx0xxxxxxxxxxxxxxx
                                      smaddl.  */
-                                  return 694;
+                                  return 728;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxx1xxxxx1x011011xxx
+                                     xxx110110x1xxxxx1xxxxxxxxxxxxxxx
                                      smsubl.  */
-                                  return 696;
+                                  return 730;
                                 }
                             }
                         }
@@ -3107,17 +3547,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxx0xxxxx1x11101xxxx
+                                 xxxx10111x1xxxxx0xxxxxxxxxxxxxxx
                                  umaddl.  */
-                              return 699;
+                              return 733;
                             }
                           else
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxx1xxxxx1x11101xxxx
+                                 xxxx10111x1xxxxx1xxxxxxxxxxxxxxx
                                  umsubl.  */
-                              return 701;
+                              return 735;
                             }
                         }
                     }
@@ -3133,9 +3573,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
             {
               if (((word >> 24) & 0x1) == 0)
                 {
-                  if (((word >> 13) & 0x1) == 0)
+                  if (((word >> 29) & 0x1) == 0)
                     {
-                      if (((word >> 29) & 0x1) == 0)
+                      if (((word >> 13) & 0x1) == 0)
                         {
                           if (((word >> 14) & 0x1) == 0)
                             {
@@ -3159,17 +3599,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000000000xx0x100000
+                                                                     000001x0xx000000000xxxxxxxxxxxxx
                                                                      add.  */
-                                                                  return 1192;
+                                                                  return 1233;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000000010xx0x100000
+                                                                     000001x0xx010000000xxxxxxxxxxxxx
                                                                      mul.  */
-                                                                  return 1618;
+                                                                  return 1702;
                                                                 }
                                                             }
                                                           else
@@ -3178,17 +3618,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000000100xx0x100000
+                                                                     000001x0xx001000000xxxxxxxxxxxxx
                                                                      smax.  */
-                                                                  return 1691;
+                                                                  return 1781;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000000110xx0x100000
+                                                                     000001x0xx011000000xxxxxxxxxxxxx
                                                                      orr.  */
-                                                                  return 1629;
+                                                                  return 1713;
                                                                 }
                                                             }
                                                         }
@@ -3198,17 +3638,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0000010x0xx0x100000
+                                                                 000001x0xx0x0100000xxxxxxxxxxxxx
                                                                  sdiv.  */
-                                                              return 1685;
+                                                              return 1772;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0000011x0xx0x100000
+                                                                 000001x0xx0x1100000xxxxxxxxxxxxx
                                                                  sabd.  */
-                                                              return 1679;
+                                                              return 1763;
                                                             }
                                                         }
                                                     }
@@ -3220,9 +3660,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0000100x0xx0x100000
+                                                                 000001x0xx0x0010000xxxxxxxxxxxxx
                                                                  smulh.  */
-                                                              return 1696;
+                                                              return 1786;
                                                             }
                                                           else
                                                             {
@@ -3230,17 +3670,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000010100xx0x100000
+                                                                     000001x0xx001010000xxxxxxxxxxxxx
                                                                      smin.  */
-                                                                  return 1694;
+                                                                  return 1784;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000010110xx0x100000
+                                                                     000001x0xx011010000xxxxxxxxxxxxx
                                                                      and.  */
-                                                                  return 1200;
+                                                                  return 1241;
                                                                 }
                                                             }
                                                         }
@@ -3248,9 +3688,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx000011xx0xx0x100000
+                                                             000001x0xx0xx110000xxxxxxxxxxxxx
                                                              sdivr.  */
-                                                          return 1686;
+                                                          return 1773;
                                                         }
                                                     }
                                                 }
@@ -3264,9 +3704,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0001000x0xx0x100000
+                                                                 000001x0xx0x0001000xxxxxxxxxxxxx
                                                                  sub.  */
-                                                              return 1812;
+                                                              return 1902;
                                                             }
                                                           else
                                                             {
@@ -3274,17 +3714,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000100100xx0x100000
+                                                                     000001x0xx001001000xxxxxxxxxxxxx
                                                                      umax.  */
-                                                                  return 1834;
+                                                                  return 1930;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000100110xx0x100000
+                                                                     000001x0xx011001000xxxxxxxxxxxxx
                                                                      eor.  */
-                                                                  return 1287;
+                                                                  return 1328;
                                                                 }
                                                             }
                                                         }
@@ -3294,17 +3734,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0001010x0xx0x100000
+                                                                 000001x0xx0x0101000xxxxxxxxxxxxx
                                                                  udiv.  */
-                                                              return 1831;
+                                                              return 1924;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0001011x0xx0x100000
+                                                                 000001x0xx0x1101000xxxxxxxxxxxxx
                                                                  uabd.  */
-                                                              return 1825;
+                                                              return 1915;
                                                             }
                                                         }
                                                     }
@@ -3318,17 +3758,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000110000xx0x100000
+                                                                     000001x0xx000011000xxxxxxxxxxxxx
                                                                      subr.  */
-                                                                  return 1814;
+                                                                  return 1904;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000110010xx0x100000
+                                                                     000001x0xx010011000xxxxxxxxxxxxx
                                                                      umulh.  */
-                                                                  return 1839;
+                                                                  return 1935;
                                                                 }
                                                             }
                                                           else
@@ -3337,17 +3777,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000110100xx0x100000
+                                                                     000001x0xx001011000xxxxxxxxxxxxx
                                                                      umin.  */
-                                                                  return 1837;
+                                                                  return 1933;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx000110110xx0x100000
+                                                                     000001x0xx011011000xxxxxxxxxxxxx
                                                                      bic.  */
-                                                                  return 1212;
+                                                                  return 1253;
                                                                 }
                                                             }
                                                         }
@@ -3355,9 +3795,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx000111xx0xx0x100000
+                                                             000001x0xx0xx111000xxxxxxxxxxxxx
                                                              udivr.  */
-                                                          return 1832;
+                                                          return 1925;
                                                         }
                                                     }
                                                 }
@@ -3368,17 +3808,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx000xxxxx0x00x100001
+                                                     100001x00x0xxxxx000xxxxxxxxxxxxx
                                                      ld1sb.  */
-                                                  return 1447;
+                                                  return 1515;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx000xxxxx0x10x100001
+                                                     100001x01x0xxxxx000xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1458;
+                                                  return 1526;
                                                 }
                                             }
                                         }
@@ -3388,17 +3828,39 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxx0x00x10001x
+                                                 x10001x00x0xxxxx000xxxxxxxxxxxxx
                                                  ld1sb.  */
-                                              return 1451;
+                                              return 1519;
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxx0x10x10001x
-                                                 ld1sh.  */
-                                              return 1462;
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x01x0xxxxx000xx0xxxxxxxxxx
+                                                         sdot.  */
+                                                      return 1774;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         010001x01x0xxxxx000xx1xxxxxxxxxx
+                                                         udot.  */
+                                                      return 1926;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x01x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1sh.  */
+                                                  return 1530;
+                                                }
                                             }
                                         }
                                     }
@@ -3416,26 +3878,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx000000xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx000000xxxxxxxxxx
                                                              add.  */
-                                                          return 1190;
+                                                          return 1231;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001000xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx000100xxxxxxxxxx
                                                              sqadd.  */
-                                                          return 1698;
+                                                          return 1788;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01x000xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx000x10xxxxxxxxxx
                                                          sqsub.  */
-                                                      return 1728;
+                                                      return 1818;
                                                     }
                                                 }
                                               else
@@ -3446,26 +3908,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx100000xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx000001xxxxxxxxxx
                                                              sub.  */
-                                                          return 1810;
+                                                          return 1900;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx101000xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx000101xxxxxxxxxx
                                                              uqadd.  */
-                                                          return 1840;
+                                                          return 1936;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx11x000xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx000x11xxxxxxxxxx
                                                          uqsub.  */
-                                                      return 1870;
+                                                      return 1966;
                                                     }
                                                 }
                                             }
@@ -3475,17 +3937,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx000xxxxx1x00x100001
+                                                     100001x00x1xxxxx000xxxxxxxxxxxxx
                                                      prfb.  */
-                                                  return 1637;
+                                                  return 1721;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx000xxxxx1x10x100001
+                                                     100001x01x1xxxxx000xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1459;
+                                                  return 1527;
                                                 }
                                             }
                                         }
@@ -3495,17 +3957,61 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxx1x00x10001x
+                                                 x10001x00x1xxxxx000xxxxxxxxxxxxx
                                                  prfb.  */
-                                              return 1638;
+                                              return 1722;
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxx1x10x10001x
-                                                 ld1sh.  */
-                                              return 1463;
+                                              if (((word >> 31) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 10) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0101xxxxx000xx0xxxxxxxxxx
+                                                             sdot.  */
+                                                          return 1775;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0111xxxxx000xx0xxxxxxxxxx
+                                                             sdot.  */
+                                                          return 1776;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0101xxxxx000xx1xxxxxxxxxx
+                                                             udot.  */
+                                                          return 1927;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             010001x0111xxxxx000xx1xxxxxxxxxx
+                                                             udot.  */
+                                                          return 1928;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     110001x01x1xxxxx000xxxxxxxxxxxxx
+                                                     ld1sh.  */
+                                                  return 1531;
+                                                }
                                             }
                                         }
                                     }
@@ -3528,26 +4034,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010x0000xx0x100000
+                                                                 000001x0xx0000x0100xxxxxxxxxxxxx
                                                                  asr.  */
-                                                              return 1208;
+                                                              return 1249;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010x0010xx0x100000
+                                                                 000001x0xx0100x0100xxxxxxxxxxxxx
                                                                  asr.  */
-                                                              return 1206;
+                                                              return 1247;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx0010x01x0xx0x100000
+                                                             000001x0xx0x10x0100xxxxxxxxxxxxx
                                                              asr.  */
-                                                          return 1207;
+                                                          return 1248;
                                                         }
                                                     }
                                                   else
@@ -3556,17 +4062,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx0010x1x00xx0x100000
+                                                             000001x0xx00x1x0100xxxxxxxxxxxxx
                                                              asrd.  */
-                                                          return 1209;
+                                                          return 1250;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx0010x1x10xx0x100000
+                                                             000001x0xx01x1x0100xxxxxxxxxxxxx
                                                              asrr.  */
-                                                          return 1210;
+                                                          return 1251;
                                                         }
                                                     }
                                                 }
@@ -3582,35 +4088,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx001100000xx0x100000
+                                                                     000001x0xx000001100xxxxxxxxxxxxx
                                                                      lsr.  */
-                                                                  return 1609;
+                                                                  return 1693;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx001100010xx0x100000
+                                                                     000001x0xx010001100xxxxxxxxxxxxx
                                                                      lsr.  */
-                                                                  return 1607;
+                                                                  return 1691;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0011001x0xx0x100000
+                                                                 000001x0xx0x1001100xxxxxxxxxxxxx
                                                                  lsr.  */
-                                                              return 1608;
+                                                              return 1692;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx001101xx0xx0x100000
+                                                             000001x0xx0xx101100xxxxxxxxxxxxx
                                                              lsrr.  */
-                                                          return 1610;
+                                                          return 1694;
                                                         }
                                                     }
                                                   else
@@ -3623,35 +4129,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx001110000xx0x100000
+                                                                     000001x0xx000011100xxxxxxxxxxxxx
                                                                      lsl.  */
-                                                                  return 1603;
+                                                                  return 1687;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx001110010xx0x100000
+                                                                     000001x0xx010011100xxxxxxxxxxxxx
                                                                      lsl.  */
-                                                                  return 1601;
+                                                                  return 1685;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0011101x0xx0x100000
+                                                                 000001x0xx0x1011100xxxxxxxxxxxxx
                                                                  lsl.  */
-                                                              return 1602;
+                                                              return 1686;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx001111xx0xx0x100000
+                                                             000001x0xx0xx111100xxxxxxxxxxxxx
                                                              lslr.  */
-                                                          return 1604;
+                                                          return 1688;
                                                         }
                                                     }
                                                 }
@@ -3664,17 +4170,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx0x0001xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx1000x0xxxxxxxxxx
                                                          asr.  */
-                                                      return 1204;
+                                                      return 1245;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx0x1001xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx1001x0xxxxxxxxxx
                                                          asr.  */
-                                                      return 1205;
+                                                      return 1246;
                                                     }
                                                 }
                                               else
@@ -3685,17 +4191,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx100001xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx100001xxxxxxxxxx
                                                              lsr.  */
-                                                          return 1605;
+                                                          return 1689;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx101001xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx100101xxxxxxxxxx
                                                              lsr.  */
-                                                          return 1606;
+                                                          return 1690;
                                                         }
                                                     }
                                                   else
@@ -3704,17 +4210,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx110001xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx100011xxxxxxxxxx
                                                              lsl.  */
-                                                          return 1599;
+                                                          return 1683;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx111001xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx100111xxxxxxxxxx
                                                              lsl.  */
-                                                          return 1600;
+                                                          return 1684;
                                                         }
                                                     }
                                                 }
@@ -3728,17 +4234,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxxx000x100001
+                                                     100001x000xxxxxx100xxxxxxxxxxxxx
                                                      ld1sb.  */
-                                                  return 1453;
+                                                  return 1521;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxxx010x100001
+                                                     100001x010xxxxxx100xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1466;
+                                                  return 1534;
                                                 }
                                             }
                                           else
@@ -3747,17 +4253,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxxx100x100001
+                                                     100001x001xxxxxx100xxxxxxxxxxxxx
                                                      ld1rb.  */
-                                                  return 1431;
+                                                  return 1491;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxxx110x100001
+                                                     100001x011xxxxxx100xxxxxxxxxxxxx
                                                      ld1rsw.  */
-                                                  return 1444;
+                                                  return 1512;
                                                 }
                                             }
                                         }
@@ -3770,17 +4276,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx001xxxxx0x00x10001x
+                                                 x10001x00x0xxxxx100xxxxxxxxxxxxx
                                                  ld1sb.  */
-                                              return 1452;
+                                              return 1520;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx001xxxxx0x10x10001x
+                                                 x10001x01x0xxxxx100xxxxxxxxxxxxx
                                                  ld1sh.  */
-                                              return 1464;
+                                              return 1532;
                                             }
                                         }
                                       else
@@ -3791,17 +4297,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxx1000x10001x
+                                                     x10001x0001xxxxx100xxxxxxxxxxxxx
                                                      ld1sb.  */
-                                                  return 1457;
+                                                  return 1525;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxx1010x10001x
+                                                     x10001x0101xxxxx100xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1469;
+                                                  return 1537;
                                                 }
                                             }
                                           else
@@ -3810,17 +4316,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxx1100x10001x
+                                                     x10001x0011xxxxx100xxxxxxxxxxxxx
                                                      prfb.  */
-                                                  return 1639;
+                                                  return 1723;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxx1110x10001x
+                                                     x10001x0111xxxxx100xxxxxxxxxxxxx
                                                      ld1sh.  */
-                                                  return 1465;
+                                                  return 1533;
                                                 }
                                             }
                                         }
@@ -3839,9 +4345,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx0xx0x100000
+                                                 000001x0xx0xxxxx010xxxxxxxxxxxxx
                                                  mla.  */
-                                              return 1612;
+                                              return 1696;
                                             }
                                           else
                                             {
@@ -3849,17 +4355,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx0x00x100001
+                                                     100001x00x0xxxxx010xxxxxxxxxxxxx
                                                      ld1b.  */
-                                                  return 1397;
+                                                  return 1457;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx0x10x100001
+                                                     100001x01x0xxxxx010xxxxxxxxxxxxx
                                                      ld1h.  */
-                                                  return 1417;
+                                                  return 1477;
                                                 }
                                             }
                                         }
@@ -3869,17 +4375,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx0x00x10001x
+                                                 x10001x00x0xxxxx010xxxxxxxxxxxxx
                                                  ld1b.  */
-                                              return 1402;
+                                              return 1462;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx0x10x10001x
+                                                 x10001x01x0xxxxx010xxxxxxxxxxxxx
                                                  ld1h.  */
-                                              return 1422;
+                                              return 1482;
                                             }
                                         }
                                     }
@@ -3897,17 +4403,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx000010xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx010000xxxxxxxxxx
                                                              index.  */
-                                                          return 1388;
+                                                          return 1448;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx100010xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx010001xxxxxxxxxx
                                                              index.  */
-                                                          return 1389;
+                                                          return 1449;
                                                         }
                                                     }
                                                   else
@@ -3918,26 +4424,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxx01010xxxxx1000x100000
+                                                                 000001x0001xxxxx01010xxxxxxxxxxx
                                                                  addvl.  */
-                                                              return 1194;
+                                                              return 1235;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxx01010xxxxx1010x100000
+                                                                 000001x0101xxxxx01010xxxxxxxxxxx
                                                                  rdvl.  */
-                                                              return 1673;
+                                                              return 1757;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxx01010xxxxx11x0x100000
+                                                             000001x0x11xxxxx01010xxxxxxxxxxx
                                                              addpl.  */
-                                                          return 1193;
+                                                          return 1234;
                                                         }
                                                     }
                                                 }
@@ -3947,17 +4453,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01x010xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx010x10xxxxxxxxxx
                                                          index.  */
-                                                      return 1390;
+                                                      return 1450;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx11x010xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx010x11xxxxxxxxxx
                                                          index.  */
-                                                      return 1387;
+                                                      return 1447;
                                                     }
                                                 }
                                             }
@@ -3967,17 +4473,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1x00x100001
+                                                     100001x00x1xxxxx010xxxxxxxxxxxxx
                                                      prfw.  */
-                                                  return 1657;
+                                                  return 1741;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1x10x100001
+                                                     100001x01x1xxxxx010xxxxxxxxxxxxx
                                                      ld1h.  */
-                                                  return 1418;
+                                                  return 1478;
                                                 }
                                             }
                                         }
@@ -3987,17 +4493,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx1x00x10001x
+                                                 x10001x00x1xxxxx010xxxxxxxxxxxxx
                                                  prfw.  */
-                                              return 1659;
+                                              return 1743;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx1x10x10001x
+                                                 x10001x01x1xxxxx010xxxxxxxxxxxxx
                                                  ld1h.  */
-                                              return 1423;
+                                              return 1483;
                                             }
                                         }
                                     }
@@ -4012,9 +4518,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx011xxxxx0xx0x100000
+                                                 000001x0xx0xxxxx110xxxxxxxxxxxxx
                                                  mad.  */
-                                              return 1611;
+                                              return 1695;
                                             }
                                           else
                                             {
@@ -4028,9 +4534,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00x011xxxx010x0x100000
+                                                                 000001x0x010xxxx110x00xxxxxxxxxx
                                                                  sqincw.  */
-                                                              return 1725;
+                                                              return 1815;
                                                             }
                                                           else
                                                             {
@@ -4038,17 +4544,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00x011xxxx01100x100000
+                                                                     000001x00110xxxx110x00xxxxxxxxxx
                                                                      sqinch.  */
-                                                                  return 1719;
+                                                                  return 1809;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00x011xxxx01110x100000
+                                                                     000001x01110xxxx110x00xxxxxxxxxx
                                                                      sqincd.  */
-                                                                  return 1716;
+                                                                  return 1806;
                                                                 }
                                                             }
                                                         }
@@ -4058,9 +4564,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00x011xxxx110x0x100000
+                                                                 000001x0x011xxxx110x00xxxxxxxxxx
                                                                  incw.  */
-                                                              return 1385;
+                                                              return 1445;
                                                             }
                                                           else
                                                             {
@@ -4068,17 +4574,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00x011xxxx11100x100000
+                                                                     000001x00111xxxx110x00xxxxxxxxxx
                                                                      inch.  */
-                                                                  return 1381;
+                                                                  return 1441;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00x011xxxx11110x100000
+                                                                     000001x01111xxxx110x00xxxxxxxxxx
                                                                      incd.  */
-                                                                  return 1379;
+                                                                  return 1439;
                                                                 }
                                                             }
                                                         }
@@ -4089,9 +4595,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx01x011xxxxx10x0x100000
+                                                             000001x0x01xxxxx110x10xxxxxxxxxx
                                                              sqdecw.  */
-                                                          return 1711;
+                                                          return 1801;
                                                         }
                                                       else
                                                         {
@@ -4099,17 +4605,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx01x011xxxxx1100x100000
+                                                                 000001x0011xxxxx110x10xxxxxxxxxx
                                                                  sqdech.  */
-                                                              return 1705;
+                                                              return 1795;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx01x011xxxxx1110x100000
+                                                                 000001x0111xxxxx110x10xxxxxxxxxx
                                                                  sqdecd.  */
-                                                              return 1702;
+                                                              return 1792;
                                                             }
                                                         }
                                                     }
@@ -4124,9 +4630,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx10x011xxxx010x0x100000
+                                                                 000001x0x010xxxx110x01xxxxxxxxxx
                                                                  uqincw.  */
-                                                              return 1867;
+                                                              return 1963;
                                                             }
                                                           else
                                                             {
@@ -4134,17 +4640,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx10x011xxxx01100x100000
+                                                                     000001x00110xxxx110x01xxxxxxxxxx
                                                                      uqinch.  */
-                                                                  return 1861;
+                                                                  return 1957;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx10x011xxxx01110x100000
+                                                                     000001x01110xxxx110x01xxxxxxxxxx
                                                                      uqincd.  */
-                                                                  return 1858;
+                                                                  return 1954;
                                                                 }
                                                             }
                                                         }
@@ -4154,9 +4660,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx10x011xxxx110x0x100000
+                                                                 000001x0x011xxxx110x01xxxxxxxxxx
                                                                  decw.  */
-                                                              return 1279;
+                                                              return 1320;
                                                             }
                                                           else
                                                             {
@@ -4164,17 +4670,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx10x011xxxx11100x100000
+                                                                     000001x00111xxxx110x01xxxxxxxxxx
                                                                      dech.  */
-                                                                  return 1275;
+                                                                  return 1316;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx10x011xxxx11110x100000
+                                                                     000001x01111xxxx110x01xxxxxxxxxx
                                                                      decd.  */
-                                                                  return 1273;
+                                                                  return 1314;
                                                                 }
                                                             }
                                                         }
@@ -4185,9 +4691,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx11x011xxxxx10x0x100000
+                                                             000001x0x01xxxxx110x11xxxxxxxxxx
                                                              uqdecw.  */
-                                                          return 1853;
+                                                          return 1949;
                                                         }
                                                       else
                                                         {
@@ -4195,17 +4701,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx11x011xxxxx1100x100000
+                                                                 000001x0011xxxxx110x11xxxxxxxxxx
                                                                  uqdech.  */
-                                                              return 1847;
+                                                              return 1943;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx11x011xxxxx1110x100000
+                                                                 000001x0111xxxxx110x11xxxxxxxxxx
                                                                  uqdecd.  */
-                                                              return 1844;
+                                                              return 1940;
                                                             }
                                                         }
                                                     }
@@ -4222,17 +4728,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0000x100001
+                                                         100001x0000xxxxx110xxxxxxxxxxxxx
                                                          prfb.  */
-                                                      return 1636;
+                                                      return 1720;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0010x100001
+                                                         100001x0100xxxxx110xxxxxxxxxxxxx
                                                          prfh.  */
-                                                      return 1651;
+                                                      return 1735;
                                                     }
                                                 }
                                               else
@@ -4241,17 +4747,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx1000x100001
+                                                         100001x0001xxxxx110xxxxxxxxxxxxx
                                                          ld1b.  */
-                                                      return 1404;
+                                                      return 1464;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx1010x100001
+                                                         100001x0101xxxxx110xxxxxxxxxxxxx
                                                          ld1h.  */
-                                                      return 1426;
+                                                      return 1486;
                                                     }
                                                 }
                                             }
@@ -4261,17 +4767,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxxx100x100001
+                                                     100001x001xxxxxx110xxxxxxxxxxxxx
                                                      ld1rb.  */
-                                                  return 1433;
+                                                  return 1493;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxxx110x100001
+                                                     100001x011xxxxxx110xxxxxxxxxxxxx
                                                      ld1rh.  */
-                                                  return 1437;
+                                                  return 1497;
                                                 }
                                             }
                                         }
@@ -4284,17 +4790,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx011xxxxx0x00x10001x
+                                                 x10001x00x0xxxxx110xxxxxxxxxxxxx
                                                  ld1b.  */
-                                              return 1403;
+                                              return 1463;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx011xxxxx0x10x10001x
+                                                 x10001x01x0xxxxx110xxxxxxxxxxxxx
                                                  ld1h.  */
-                                              return 1424;
+                                              return 1484;
                                             }
                                         }
                                       else
@@ -4305,17 +4811,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1000x10001x
+                                                     x10001x0001xxxxx110xxxxxxxxxxxxx
                                                      ld1b.  */
-                                                  return 1409;
+                                                  return 1469;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1010x10001x
+                                                     x10001x0101xxxxx110xxxxxxxxxxxxx
                                                      ld1h.  */
-                                                  return 1430;
+                                                  return 1490;
                                                 }
                                             }
                                           else
@@ -4324,17 +4830,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1100x10001x
+                                                     x10001x0011xxxxx110xxxxxxxxxxxxx
                                                      prfw.  */
-                                                  return 1660;
+                                                  return 1744;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1110x10001x
+                                                     x10001x0111xxxxx110xxxxxxxxxxxxx
                                                      ld1h.  */
-                                                  return 1425;
+                                                  return 1485;
                                                 }
                                             }
                                         }
@@ -4344,790 +4850,361 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         }
                       else
                         {
-                          if (((word >> 21) & 0x1) == 0)
+                          if (((word >> 14) & 0x1) == 0)
                             {
                               if (((word >> 15) & 0x1) == 0)
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
-                                    {
-                                      if (((word >> 4) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx0xxxxxxxx000xxxxx0xx0x1001xx
-                                             cmphs.  */
-                                          return 1245;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx1xxxxxxxx000xxxxx0xx0x1001xx
-                                             cmphi.  */
-                                          return 1242;
-                                        }
-                                    }
-                                  else
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
                                       if (((word >> 30) & 0x1) == 0)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxx0xxxxxxxx010xxxxx0xx0x100100
-                                                     cmpge.  */
-                                                  return 1236;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxx1xxxxxxxx010xxxxx0xx0x100100
-                                                     cmpgt.  */
-                                                  return 1239;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 17) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 19) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0000x100101
-                                                         ld1b.  */
-                                                      return 1398;
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx000x00001xxxxxxxxxxxxx
+                                                                 saddv.  */
+                                                              return 1764;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx000x01001xxxxxxxxxxxxx
+                                                                 uaddv.  */
+                                                              return 1916;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx010x0x001xxxxxxxxxxxxx
+                                                             movprfx.  */
+                                                          return 1699;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0010x100101
-                                                         ld1sw.  */
-                                                      return 1470;
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx001x00001xxxxxxxxxxxxx
+                                                                 smaxv.  */
+                                                              return 1782;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx011x00001xxxxxxxxxxxxx
+                                                                 orv.  */
+                                                              return 1716;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx001x01001xxxxxxxxxxxxx
+                                                                 umaxv.  */
+                                                              return 1931;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx011x01001xxxxxxxxxxxxx
+                                                                 eorv.  */
+                                                              return 1331;
+                                                            }
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0100x100101
-                                                         ld1b.  */
-                                                      return 1400;
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx00xx10001xxxxxxxxxxxxx
+                                                             sminv.  */
+                                                          return 1785;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x0xx01xx10001xxxxxxxxxxxxx
+                                                             andv.  */
+                                                          return 1244;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0110x100101
-                                                         ld1h.  */
-                                                      return 1420;
+                                                         000001x0xx0xxx11001xxxxxxxxxxxxx
+                                                         uminv.  */
+                                                      return 1934;
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx00x0x10011x
-                                                 st1b.  */
-                                              return 1730;
-                                            }
                                           else
                                             {
                                               if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx0100x10011x
-                                                     st1b.  */
-                                                  return 1734;
+                                                     100001x00x0xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sb.  */
+                                                  return 1615;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx0110x10011x
-                                                     st1h.  */
-                                                  return 1755;
+                                                     100001x01x0xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1626;
                                                 }
                                             }
                                         }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      else
                                         {
-                                          if (((word >> 4) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxx0xxxxxxxx001xxxxx0xx0x10010x
-                                                 cmpge.  */
-                                              return 1237;
+                                                 x10001x00x0xxxxx001xxxxxxxxxxxxx
+                                                 ldff1sb.  */
+                                              return 1622;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxx1xxxxxxxx001xxxxx0xx0x10010x
-                                                 cmpgt.  */
-                                              return 1240;
+                                                 x10001x01x0xxxxx001xxxxxxxxxxxxx
+                                                 ldff1sh.  */
+                                              return 1632;
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 30) & 0x1) == 0)
                                             {
-                                              if (((word >> 4) & 0x1) == 0)
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxx0xxxxxxxx011xxxxx0xx0x100100
-                                                     cmphs.  */
-                                                  return 1246;
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x0001xxxxx001xxxxxxxxxxxxx
+                                                         and.  */
+                                                      return 1239;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x0011xxxxx001xxxxxxxxxxxxx
+                                                         orr.  */
+                                                      return 1711;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx1xxxxxxxx011xxxxx0xx0x100100
-                                                     cmphi.  */
-                                                  return 1243;
+                                                     100001x00x1xxxxx001xxxxxxxxxxxxx
+                                                     prfh.  */
+                                                  return 1734;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x10001x00x1xxxxx001xxxxxxxxxxxxx
+                                                 prfh.  */
+                                              return 1736;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 30) & 0x1) == 0)
+                                            {
+                                              if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0000x100101
-                                                         ldnt1b.  */
-                                                      return 1589;
+                                                         000001x0101xxxxx001xxxxxxxxxxxxx
+                                                         eor.  */
+                                                      return 1326;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0010x100101
-                                                         ldnt1h.  */
-                                                      return 1593;
+                                                         000001x0111xxxxx001xxxxxxxxxxxxx
+                                                         bic.  */
+                                                      return 1252;
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0100x100101
-                                                         ld3b.  */
-                                                      return 1497;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0110x100101
-                                                         ld3h.  */
-                                                      return 1501;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 22) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0000x10011x
-                                                 st1b.  */
-                                              return 1731;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0010x10011x
-                                                 st1h.  */
-                                              return 1750;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0100x10011x
-                                                 st1b.  */
-                                              return 1735;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0110x10011x
-                                                 st1h.  */
-                                              return 1756;
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 30) & 0x1) == 0)
-                                {
-                                  if (((word >> 31) & 0x1) == 0)
-                                    {
-                                      if (((word >> 4) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx0xxxxxxxx0xxxxxxx1xx0x100100
-                                             cmphs.  */
-                                          return 1247;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx1xxxxxxxx0xxxxxxx1xx0x100100
-                                             cmphi.  */
-                                          return 1244;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x0xxxxx1000x100101
-                                                     ld1b.  */
-                                                  return 1399;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x0xxxxx1010x100101
-                                                     ld1h.  */
-                                                  return 1419;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x0xxxxx1100x100101
-                                                     ld1b.  */
-                                                  return 1401;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x0xxxxx1110x100101
-                                                     ld1h.  */
-                                                  return 1421;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x1xxxxx1000x100101
-                                                     ld2b.  */
-                                                  return 1489;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x1xxxxx1010x100101
-                                                     ld2h.  */
-                                                  return 1493;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x1xxxxx1100x100101
-                                                     ld4b.  */
-                                                  return 1505;
-                                                }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx0x1xxxxx1110x100101
-                                                     ld4h.  */
-                                                  return 1509;
+                                                     100001x01x1xxxxx001xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1627;
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 15) & 0x1) == 0)
-                                    {
-                                      if (((word >> 22) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x0xxxxx1000x10011x
-                                                 st1b.  */
-                                              return 1733;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x0xxxxx1010x10011x
-                                                 st1h.  */
-                                              return 1752;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x0xxxxx1100x10011x
-                                                 st1b.  */
-                                              return 1736;
-                                            }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x0xxxxx1110x10011x
-                                                 st1h.  */
-                                              return 1757;
+                                                 x10001x01x1xxxxx001xxxxxxxxxxxxx
+                                                 ldff1sh.  */
+                                              return 1633;
                                             }
                                         }
                                     }
-                                  else
-                                    {
-                                      if (((word >> 22) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0x1xxxxx10x0x10011x
-                                             st1h.  */
-                                          return 1753;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0x1xxxxx11x0x10011x
-                                             st1h.  */
-                                          return 1758;
-                                        }
-                                    }
                                 }
-                            }
-                        }
-                    }
-                  else
-                    {
-                      if (((word >> 29) & 0x1) == 0)
-                        {
-                          if (((word >> 14) & 0x1) == 0)
-                            {
-                              if (((word >> 15) & 0x1) == 0)
+                              else
                                 {
-                                  if (((word >> 21) & 0x1) == 0)
+                                  if (((word >> 30) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 21) & 0x1) == 0)
                                             {
-                                              if (((word >> 17) & 0x1) == 0)
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 16) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx10000x000xx0x100000
-                                                                 saddv.  */
-                                                              return 1680;
+                                                                 000001x0xx0x0000101xxxxxxxxxxxxx
+                                                                 sxtb.  */
+                                                              return 1907;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx10010x000xx0x100000
-                                                                 uaddv.  */
-                                                              return 1826;
+                                                                 000001x0xx0x1000101xxxxxxxxxxxxx
+                                                                 cls.  */
+                                                              return 1272;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx100x0x010xx0x100000
-                                                             movprfx.  */
-                                                          return 1615;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x0100101xxxxxxxxxxxxx
+                                                                 sxtw.  */
+                                                              return 1909;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x0xx0x1100101xxxxxxxxxxxxx
+                                                                 fabs.  */
+                                                              return 1334;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx10000x100xx0x100000
-                                                                 smaxv.  */
-                                                              return 1692;
+                                                                 000001x0xx0x0010101xxxxxxxxxxxxx
+                                                                 sxth.  */
+                                                              return 1908;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx10000x110xx0x100000
-                                                                 orv.  */
-                                                              return 1632;
+                                                                 000001x0xx0x1010101xxxxxxxxxxxxx
+                                                                 cnt.  */
+                                                              return 1301;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx10010x100xx0x100000
-                                                                 umaxv.  */
-                                                              return 1835;
+                                                                 000001x0xx0x0110101xxxxxxxxxxxxx
+                                                                 abs.  */
+                                                              return 1230;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx10010x110xx0x100000
-                                                                 eorv.  */
-                                                              return 1290;
+                                                                 000001x0xx0x1110101xxxxxxxxxxxxx
+                                                                 not.  */
+                                                              return 1708;
                                                             }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx10001xx00xx0x100000
-                                                             sminv.  */
-                                                          return 1695;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx10001xx10xx0x100000
-                                                             andv.  */
-                                                          return 1203;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10011xxx0xx0x100000
-                                                         uminv.  */
-                                                      return 1838;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx100xxxxx0x00x100001
-                                                     ldff1sb.  */
-                                                  return 1539;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx100xxxxx0x10x100001
-                                                     ldff1sh.  */
-                                                  return 1547;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx100xxxxx0x00x10001x
-                                                 ldff1sb.  */
-                                              return 1543;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx100xxxxx0x10x10001x
-                                                 ldff1sh.  */
-                                              return 1551;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 23) & 0x1) == 0)
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              if (((word >> 31) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 22) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100xxxxx1000x100000
-                                                         and.  */
-                                                      return 1198;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100xxxxx1100x100000
-                                                         orr.  */
-                                                      return 1627;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx100xxxxx1x00x100001
-                                                     prfh.  */
-                                                  return 1650;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx100xxxxx1x00x10001x
-                                                 prfh.  */
-                                              return 1652;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              if (((word >> 31) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 22) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100xxxxx1010x100000
-                                                         eor.  */
-                                                      return 1285;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100xxxxx1110x100000
-                                                         bic.  */
-                                                      return 1211;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx100xxxxx1x10x100001
-                                                     ldff1sh.  */
-                                                  return 1548;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx100xxxxx1x10x10001x
-                                                 ldff1sh.  */
-                                              return 1552;
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 31) & 0x1) == 0)
-                                        {
-                                          if (((word >> 21) & 0x1) == 0)
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 17) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010000x0xx0x100000
-                                                                 sxtb.  */
-                                                              return 1817;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010001x0xx0x100000
-                                                                 cls.  */
-                                                              return 1231;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010010x0xx0x100000
-                                                                 sxtw.  */
-                                                              return 1819;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010011x0xx0x100000
-                                                                 fabs.  */
-                                                              return 1293;
-                                                            }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010100x0xx0x100000
-                                                                 sxth.  */
-                                                              return 1818;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010101x0xx0x100000
-                                                                 cnt.  */
-                                                              return 1260;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010110x0xx0x100000
-                                                                 abs.  */
-                                                              return 1189;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1010111x0xx0x100000
-                                                                 not.  */
-                                                              return 1624;
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 17) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 18) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1011000x0xx0x100000
+                                                                 000001x0xx0x0001101xxxxxxxxxxxxx
                                                                  uxtb.  */
-                                                              return 1874;
+                                                              return 1970;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1011001x0xx0x100000
+                                                                 000001x0xx0x1001101xxxxxxxxxxxxx
                                                                  clz.  */
-                                                              return 1232;
+                                                              return 1273;
                                                             }
                                                         }
                                                       else
@@ -5136,17 +5213,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1011010x0xx0x100000
+                                                                 000001x0xx0x0101101xxxxxxxxxxxxx
                                                                  uxtw.  */
-                                                              return 1876;
+                                                              return 1972;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1011011x0xx0x100000
+                                                                 000001x0xx0x1101101xxxxxxxxxxxxx
                                                                  fneg.  */
-                                                              return 1351;
+                                                              return 1411;
                                                             }
                                                         }
                                                     }
@@ -5158,26 +5235,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1011100x0xx0x100000
+                                                                 000001x0xx0x0011101xxxxxxxxxxxxx
                                                                  uxth.  */
-                                                              return 1875;
+                                                              return 1971;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx1011101x0xx0x100000
+                                                                 000001x0xx0x1011101xxxxxxxxxxxxx
                                                                  cnot.  */
-                                                              return 1259;
+                                                              return 1300;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101111xx0xx0x100000
+                                                             000001x0xx0xx111101xxxxxxxxxxxxx
                                                              neg.  */
-                                                          return 1621;
+                                                          return 1705;
                                                         }
                                                     }
                                                 }
@@ -5192,26 +5269,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxx0101xxxxx1000x100000
+                                                             000001x0001xxxxx1010xxxxxxxxxxxx
                                                              adr.  */
-                                                          return 1195;
+                                                          return 1236;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxx0101xxxxx1100x100000
+                                                             000001x0011xxxxx1010xxxxxxxxxxxx
                                                              adr.  */
-                                                          return 1196;
+                                                          return 1237;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxx0101xxxxx1x10x100000
+                                                         000001x01x1xxxxx1010xxxxxxxxxxxx
                                                          adr.  */
-                                                      return 1197;
+                                                      return 1238;
                                                     }
                                                 }
                                               else
@@ -5222,26 +5299,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001101xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx101100xxxxxxxxxx
                                                              ftssel.  */
-                                                          return 1377;
+                                                          return 1437;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011101xxxxx1xx0x100000
+                                                             000001x0xx1xxxxx101110xxxxxxxxxx
                                                              fexpa.  */
-                                                          return 1330;
+                                                          return 1381;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1x1101xxxxx1xx0x100000
+                                                         000001x0xx1xxxxx1011x1xxxxxxxxxx
                                                          movprfx.  */
-                                                      return 1614;
+                                                      return 1698;
                                                     }
                                                 }
                                             }
@@ -5254,17 +5331,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxxx000x100001
+                                                     100001x000xxxxxx101xxxxxxxxxxxxx
                                                      ldff1sb.  */
-                                                  return 1545;
+                                                  return 1624;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxxx010x100001
+                                                     100001x010xxxxxx101xxxxxxxxxxxxx
                                                      ldff1sh.  */
-                                                  return 1555;
+                                                  return 1636;
                                                 }
                                             }
                                           else
@@ -5273,17 +5350,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxxx100x100001
+                                                     100001x001xxxxxx101xxxxxxxxxxxxx
                                                      ld1rb.  */
-                                                  return 1432;
+                                                  return 1492;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxxx110x100001
+                                                     100001x011xxxxxx101xxxxxxxxxxxxx
                                                      ld1rh.  */
-                                                  return 1436;
+                                                  return 1496;
                                                 }
                                             }
                                         }
@@ -5296,17 +5373,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx101xxxxx0x00x10001x
+                                                 x10001x00x0xxxxx101xxxxxxxxxxxxx
                                                  ldff1sb.  */
-                                              return 1544;
+                                              return 1623;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx101xxxxx0x10x10001x
+                                                 x10001x01x0xxxxx101xxxxxxxxxxxxx
                                                  ldff1sh.  */
-                                              return 1553;
+                                              return 1634;
                                             }
                                         }
                                       else
@@ -5317,17 +5394,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1000x10001x
+                                                     x10001x0001xxxxx101xxxxxxxxxxxxx
                                                      ldff1sb.  */
-                                                  return 1546;
+                                                  return 1625;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1010x10001x
+                                                     x10001x0101xxxxx101xxxxxxxxxxxxx
                                                      ldff1sh.  */
-                                                  return 1556;
+                                                  return 1637;
                                                 }
                                             }
                                           else
@@ -5336,17 +5413,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1100x10001x
+                                                     x10001x0011xxxxx101xxxxxxxxxxxxx
                                                      prfh.  */
-                                                  return 1653;
+                                                  return 1737;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1110x10001x
+                                                     x10001x0111xxxxx101xxxxxxxxxxxxx
                                                      ldff1sh.  */
-                                                  return 1554;
+                                                  return 1635;
                                                 }
                                             }
                                         }
@@ -5365,9 +5442,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx0xx0x100000
+                                                 000001x0xx0xxxxx011xxxxxxxxxxxxx
                                                  mls.  */
-                                              return 1613;
+                                              return 1697;
                                             }
                                           else
                                             {
@@ -5375,17 +5452,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0x00x100001
+                                                     100001x00x0xxxxx011xxxxxxxxxxxxx
                                                      ldff1b.  */
-                                                  return 1513;
+                                                  return 1581;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0x10x100001
+                                                     100001x01x0xxxxx011xxxxxxxxxxxxx
                                                      ldff1h.  */
-                                                  return 1528;
+                                                  return 1601;
                                                 }
                                             }
                                         }
@@ -5395,17 +5472,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx0x00x10001x
+                                                 x10001x00x0xxxxx011xxxxxxxxxxxxx
                                                  ldff1b.  */
-                                              return 1518;
+                                              return 1590;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx0x10x10001x
+                                                 x10001x01x0xxxxx011xxxxxxxxxxxxx
                                                  ldff1h.  */
-                                              return 1533;
+                                              return 1609;
                                             }
                                         }
                                     }
@@ -5417,17 +5494,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx1x00x10000x
+                                                 x00001x00x1xxxxx011xxxxxxxxxxxxx
                                                  prfd.  */
-                                              return 1643;
+                                              return 1727;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx1x00x10001x
+                                                 x10001x00x1xxxxx011xxxxxxxxxxxxx
                                                  prfd.  */
-                                              return 1645;
+                                              return 1729;
                                             }
                                         }
                                       else
@@ -5436,17 +5513,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx1x10x10000x
+                                                 x00001x01x1xxxxx011xxxxxxxxxxxxx
                                                  ldff1h.  */
-                                              return 1529;
+                                              return 1602;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx1x10x10001x
+                                                 x10001x01x1xxxxx011xxxxxxxxxxxxx
                                                  ldff1h.  */
-                                              return 1534;
+                                              return 1610;
                                             }
                                         }
                                     }
@@ -5461,9 +5538,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx111xxxxx0xx0x100000
+                                                 000001x0xx0xxxxx111xxxxxxxxxxxxx
                                                  msb.  */
-                                              return 1616;
+                                              return 1700;
                                             }
                                           else
                                             {
@@ -5481,17 +5558,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx01000x100000
+                                                                         000001x00010xxxx111000xxxxxxxxxx
                                                                          cntb.  */
-                                                                      return 1261;
+                                                                      return 1302;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx01010x100000
+                                                                         000001x01010xxxx111000xxxxxxxxxx
                                                                          cntw.  */
-                                                                      return 1265;
+                                                                      return 1306;
                                                                     }
                                                                 }
                                                               else
@@ -5500,17 +5577,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx01100x100000
+                                                                         000001x00110xxxx111000xxxxxxxxxx
                                                                          cnth.  */
-                                                                      return 1263;
+                                                                      return 1304;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx01110x100000
+                                                                         000001x01110xxxx111000xxxxxxxxxx
                                                                          cntd.  */
-                                                                      return 1262;
+                                                                      return 1303;
                                                                     }
                                                                 }
                                                             }
@@ -5522,17 +5599,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx11000x100000
+                                                                         000001x00011xxxx111000xxxxxxxxxx
                                                                          incb.  */
-                                                                      return 1378;
+                                                                      return 1438;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx11010x100000
+                                                                         000001x01011xxxx111000xxxxxxxxxx
                                                                          incw.  */
-                                                                      return 1386;
+                                                                      return 1446;
                                                                     }
                                                                 }
                                                               else
@@ -5541,17 +5618,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx11100x100000
+                                                                         000001x00111xxxx111000xxxxxxxxxx
                                                                          inch.  */
-                                                                      return 1382;
+                                                                      return 1442;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx000111xxxx11110x100000
+                                                                         000001x01111xxxx111000xxxxxxxxxx
                                                                          incd.  */
-                                                                      return 1380;
+                                                                      return 1440;
                                                                     }
                                                                 }
                                                             }
@@ -5566,17 +5643,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx01000x100000
+                                                                         000001x00010xxxx111100xxxxxxxxxx
                                                                          sqincb.  */
-                                                                      return 1715;
+                                                                      return 1805;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx01010x100000
+                                                                         000001x01010xxxx111100xxxxxxxxxx
                                                                          sqincw.  */
-                                                                      return 1727;
+                                                                      return 1817;
                                                                     }
                                                                 }
                                                               else
@@ -5585,17 +5662,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx01100x100000
+                                                                         000001x00110xxxx111100xxxxxxxxxx
                                                                          sqinch.  */
-                                                                      return 1721;
+                                                                      return 1811;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx01110x100000
+                                                                         000001x01110xxxx111100xxxxxxxxxx
                                                                          sqincd.  */
-                                                                      return 1718;
+                                                                      return 1808;
                                                                     }
                                                                 }
                                                             }
@@ -5607,17 +5684,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx11000x100000
+                                                                         000001x00011xxxx111100xxxxxxxxxx
                                                                          sqincb.  */
-                                                                      return 1714;
+                                                                      return 1804;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx11010x100000
+                                                                         000001x01011xxxx111100xxxxxxxxxx
                                                                          sqincw.  */
-                                                                      return 1726;
+                                                                      return 1816;
                                                                     }
                                                                 }
                                                               else
@@ -5626,17 +5703,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx11100x100000
+                                                                         000001x00111xxxx111100xxxxxxxxxx
                                                                          sqinch.  */
-                                                                      return 1720;
+                                                                      return 1810;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx001111xxxx11110x100000
+                                                                         000001x01111xxxx111100xxxxxxxxxx
                                                                          sqincd.  */
-                                                                      return 1717;
+                                                                      return 1807;
                                                                     }
                                                                 }
                                                             }
@@ -5652,17 +5729,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx01000x100000
+                                                                     000001x00010xxxx111x10xxxxxxxxxx
                                                                      sqdecb.  */
-                                                                  return 1701;
+                                                                  return 1791;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx01010x100000
+                                                                     000001x01010xxxx111x10xxxxxxxxxx
                                                                      sqdecw.  */
-                                                                  return 1713;
+                                                                  return 1803;
                                                                 }
                                                             }
                                                           else
@@ -5671,17 +5748,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx01100x100000
+                                                                     000001x00110xxxx111x10xxxxxxxxxx
                                                                      sqdech.  */
-                                                                  return 1707;
+                                                                  return 1797;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx01110x100000
+                                                                     000001x01110xxxx111x10xxxxxxxxxx
                                                                      sqdecd.  */
-                                                                  return 1704;
+                                                                  return 1794;
                                                                 }
                                                             }
                                                         }
@@ -5693,17 +5770,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx11000x100000
+                                                                     000001x00011xxxx111x10xxxxxxxxxx
                                                                      sqdecb.  */
-                                                                  return 1700;
+                                                                  return 1790;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx11010x100000
+                                                                     000001x01011xxxx111x10xxxxxxxxxx
                                                                      sqdecw.  */
-                                                                  return 1712;
+                                                                  return 1802;
                                                                 }
                                                             }
                                                           else
@@ -5712,17 +5789,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx11100x100000
+                                                                     000001x00111xxxx111x10xxxxxxxxxx
                                                                      sqdech.  */
-                                                                  return 1706;
+                                                                  return 1796;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01x111xxxx11110x100000
+                                                                     000001x01111xxxx111x10xxxxxxxxxx
                                                                      sqdecd.  */
-                                                                  return 1703;
+                                                                  return 1793;
                                                                 }
                                                             }
                                                         }
@@ -5740,17 +5817,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx100111xxxxx1000x100000
+                                                                     000001x0001xxxxx111001xxxxxxxxxx
                                                                      decb.  */
-                                                                  return 1272;
+                                                                  return 1313;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx100111xxxxx1010x100000
+                                                                     000001x0101xxxxx111001xxxxxxxxxx
                                                                      decw.  */
-                                                                  return 1280;
+                                                                  return 1321;
                                                                 }
                                                             }
                                                           else
@@ -5759,17 +5836,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx100111xxxxx1100x100000
+                                                                     000001x0011xxxxx111001xxxxxxxxxx
                                                                      dech.  */
-                                                                  return 1276;
+                                                                  return 1317;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx100111xxxxx1110x100000
+                                                                     000001x0111xxxxx111001xxxxxxxxxx
                                                                      decd.  */
-                                                                  return 1274;
+                                                                  return 1315;
                                                                 }
                                                             }
                                                         }
@@ -5783,17 +5860,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx01000x100000
+                                                                         000001x00010xxxx111101xxxxxxxxxx
                                                                          uqincb.  */
-                                                                      return 1856;
+                                                                      return 1952;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx01010x100000
+                                                                         000001x01010xxxx111101xxxxxxxxxx
                                                                          uqincw.  */
-                                                                      return 1868;
+                                                                      return 1964;
                                                                     }
                                                                 }
                                                               else
@@ -5802,17 +5879,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx01100x100000
+                                                                         000001x00110xxxx111101xxxxxxxxxx
                                                                          uqinch.  */
-                                                                      return 1862;
+                                                                      return 1958;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx01110x100000
+                                                                         000001x01110xxxx111101xxxxxxxxxx
                                                                          uqincd.  */
-                                                                      return 1859;
+                                                                      return 1955;
                                                                     }
                                                                 }
                                                             }
@@ -5824,17 +5901,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx11000x100000
+                                                                         000001x00011xxxx111101xxxxxxxxxx
                                                                          uqincb.  */
-                                                                      return 1857;
+                                                                      return 1953;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx11010x100000
+                                                                         000001x01011xxxx111101xxxxxxxxxx
                                                                          uqincw.  */
-                                                                      return 1869;
+                                                                      return 1965;
                                                                     }
                                                                 }
                                                               else
@@ -5843,17 +5920,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx11100x100000
+                                                                         000001x00111xxxx111101xxxxxxxxxx
                                                                          uqinch.  */
-                                                                      return 1863;
+                                                                      return 1959;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx101111xxxx11110x100000
+                                                                         000001x01111xxxx111101xxxxxxxxxx
                                                                          uqincd.  */
-                                                                      return 1860;
+                                                                      return 1956;
                                                                     }
                                                                 }
                                                             }
@@ -5869,17 +5946,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx01000x100000
+                                                                     000001x00010xxxx111x11xxxxxxxxxx
                                                                      uqdecb.  */
-                                                                  return 1842;
+                                                                  return 1938;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx01010x100000
+                                                                     000001x01010xxxx111x11xxxxxxxxxx
                                                                      uqdecw.  */
-                                                                  return 1854;
+                                                                  return 1950;
                                                                 }
                                                             }
                                                           else
@@ -5888,17 +5965,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx01100x100000
+                                                                     000001x00110xxxx111x11xxxxxxxxxx
                                                                      uqdech.  */
-                                                                  return 1848;
+                                                                  return 1944;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx01110x100000
+                                                                     000001x01110xxxx111x11xxxxxxxxxx
                                                                      uqdecd.  */
-                                                                  return 1845;
+                                                                  return 1941;
                                                                 }
                                                             }
                                                         }
@@ -5910,17 +5987,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx11000x100000
+                                                                     000001x00011xxxx111x11xxxxxxxxxx
                                                                      uqdecb.  */
-                                                                  return 1843;
+                                                                  return 1939;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx11010x100000
+                                                                     000001x01011xxxx111x11xxxxxxxxxx
                                                                      uqdecw.  */
-                                                                  return 1855;
+                                                                  return 1951;
                                                                 }
                                                             }
                                                           else
@@ -5929,17 +6006,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx11100x100000
+                                                                     000001x00111xxxx111x11xxxxxxxxxx
                                                                      uqdech.  */
-                                                                  return 1849;
+                                                                  return 1945;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx11x111xxxx11110x100000
+                                                                     000001x01111xxxx111x11xxxxxxxxxx
                                                                      uqdecd.  */
-                                                                  return 1846;
+                                                                  return 1942;
                                                                 }
                                                             }
                                                         }
@@ -5957,17 +6034,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0000x100001
+                                                         100001x0000xxxxx111xxxxxxxxxxxxx
                                                          prfb.  */
-                                                      return 1640;
+                                                      return 1724;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0010x100001
+                                                         100001x0100xxxxx111xxxxxxxxxxxxx
                                                          prfh.  */
-                                                      return 1654;
+                                                      return 1738;
                                                     }
                                                 }
                                               else
@@ -5976,17 +6053,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1000x100001
+                                                         100001x0001xxxxx111xxxxxxxxxxxxx
                                                          ldff1b.  */
-                                                      return 1520;
+                                                      return 1592;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1010x100001
+                                                         100001x0101xxxxx111xxxxxxxxxxxxx
                                                          ldff1h.  */
-                                                      return 1537;
+                                                      return 1613;
                                                     }
                                                 }
                                             }
@@ -5996,17 +6073,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxxx100x100001
+                                                     100001x001xxxxxx111xxxxxxxxxxxxx
                                                      ld1rb.  */
-                                                  return 1434;
+                                                  return 1494;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxxx110x100001
+                                                     100001x011xxxxxx111xxxxxxxxxxxxx
                                                      ld1rh.  */
-                                                  return 1438;
+                                                  return 1498;
                                                 }
                                             }
                                         }
@@ -6021,17 +6098,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0000x10001x
+                                                     x10001x0000xxxxx111xxxxxxxxxxxxx
                                                      prfb.  */
-                                                  return 1642;
+                                                  return 1726;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0010x10001x
+                                                     x10001x0100xxxxx111xxxxxxxxxxxxx
                                                      prfh.  */
-                                                  return 1656;
+                                                  return 1740;
                                                 }
                                             }
                                           else
@@ -6040,17 +6117,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0100x10001x
+                                                     x10001x0010xxxxx111xxxxxxxxxxxxx
                                                      ldff1b.  */
-                                                  return 1519;
+                                                  return 1591;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0110x10001x
+                                                     x10001x0110xxxxx111xxxxxxxxxxxxx
                                                      ldff1h.  */
-                                                  return 1535;
+                                                  return 1611;
                                                 }
                                             }
                                         }
@@ -6062,17 +6139,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1000x10001x
+                                                     x10001x0001xxxxx111xxxxxxxxxxxxx
                                                      ldff1b.  */
-                                                  return 1521;
+                                                  return 1593;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1010x10001x
+                                                     x10001x0101xxxxx111xxxxxxxxxxxxx
                                                      ldff1h.  */
-                                                  return 1538;
+                                                  return 1614;
                                                 }
                                             }
                                           else
@@ -6081,17 +6158,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1100x10001x
+                                                     x10001x0011xxxxx111xxxxxxxxxxxxx
                                                      prfd.  */
-                                                  return 1646;
+                                                  return 1730;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1110x10001x
+                                                     x10001x0111xxxxx111xxxxxxxxxxxxx
                                                      ldff1h.  */
-                                                  return 1536;
+                                                  return 1612;
                                                 }
                                             }
                                         }
@@ -6099,34 +6176,18 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 }
                             }
                         }
-                      else
+                    }
+                  else
+                    {
+                      if (((word >> 21) & 0x1) == 0)
                         {
-                          if (((word >> 21) & 0x1) == 0)
+                          if (((word >> 15) & 0x1) == 0)
                             {
-                              if (((word >> 14) & 0x1) == 0)
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  if (((word >> 15) & 0x1) == 0)
-                                    {
-                                      if (((word >> 4) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx0xxxxxxxx100xxxxx0xx0x1001xx
-                                             cmpeq.  */
-                                          return 1233;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx1xxxxxxxx100xxxxx0xx0x1001xx
-                                             cmpne.  */
-                                          return 1256;
-                                        }
-                                    }
-                                  else
+                                  if (((word >> 13) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 14) & 0x1) == 0)
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
@@ -6134,124 +6195,124 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx0xxxxxxxx101xxxxx0xx0x100100
-                                                     cmpeq.  */
-                                                  return 1234;
+                                                     001001x0xx0xxxxx000xxxxxxxx0xxxx
+                                                     cmphs.  */
+                                                  return 1286;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx1xxxxxxxx101xxxxx0xx0x100100
-                                                     cmpne.  */
-                                                  return 1257;
+                                                     001001x0xx0xxxxx000xxxxxxxx1xxxx
+                                                     cmphi.  */
+                                                  return 1283;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 20) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx00000x100101
-                                                             ld1b.  */
-                                                          return 1405;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx00010x100101
-                                                             ld1sw.  */
-                                                          return 1475;
-                                                        }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x00x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1rqb.  */
+                                                  return 1500;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x01x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1rqh.  */
+                                                  return 1504;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          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 >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0000xxxxx010xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1458;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx00100x100101
-                                                             ld1b.  */
-                                                          return 1407;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx00110x100101
-                                                             ld1h.  */
-                                                          return 1428;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0100xxxxx010xxxxxxxxxxxxx
+                                                         ld1sw.  */
+                                                      return 1538;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx10000x100101
-                                                             ldnf1b.  */
-                                                          return 1573;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx10010x100101
-                                                             ldnf1sw.  */
-                                                          return 1586;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0010xxxxx010xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1460;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx10100x100101
-                                                             ldnf1b.  */
-                                                          return 1575;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx101xxxx10110x100101
-                                                             ldnf1h.  */
-                                                          return 1579;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0110xxxxx010xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1480;
                                                     }
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx0000x10011x
-                                                     st1b.  */
-                                                  return 1732;
+                                                     001001x0xx0xxxxx001xxxxxxxx0xxxx
+                                                     cmpeq.  */
+                                                  return 1274;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx0010x10011x
-                                                     st1h.  */
-                                                  return 1751;
+                                                     001001x0xx0xxxxx001xxxxxxxx1xxxx
+                                                     cmpne.  */
+                                                  return 1297;
                                                 }
                                             }
                                           else
@@ -6260,27 +6321,21 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx0100x10011x
-                                                     st1b.  */
-                                                  return 1739;
+                                                     101001x00x0xxxxx001xxxxxxxxxxxxx
+                                                     ld1rqb.  */
+                                                  return 1499;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx0110x10011x
-                                                     st1h.  */
-                                                  return 1760;
+                                                     101001x01x0xxxxx001xxxxxxxxxxxxx
+                                                     ld1rqh.  */
+                                                  return 1503;
                                                 }
                                             }
                                         }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 15) & 0x1) == 0)
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      else
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
@@ -6288,17 +6343,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx0xxxxxxxx110xxxxx0xx0x100100
+                                                     001001x0xx0xxxxx011xxxxxxxx0xxxx
                                                      cmplt.  */
-                                                  return 1254;
+                                                  return 1295;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx1xxxxxxxx110xxxxx0xx0x100100
+                                                     001001x0xx0xxxxx011xxxxxxxx1xxxx
                                                      cmple.  */
-                                                  return 1248;
+                                                  return 1289;
                                                 }
                                             }
                                           else
@@ -6309,17 +6364,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0000x100101
+                                                         101001x0000xxxxx011xxxxxxxxxxxxx
                                                          ldff1b.  */
-                                                      return 1514;
+                                                      return 1582;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0010x100101
+                                                         101001x0100xxxxx011xxxxxxxxxxxxx
                                                          ldff1sw.  */
-                                                      return 1557;
+                                                      return 1638;
                                                     }
                                                 }
                                               else
@@ -6328,21 +6383,65 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0100x100101
+                                                         101001x0010xxxxx011xxxxxxxxxxxxx
                                                          ldff1b.  */
-                                                      return 1516;
+                                                      return 1586;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0110x100101
+                                                         101001x0110xxxxx011xxxxxxxxxxxxx
                                                          ldff1h.  */
-                                                      return 1531;
+                                                      return 1605;
                                                     }
                                                 }
                                             }
                                         }
+                                    }
+                                }
+                              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;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0110xxxxx0x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1845;
+                                                }
+                                            }
+                                        }
                                       else
                                         {
                                           if (((word >> 22) & 0x1) == 0)
@@ -6351,17 +6450,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0000x10011x
+                                                     111001x0000xxxxx0x1xxxxxxxxxxxxx
                                                      stnt1b.  */
-                                                  return 1800;
+                                                  return 1890;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0010x10011x
+                                                     111001x0100xxxxx0x1xxxxxxxxxxxxx
                                                      stnt1h.  */
-                                                  return 1804;
+                                                  return 1894;
                                                 }
                                             }
                                           else
@@ -6370,24 +6469,49 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0100x10011x
+                                                     111001x0010xxxxx0x1xxxxxxxxxxxxx
                                                      st3b.  */
-                                                  return 1784;
+                                                  return 1874;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0110x10011x
+                                                     111001x0110xxxxx0x1xxxxxxxxxxxxx
                                                      st3h.  */
-                                                  return 1788;
+                                                  return 1878;
                                                 }
                                             }
                                         }
                                     }
-                                  else
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 13) & 0x1) == 0)
+                                {
+                                  if (((word >> 30) & 0x1) == 0)
                                     {
-                                      if (((word >> 30) & 0x1) == 0)
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x01001x0xx0xxxxx100xxxxxxxx0xxxx
+                                                 cmpge.  */
+                                              return 1278;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x01001x0xx0xxxxx100xxxxxxxx1xxxx
+                                                 cmpgt.  */
+                                              return 1281;
+                                            }
+                                        }
+                                      else
                                         {
                                           if (((word >> 31) & 0x1) == 0)
                                             {
@@ -6395,17 +6519,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx0xxxxxxxx111xxxxx0xx0x100100
-                                                     cmplo.  */
-                                                  return 1250;
+                                                     001001x0xx0xxxxx110xxxxxxxx0xxxx
+                                                     cmphs.  */
+                                                  return 1287;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx1xxxxxxxx111xxxxx0xx0x100100
-                                                     cmpls.  */
-                                                  return 1252;
+                                                     001001x0xx0xxxxx110xxxxxxxx1xxxx
+                                                     cmphi.  */
+                                                  return 1284;
                                                 }
                                             }
                                           else
@@ -6416,17 +6540,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0000x100101
+                                                         101001x0000xxxxx110xxxxxxxxxxxxx
                                                          ldnt1b.  */
-                                                      return 1590;
+                                                      return 1673;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0010x100101
+                                                         101001x0100xxxxx110xxxxxxxxxxxxx
                                                          ldnt1h.  */
-                                                      return 1594;
+                                                      return 1677;
                                                     }
                                                 }
                                               else
@@ -6435,166 +6559,251 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0100x100101
+                                                         101001x0010xxxxx110xxxxxxxxxxxxx
                                                          ld3b.  */
-                                                      return 1498;
+                                                      return 1565;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0110x100101
+                                                         101001x0110xxxxx110xxxxxxxxxxxxx
                                                          ld3h.  */
-                                                      return 1502;
+                                                      return 1569;
                                                     }
                                                 }
                                             }
                                         }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 31) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             011001x0xx0xxxxx1x0xxxxxxxxxxxxx
+                                             fcadd.  */
+                                          return 1342;
+                                        }
                                       else
                                         {
-                                          if (((word >> 20) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxx000x0x10011x
+                                                     111001x0000xxxxx1x0xxxxxxxxxxxxx
                                                      st1b.  */
-                                                  return 1737;
+                                                  return 1821;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx00100x10011x
-                                                         st1b.  */
-                                                      return 1740;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx00110x10011x
-                                                         st1h.  */
-                                                      return 1761;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0100xxxxx1x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1840;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx10000x10011x
-                                                         stnt1b.  */
-                                                      return 1801;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx10010x10011x
-                                                         stnt1h.  */
-                                                      return 1805;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0010xxxxx1x0xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1825;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx10100x10011x
-                                                         st3b.  */
-                                                      return 1785;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx10110x10011x
-                                                         st3h.  */
-                                                      return 1789;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x0110xxxxx1x0xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1846;
                                                 }
                                             }
                                         }
                                     }
                                 }
-                            }
-                          else
-                            {
-                              if (((word >> 30) & 0x1) == 0)
+                              else
                                 {
-                                  if (((word >> 31) & 0x1) == 0)
+                                  if (((word >> 14) & 0x1) == 0)
                                     {
-                                      if (((word >> 4) & 0x1) == 0)
+                                      if (((word >> 30) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx0xxxxxxxx1xxxxxxx1xx0x100100
-                                             cmplo.  */
-                                          return 1251;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxx1xxxxxxxx1xxxxxxx1xx0x100100
-                                             cmpls.  */
-                                          return 1253;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 20) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx101xxxxxxxx0xxxx
+                                                     cmpeq.  */
+                                                  return 1275;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx101xxxxxxxx1xxxx
+                                                     cmpne.  */
+                                                  return 1298;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 20) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx01000x100101
-                                                         ld1b.  */
-                                                      return 1406;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00000xxxx101xxxxxxxxxxxxx
+                                                             ld1b.  */
+                                                          return 1465;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01000xxxx101xxxxxxxxxxxxx
+                                                             ld1sw.  */
+                                                          return 1543;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx01010x100101
-                                                         ld1h.  */
-                                                      return 1427;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00100xxxx101xxxxxxxxxxxxx
+                                                             ld1b.  */
+                                                          return 1467;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01100xxxx101xxxxxxxxxxxxx
+                                                             ld1h.  */
+                                                          return 1488;
+                                                        }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx01100x100101
-                                                         ld1b.  */
-                                                      return 1408;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00001xxxx101xxxxxxxxxxxxx
+                                                             ldnf1b.  */
+                                                          return 1657;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01001xxxx101xxxxxxxxxxxxx
+                                                             ldnf1sw.  */
+                                                          return 1670;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx01110x100101
-                                                         ld1h.  */
-                                                      return 1429;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x00101xxxx101xxxxxxxxxxxxx
+                                                             ldnf1b.  */
+                                                          return 1659;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             101001x01101xxxx101xxxxxxxxxxxxx
+                                                             ldnf1h.  */
+                                                          return 1663;
+                                                        }
                                                     }
                                                 }
                                             }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0000xxxxx101xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1822;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0100xxxxx101xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1841;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0010xxxxx101xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1829;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0110xxxxx101xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1850;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx111xxxxxxxx0xxxx
+                                                     cmplo.  */
+                                                  return 1291;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x0xx0xxxxx111xxxxxxxx1xxxx
+                                                     cmpls.  */
+                                                  return 1293;
+                                                }
+                                            }
                                           else
                                             {
                                               if (((word >> 22) & 0x1) == 0)
@@ -6603,17 +6812,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx11000x100101
-                                                         ldnf1b.  */
-                                                      return 1574;
+                                                         101001x0000xxxxx111xxxxxxxxxxxxx
+                                                         ldnt1b.  */
+                                                      return 1674;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx11010x100101
-                                                         ldnf1h.  */
-                                                      return 1578;
+                                                         101001x0100xxxxx111xxxxxxxxxxxxx
+                                                         ldnt1h.  */
+                                                      return 1678;
                                                     }
                                                 }
                                               else
@@ -6622,43 +6831,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx11100x100101
-                                                         ldnf1b.  */
-                                                      return 1576;
+                                                         101001x0010xxxxx111xxxxxxxxxxxxx
+                                                         ld3b.  */
+                                                      return 1566;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx10xxxxx11110x100101
-                                                         ldnf1h.  */
-                                                      return 1580;
+                                                         101001x0110xxxxx111xxxxxxxxxxxxx
+                                                         ld3h.  */
+                                                      return 1570;
                                                     }
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 20) & 0x1) == 0)
                                             {
                                               if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx1000x100101
-                                                         ldff1b.  */
-                                                      return 1515;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx1010x100101
-                                                         ldff1h.  */
-                                                      return 1530;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0x000xxxx111xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1827;
                                                 }
                                               else
                                                 {
@@ -6666,17 +6864,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx1100x100101
-                                                         ldff1b.  */
-                                                      return 1517;
+                                                         x11001x00100xxxx111xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1830;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx1110x100101
-                                                         ldff1h.  */
-                                                      return 1532;
+                                                         x11001x01100xxxx111xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1851;
                                                     }
                                                 }
                                             }
@@ -6688,17 +6886,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1000x100101
-                                                         ld2b.  */
-                                                      return 1490;
+                                                         x11001x00001xxxx111xxxxxxxxxxxxx
+                                                         stnt1b.  */
+                                                      return 1891;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1010x100101
-                                                         ld2h.  */
-                                                      return 1494;
+                                                         x11001x01001xxxx111xxxxxxxxxxxxx
+                                                         stnt1h.  */
+                                                      return 1895;
                                                     }
                                                 }
                                               else
@@ -6707,53 +6905,48 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1100x100101
-                                                         ld4b.  */
-                                                      return 1506;
+                                                         x11001x00101xxxx111xxxxxxxxxxxxx
+                                                         st3b.  */
+                                                      return 1875;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1110x100101
-                                                         ld4h.  */
-                                                      return 1510;
+                                                         x11001x01101xxxx111xxxxxxxxxxxxx
+                                                         st3h.  */
+                                                      return 1879;
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
-                              else
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 13) & 0x1) == 0)
+                            {
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 31) & 0x1) == 0)
                                     {
-                                      if (((word >> 22) & 0x1) == 0)
+                                      if (((word >> 4) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx10xxxxxx10x0x10011x
-                                             st1h.  */
-                                          return 1754;
+                                             001001x0xx1xxxxxxx0xxxxxxxx0xxxx
+                                             cmphs.  */
+                                          return 1288;
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx10xxxxxx1100x10011x
-                                                 st1b.  */
-                                              return 1741;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx10xxxxxx1110x10011x
-                                                 st1h.  */
-                                              return 1762;
-                                            }
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx0xxxxxxxx1xxxx
+                                             cmphi.  */
+                                          return 1285;
                                         }
                                     }
                                   else
@@ -6766,17 +6959,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1000x10011x
-                                                     st2b.  */
-                                                  return 1776;
+                                                     101001x0001xxxxx0x0xxxxxxxxxxxxx
+                                                     ld1b.  */
+                                                  return 1459;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1010x10011x
-                                                     st2h.  */
-                                                  return 1780;
+                                                     101001x0101xxxxx0x0xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1479;
                                                 }
                                             }
                                           else
@@ -6785,82 +6978,99 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1100x10011x
-                                                     st4b.  */
-                                                  return 1792;
+                                                     101001x0011xxxxx0x0xxxxxxxxxxxxx
+                                                     ld1b.  */
+                                                  return 1461;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1110x10011x
-                                                     st4h.  */
-                                                  return 1796;
+                                                     101001x0111xxxxx0x0xxxxxxxxxxxxx
+                                                     ld1h.  */
+                                                  return 1481;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 20) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx01000x10011x
-                                                         st1b.  */
-                                                      return 1738;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx01010x10011x
-                                                         st1h.  */
-                                                      return 1759;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x0001xxxxx1x0xxxxxxxxxxxxx
+                                                     ld2b.  */
+                                                  return 1557;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx01100x10011x
-                                                         st1b.  */
-                                                      return 1742;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx01110x10011x
-                                                         st1h.  */
-                                                      return 1763;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x0101xxxxx1x0xxxxxxxxxxxxx
+                                                     ld2h.  */
+                                                  return 1561;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x0011xxxxx1x0xxxxxxxxxxxxx
+                                                     ld4b.  */
+                                                  return 1573;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x0111xxxxx1x0xxxxxxxxxxxxx
+                                                     ld4h.  */
+                                                  return 1577;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              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
-                                                         xxxxxxxxxxxxx111xxxx11000x10011x
-                                                         st2b.  */
-                                                      return 1777;
+                                                         x11001x00x1xxxxx0000x0xxxxxxxxxx
+                                                         fmla.  */
+                                                      return 1396;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx11010x10011x
-                                                         st2h.  */
-                                                      return 1781;
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0101xxxxx0000x0xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 1397;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0111xxxxx0000x0xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 1398;
+                                                        }
                                                     }
                                                 }
                                               else
@@ -6869,633 +7079,373 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx11100x10011x
-                                                         st4b.  */
-                                                      return 1793;
+                                                         x11001x00x1xxxxx0000x1xxxxxxxxxx
+                                                         fmls.  */
+                                                      return 1400;
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx11110x10011x
-                                                         st4h.  */
-                                                      return 1797;
+                                                      if (((word >> 22) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0101xxxxx0000x1xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 1401;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x11001x0111xxxxx0000x1xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 1402;
+                                                        }
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-              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)
-                                    {
-                                      if (((word >> 22) & 0x1) == 0)
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxxxxxxx00001x100000
-                                                 orr.  */
-                                              return 1628;
-                                            }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxxxxxxx00011x100000
-                                                 and.  */
-                                              return 1199;
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0x01xxxxx0001xxxxxxxxxxxx
+                                                     fcmla.  */
+                                                  return 1344;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0x11xxxxx0001xxxxxxxxxxxx
+                                                     fcmla.  */
+                                                  return 1345;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxxxxxxx00101x100000
-                                                 eor.  */
-                                              return 1286;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0001xxxxx010xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1823;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0101xxxxx010xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1842;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxxxxxxxx00111x100000
-                                                 dupm.  */
-                                              return 1284;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0011xxxxx010xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1826;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0111xxxxx010xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1847;
+                                                }
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 15) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx0xxxx10xx1x100000
-                                             cpy.  */
-                                          return 1269;
+                                             x11001x0x01xxxxx1x0xxxxxxxxxxxxx
+                                             st1h.  */
+                                          return 1843;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxx1xxxx10xx1x100000
-                                             fcpy.  */
-                                          return 1312;
+                                             x11001x0x11xxxxx1x0xxxxxxxxxxxxx
+                                             st1h.  */
+                                          return 1848;
                                         }
                                     }
                                 }
-                              else
+                            }
+                          else
+                            {
+                              if (((word >> 30) & 0x1) == 0)
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 31) & 0x1) == 0)
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 4) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxx1xx1x100000
-                                                 ext.  */
-                                              return 1291;
-                                            }
-                                          else
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx1xxxxxxxx0xxxx
+                                             cmplo.  */
+                                          return 1292;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             001001x0xx1xxxxxxx1xxxxxxxx1xxxx
+                                             cmpls.  */
+                                          return 1294;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 20) & 0x1) == 0)
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010000x1xx1x100000
-                                                                 cpy.  */
-                                                              return 1267;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010001x1xx1x100000
-                                                                 clasta.  */
-                                                              return 1225;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010010x1xx1x100000
-                                                                 revb.  */
-                                                              return 1676;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010011x1xx1x100000
-                                                                 splice.  */
-                                                              return 1697;
-                                                            }
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x00010xxxxx01xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1466;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010100x1xx1x100000
-                                                                 lasta.  */
-                                                              return 1394;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0010101x1xx1x100000
-                                                                 clasta.  */
-                                                              return 1226;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx001011xx1xx1x100000
-                                                             revw.  */
-                                                          return 1678;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x01010xxxxx01xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1487;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 17) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0011000x1xx1x100000
-                                                                 compact.  */
-                                                              return 1266;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0011001x1xx1x100000
-                                                                 clastb.  */
-                                                              return 1228;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx001101xx1xx1x100000
-                                                             revh.  */
-                                                          return 1677;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x00110xxxxx01xxxxxxxxxxxxx
+                                                         ld1b.  */
+                                                      return 1468;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 18) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 19) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0011100x1xx1x100000
-                                                                 lastb.  */
-                                                              return 1396;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx0011101x1xx1x100000
-                                                                 clastb.  */
-                                                              return 1229;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx001111xx1xx1x100000
-                                                             rbit.  */
-                                                          return 1669;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x01110xxxxx01xxxxxxxxxxxxx
+                                                         ld1h.  */
+                                                      return 1489;
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 11) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxx00100xxxxx1xx1x100000
-                                                         dup.  */
-                                                      return 1282;
+                                                         101001x00011xxxxx01xxxxxxxxxxxxx
+                                                         ldnf1b.  */
+                                                      return 1658;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxx01100xxxxx1xx1x100000
-                                                         tbl.  */
-                                                      return 1820;
+                                                         101001x01011xxxxx01xxxxxxxxxxxxx
+                                                         ldnf1h.  */
+                                                      return 1662;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxx1x100000001xx1x100000
-                                                                         dup.  */
-                                                                      return 1281;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxx1x100000011xx1x100000
-                                                                         sunpklo.  */
-                                                                      return 1816;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxxx1x1000001x1xx1x100000
-                                                                     rev.  */
-                                                                  return 1675;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 20) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxxx1x100001x01xx1x100000
-                                                                     insr.  */
-                                                                  return 1391;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxxx1x100001x11xx1x100000
-                                                                     insr.  */
-                                                                  return 1392;
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxx1x10001xxx1xx1x100000
-                                                             uunpklo.  */
-                                                          return 1873;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x00111xxxxx01xxxxxxxxxxxxx
+                                                         ldnf1b.  */
+                                                      return 1660;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxx1x10010xxx1xx1x100000
-                                                             sunpkhi.  */
-                                                          return 1815;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxx1x10011xxx1xx1x100000
-                                                             uunpkhi.  */
-                                                          return 1872;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x01111xxxxx01xxxxxxxxxxxxx
+                                                         ldnf1h.  */
+                                                      return 1664;
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1010xx001xx1x100000
-                                                             lasta.  */
-                                                          return 1393;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1010xx011xx1x100000
-                                                             clasta.  */
-                                                          return 1227;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0001xxxxx011xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1584;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx1010xx1x1xx1x100000
-                                                         cpy.  */
-                                                      return 1268;
+                                                         101001x0101xxxxx011xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1603;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 20) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx1011xxx01xx1x100000
-                                                         lastb.  */
-                                                      return 1395;
+                                                         101001x0011xxxxx011xxxxxxxxxxxxx
+                                                         ldff1b.  */
+                                                      return 1588;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx1011xxx11xx1x100000
-                                                         clastb.  */
-                                                      return 1230;
+                                                         101001x0111xxxxx011xxxxxxxxxxxxx
+                                                         ldff1h.  */
+                                                      return 1607;
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          if (((word >> 10) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 11) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 13) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 20) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010xxxx01xx1x100000
-                                                                 zip1.  */
-                                                              return 1890;
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 16) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0000100x0x11xx1x100000
-                                                                         punpklo.  */
-                                                                      return 1668;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0000100x1x11xx1x100000
-                                                                         rev.  */
-                                                                      return 1674;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0000101xxx11xx1x100000
-                                                                     punpkhi.  */
-                                                                  return 1667;
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000110xxxxx1xx1x100000
-                                                             zip1.  */
-                                                          return 1891;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0001xxxxx111xxxxxxxxxxxxx
+                                                         ld2b.  */
+                                                      return 1558;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 13) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx001010xxxxx1xx1x100000
-                                                             trn1.  */
-                                                          return 1821;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx001110xxxxx1xx1x100000
-                                                             trn1.  */
-                                                          return 1822;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         101001x0101xxxxx111xxxxxxxxxxxxx
+                                                         ld2h.  */
+                                                      return 1562;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 13) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01x010xxxxx1xx1x100000
-                                                         uzp1.  */
-                                                      return 1877;
+                                                         101001x0011xxxxx111xxxxxxxxxxxxx
+                                                         ld4b.  */
+                                                      return 1574;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx01x110xxxxx1xx1x100000
-                                                         uzp1.  */
-                                                      return 1878;
+                                                         101001x0111xxxxx111xxxxxxxxxxxxx
+                                                         ld4h.  */
+                                                      return 1578;
                                                     }
                                                 }
                                             }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x11001x00x1xxxxx001xxxxxxxxxxxxx
+                                                 fmul.  */
+                                              return 1407;
+                                            }
                                           else
                                             {
-                                              if (((word >> 11) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 12) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 13) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100010xxxxx1xx1x100000
-                                                             zip2.  */
-                                                          return 1892;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100110xxxxx1xx1x100000
-                                                             zip2.  */
-                                                          return 1893;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 13) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101010xxxxx1xx1x100000
-                                                             trn2.  */
-                                                          return 1823;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101110xxxxx1xx1x100000
-                                                             trn2.  */
-                                                          return 1824;
-                                                        }
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0101xxxxx001xxxxxxxxxxxxx
+                                                     fmul.  */
+                                                  return 1408;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 13) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx11x010xxxxx1xx1x100000
-                                                         uzp2.  */
-                                                      return 1879;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx11x110xxxxx1xx1x100000
-                                                         uzp2.  */
-                                                      return 1880;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0111xxxxx001xxxxxxxxxxxxx
+                                                     fmul.  */
+                                                  return 1409;
                                                 }
                                             }
                                         }
                                       else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxxxxxx11xxxxx1xx1x100000
-                                             sel.  */
-                                          return 1687;
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 13) & 0x1) == 0)
-                                {
-                                  if (((word >> 14) & 0x1) == 0)
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
                                         {
                                           if (((word >> 22) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxxx0x1x100001
-                                                 ldr.  */
-                                              return 1597;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxxx1x1x100001
-                                                 prfb.  */
-                                              return 1641;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx001xxxxxxx01x100001
-                                                 ld1rsh.  */
-                                              return 1442;
+                                                 x11001x0x01xxxxx101xxxxxxxxxxxxx
+                                                 st1h.  */
+                                              return 1844;
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx001xxxxxxx11x100001
-                                                 ld1rsb.  */
-                                              return 1439;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0011xxxxx101xxxxxxxxxxxxx
+                                                     st1b.  */
+                                                  return 1831;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x11001x0111xxxxx101xxxxxxxxxxxxx
+                                                     st1h.  */
+                                                  return 1852;
+                                                }
                                             }
                                         }
                                     }
@@ -7503,193 +7453,936 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 15) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx0x01x100001
-                                                     ld1w.  */
-                                                  return 1477;
+                                                     x11001x0001xxxxx011xxxxxxxxxxxxx
+                                                     st2b.  */
+                                                  return 1866;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1x01x100001
-                                                     ld1w.  */
-                                                  return 1478;
+                                                     x11001x0101xxxxx011xxxxxxxxxxxxx
+                                                     st2h.  */
+                                                  return 1870;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxxx011x100001
-                                                     ldr.  */
-                                                  return 1598;
+                                                     x11001x0011xxxxx011xxxxxxxxxxxxx
+                                                     st4b.  */
+                                                  return 1882;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxxx111x100001
-                                                     prfw.  */
-                                                  return 1662;
+                                                     x11001x0111xxxxx011xxxxxxxxxxxxx
+                                                     st4h.  */
+                                                  return 1886;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 20) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0001x100001
-                                                         prfw.  */
-                                                      return 1658;
+                                                         x11001x00010xxxx111xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1828;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0011x100001
-                                                         prfd.  */
-                                                      return 1644;
+                                                         x11001x01010xxxx111xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1849;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx10x1x100001
-                                                     ld1w.  */
-                                                  return 1485;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00110xxxx111xxxxxxxxxxxxx
+                                                         st1b.  */
+                                                      return 1832;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x01110xxxx111xxxxxxxxxxxxx
+                                                         st1h.  */
+                                                      return 1853;
+                                                    }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 23) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxxx101x100001
-                                                     ld1rw.  */
-                                                  return 1445;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00011xxxx111xxxxxxxxxxxxx
+                                                         st2b.  */
+                                                      return 1867;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x01011xxxx111xxxxxxxxxxxxx
+                                                         st2h.  */
+                                                      return 1871;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxxx111x100001
-                                                     ld1rsb.  */
-                                                  return 1441;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x00111xxxx111xxxxxxxxxxxxx
+                                                         st4b.  */
+                                                      return 1883;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         x11001x01111xxxx111xxxxxxxxxxxxx
+                                                         st4h.  */
+                                                      return 1887;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
                                 }
-                              else
+                            }
+                        }
+                    }
+                }
+              else
+                {
+                  if (((word >> 29) & 0x1) == 0)
+                    {
+                      if (((word >> 30) & 0x1) == 0)
+                        {
+                          if (((word >> 31) & 0x1) == 0)
+                            {
+                              if (((word >> 21) & 0x1) == 0)
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 20) & 0x1) == 0)
                                     {
-                                      if (((word >> 15) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxxxxx100xxxxxxxx1x100001
-                                             prfh.  */
-                                          return 1655;
-                                        }
-                                      else
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
                                           if (((word >> 23) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx101xxxxxxx01x100001
-                                                 ld1rsh.  */
-                                              return 1443;
+                                                 000001x10000xxxxxxxxxxxxxxxxxxxx
+                                                 orr.  */
+                                              return 1712;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx101xxxxxxx11x100001
-                                                 ld1rsb.  */
-                                              return 1440;
+                                                 000001x11000xxxxxxxxxxxxxxxxxxxx
+                                                 and.  */
+                                              return 1240;
                                             }
                                         }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 15) & 0x1) == 0)
+                                      else
                                         {
                                           if (((word >> 23) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0x01x100001
-                                                     ldff1w.  */
-                                                  return 1563;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1x01x100001
-                                                     ldff1w.  */
-                                                  return 1564;
-                                                }
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x10100xxxxxxxxxxxxxxxxxxxx
+                                                 eor.  */
+                                              return 1327;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxxxx11x100001
-                                                 prfd.  */
-                                              return 1648;
+                                                 000001x11100xxxxxxxxxxxxxxxxxxxx
+                                                 dupm.  */
+                                              return 1325;
                                             }
                                         }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             000001x1xx01xxxx0xxxxxxxxxxxxxxx
+                                             cpy.  */
+                                          return 1310;
+                                        }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             000001x1xx01xxxx1xxxxxxxxxxxxxxx
+                                             fcpy.  */
+                                          return 1357;
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
                                             {
-                                              if (((word >> 21) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 000001x1xx1xxxxx000xxxxxxxxxxxxx
+                                                 ext.  */
+                                              return 1332;
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0001x100001
-                                                         prfw.  */
-                                                      return 1661;
-                                                    }
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0000100xxxxxxxxxxxxx
+                                                                 cpy.  */
+                                                              return 1308;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1000100xxxxxxxxxxxxx
+                                                                 clasta.  */
+                                                              return 1266;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0100100xxxxxxxxxxxxx
+                                                                 revb.  */
+                                                              return 1760;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1100100xxxxxxxxxxxxx
+                                                                 splice.  */
+                                                              return 1787;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0010100xxxxxxxxxxxxx
+                                                                 lasta.  */
+                                                              return 1454;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1010100xxxxxxxxxxxxx
+                                                                 clasta.  */
+                                                              return 1267;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xx110100xxxxxxxxxxxxx
+                                                             revw.  */
+                                                          return 1762;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0001100xxxxxxxxxxxxx
+                                                                 compact.  */
+                                                              return 1307;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1001100xxxxxxxxxxxxx
+                                                                 clastb.  */
+                                                              return 1269;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xx101100xxxxxxxxxxxxx
+                                                             revh.  */
+                                                          return 1761;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x0011100xxxxxxxxxxxxx
+                                                                 lastb.  */
+                                                              return 1456;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx1x1011100xxxxxxxxxxxxx
+                                                                 clastb.  */
+                                                              return 1270;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xx111100xxxxxxxxxxxxx
+                                                             rbit.  */
+                                                          return 1753;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 15) & 0x1) == 0)
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1xxxxx00100xxxxxxxxxxx
+                                                         dup.  */
+                                                      return 1323;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         000001x1xx1xxxxx00110xxxxxxxxxxx
+                                                         tbl.  */
+                                                      return 1910;
+                                                    }
+                                                }
+                                              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
+                                                                         000001x1xx100000001x1xxxxxxxxxxx
+                                                                         dup.  */
+                                                                      return 1322;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         000001x1xx110000001x1xxxxxxxxxxx
+                                                                         sunpklo.  */
+                                                                      return 1906;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     000001x1xx1x1000001x1xxxxxxxxxxx
+                                                                     rev.  */
+                                                                  return 1759;
+                                                                }
+                                                            }
+                                                          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;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxx11001x1xxxxxxxxxxx
+                                                             uunpkhi.  */
+                                                          return 1968;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx100xx0101xxxxxxxxxxxxx
+                                                             lasta.  */
+                                                          return 1453;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx110xx0101xxxxxxxxxxxxx
+                                                             clasta.  */
+                                                          return 1268;
+                                                        }
+                                                    }
+                                                  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;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 10) & 0x1) == 0)
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 12) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 000001x1xx10xxxx010000xxxxxxxxxx
+                                                                 zip1.  */
+                                                              return 1986;
+                                                            }
+                                                          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;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx011000xxxxxxxxxx
+                                                             zip1.  */
+                                                          return 1987;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx010100xxxxxxxxxx
+                                                             trn1.  */
+                                                          return 1911;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx011100xxxxxxxxxx
+                                                             trn1.  */
+                                                          return 1912;
+                                                        }
+                                                    }
+                                                }
+                                              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)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx010001xxxxxxxxxx
+                                                             zip2.  */
+                                                          return 1988;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx011001xxxxxxxxxx
+                                                             zip2.  */
+                                                          return 1989;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 13) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             000001x1xx1xxxxx010101xxxxxxxxxx
+                                                             trn2.  */
+                                                          return 1913;
+                                                        }
+                                                      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;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x110xxxxxx010xxxxxxxxxxxxx
+                                                     ldr.  */
+                                                  return 1682;
+                                                }
+                                              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;
+                                                    }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0011x100001
+                                                         100001x1100xxxxx110xxxxxxxxxxxxx
                                                          prfd.  */
-                                                      return 1647;
+                                                      return 1728;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x1x01xxxxx110xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1553;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x101xxxxxx110xxxxxxxxxxxxx
+                                                     ld1rw.  */
+                                                  return 1513;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x111xxxxxx110xxxxxxxxxxxxx
+                                                     ld1rsb.  */
+                                                  return 1509;
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 14) & 0x1) == 0)
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             100001x1xxxxxxxx001xxxxxxxxxxxxx
+                                             prfh.  */
+                                          return 1739;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x10xxxxxxx101xxxxxxxxxxxxx
+                                                 ld1rsh.  */
+                                              return 1511;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x11xxxxxxx101xxxxxxxxxxxxx
+                                                 ld1rsb.  */
+                                              return 1508;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x10x0xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1645;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     100001x10x1xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1646;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 100001x11xxxxxxx011xxxxxxxxxxxxx
+                                                 prfd.  */
+                                              return 1732;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x1000xxxxx111xxxxxxxxxxxxx
+                                                         prfw.  */
+                                                      return 1745;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         100001x1100xxxxx111xxxxxxxxxxxxx
+                                                         prfd.  */
+                                                      return 1731;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx10x1x100001
+                                                     100001x1x01xxxxx111xxxxxxxxxxxxx
                                                      ldff1w.  */
-                                                  return 1571;
+                                                  return 1655;
                                                 }
                                             }
                                           else
@@ -7698,17 +8391,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxxx101x100001
+                                                     100001x101xxxxxx111xxxxxxxxxxxxx
                                                      ld1rw.  */
-                                                  return 1446;
+                                                  return 1514;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxxx111x100001
+                                                     100001x111xxxxxx111xxxxxxxxxxxxx
                                                      ld1rd.  */
-                                                  return 1435;
+                                                  return 1495;
                                                 }
                                             }
                                         }
@@ -7728,17 +8421,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx000xxxxx0xx1x10001x
+                                             x10001x1xx0xxxxx000xxxxxxxxxxxxx
                                              ld1sw.  */
-                                          return 1471;
+                                          return 1539;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx000xxxxx1xx1x10001x
+                                             x10001x1xx1xxxxx000xxxxxxxxxxxxx
                                              ld1sw.  */
-                                          return 1472;
+                                          return 1540;
                                         }
                                     }
                                   else
@@ -7747,9 +8440,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx001xxxxx0xx1x10001x
+                                             x10001x1xx0xxxxx100xxxxxxxxxxxxx
                                              ld1sw.  */
-                                          return 1473;
+                                          return 1541;
                                         }
                                       else
                                         {
@@ -7757,17 +8450,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx001xxxxx10x1x10001x
+                                                 x10001x1x01xxxxx100xxxxxxxxxxxxx
                                                  ld1sw.  */
-                                              return 1476;
+                                              return 1544;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx001xxxxx11x1x10001x
+                                                 x10001x1x11xxxxx100xxxxxxxxxxxxx
                                                  ld1sw.  */
-                                              return 1474;
+                                              return 1542;
                                             }
                                         }
                                     }
@@ -7782,17 +8475,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx0x01x10001x
+                                                 x10001x10x0xxxxx010xxxxxxxxxxxxx
                                                  ld1w.  */
-                                              return 1481;
+                                              return 1549;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx0x11x10001x
+                                                 x10001x11x0xxxxx010xxxxxxxxxxxxx
                                                  ld1d.  */
-                                              return 1411;
+                                              return 1471;
                                             }
                                         }
                                       else
@@ -7801,17 +8494,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx1x01x10001x
+                                                 x10001x10x1xxxxx010xxxxxxxxxxxxx
                                                  ld1w.  */
-                                              return 1482;
+                                              return 1550;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx1x11x10001x
+                                                 x10001x11x1xxxxx010xxxxxxxxxxxxx
                                                  ld1d.  */
-                                              return 1412;
+                                              return 1472;
                                             }
                                         }
                                     }
@@ -7823,17 +8516,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx011xxxxx0x01x10001x
+                                                 x10001x10x0xxxxx110xxxxxxxxxxxxx
                                                  ld1w.  */
-                                              return 1483;
+                                              return 1551;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx011xxxxx0x11x10001x
+                                                 x10001x11x0xxxxx110xxxxxxxxxxxxx
                                                  ld1d.  */
-                                              return 1413;
+                                              return 1473;
                                             }
                                         }
                                       else
@@ -7844,17 +8537,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1001x10001x
+                                                     x10001x1001xxxxx110xxxxxxxxxxxxx
                                                      ld1w.  */
-                                                  return 1488;
+                                                  return 1556;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1011x10001x
+                                                     x10001x1101xxxxx110xxxxxxxxxxxxx
                                                      ld1d.  */
-                                                  return 1416;
+                                                  return 1476;
                                                 }
                                             }
                                           else
@@ -7863,17 +8556,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1101x10001x
+                                                     x10001x1011xxxxx110xxxxxxxxxxxxx
                                                      ld1w.  */
-                                                  return 1484;
+                                                  return 1552;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1111x10001x
+                                                     x10001x1111xxxxx110xxxxxxxxxxxxx
                                                      ld1d.  */
-                                                  return 1414;
+                                                  return 1474;
                                                 }
                                             }
                                         }
@@ -7890,17 +8583,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx100xxxxx0xx1x10001x
+                                             x10001x1xx0xxxxx001xxxxxxxxxxxxx
                                              ldff1sw.  */
-                                          return 1558;
+                                          return 1640;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx100xxxxx1xx1x10001x
+                                             x10001x1xx1xxxxx001xxxxxxxxxxxxx
                                              ldff1sw.  */
-                                          return 1559;
+                                          return 1641;
                                         }
                                     }
                                   else
@@ -7909,9 +8602,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx101xxxxx0xx1x10001x
+                                             x10001x1xx0xxxxx101xxxxxxxxxxxxx
                                              ldff1sw.  */
-                                          return 1560;
+                                          return 1642;
                                         }
                                       else
                                         {
@@ -7919,17 +8612,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx101xxxxx10x1x10001x
+                                                 x10001x1x01xxxxx101xxxxxxxxxxxxx
                                                  ldff1sw.  */
-                                              return 1562;
+                                              return 1644;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx101xxxxx11x1x10001x
+                                                 x10001x1x11xxxxx101xxxxxxxxxxxxx
                                                  ldff1sw.  */
-                                              return 1561;
+                                              return 1643;
                                             }
                                         }
                                     }
@@ -7944,17 +8637,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx0x01x10001x
+                                                 x10001x10x0xxxxx011xxxxxxxxxxxxx
                                                  ldff1w.  */
-                                              return 1567;
+                                              return 1651;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx0x11x10001x
+                                                 x10001x11x0xxxxx011xxxxxxxxxxxxx
                                                  ldff1d.  */
-                                              return 1523;
+                                              return 1596;
                                             }
                                         }
                                       else
@@ -7963,17 +8656,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx1x01x10001x
+                                                 x10001x10x1xxxxx011xxxxxxxxxxxxx
                                                  ldff1w.  */
-                                              return 1568;
+                                              return 1652;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx110xxxxx1x11x10001x
+                                                 x10001x11x1xxxxx011xxxxxxxxxxxxx
                                                  ldff1d.  */
-                                              return 1524;
+                                              return 1597;
                                             }
                                         }
                                     }
@@ -7987,17 +8680,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0001x10001x
+                                                     x10001x1000xxxxx111xxxxxxxxxxxxx
                                                      prfw.  */
-                                                  return 1663;
+                                                  return 1747;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0011x10001x
+                                                     x10001x1100xxxxx111xxxxxxxxxxxxx
                                                      prfd.  */
-                                                  return 1649;
+                                                  return 1733;
                                                 }
                                             }
                                           else
@@ -8006,17 +8699,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0101x10001x
+                                                     x10001x1010xxxxx111xxxxxxxxxxxxx
                                                      ldff1w.  */
-                                                  return 1569;
+                                                  return 1653;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0111x10001x
+                                                     x10001x1110xxxxx111xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1525;
+                                                  return 1598;
                                                 }
                                             }
                                         }
@@ -8028,17 +8721,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1001x10001x
+                                                     x10001x1001xxxxx111xxxxxxxxxxxxx
                                                      ldff1w.  */
-                                                  return 1572;
+                                                  return 1656;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1011x10001x
+                                                     x10001x1101xxxxx111xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1527;
+                                                  return 1600;
                                                 }
                                             }
                                           else
@@ -8047,17 +8740,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1101x10001x
+                                                     x10001x1011xxxxx111xxxxxxxxxxxxx
                                                      ldff1w.  */
-                                                  return 1570;
+                                                  return 1654;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1111x10001x
+                                                     x10001x1111xxxxx111xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1526;
+                                                  return 1599;
                                                 }
                                             }
                                         }
@@ -8076,17 +8769,50 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   if (((word >> 30) & 0x1) == 0)
                                     {
-                                      if (((word >> 4) & 0x1) == 0)
+                                      if (((word >> 21) & 0x1) == 0)
                                         {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxx0xxxxxxxx000xxxxx0xx1x10010x
-                                                 cmpge.  */
-                                              return 1238;
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x1xx0xxxxx000xxxxxxxx0xxxx
+                                                     cmpge.  */
+                                                  return 1279;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x1xx0xxxxx000xxxxxxxx1xxxx
+                                                     cmpgt.  */
+                                                  return 1282;
+                                                }
                                             }
                                           else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x10x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1rqw.  */
+                                                  return 1506;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x11x0xxxxx000xxxxxxxxxxxxx
+                                                     ld1rqd.  */
+                                                  return 1502;
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
                                             {
                                               if (((word >> 11) & 0x1) == 0)
                                                 {
@@ -8094,17 +8820,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxx00000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00000xxxxxx0xxxx
                                                          whilelt.  */
-                                                      return 1887;
+                                                      return 1983;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxx01000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00010xxxxxx0xxxx
                                                          whilelt.  */
-                                                      return 1888;
+                                                      return 1984;
                                                     }
                                                 }
                                               else
@@ -8113,31 +8839,20 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxx10000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00001xxxxxx0xxxx
                                                          whilelo.  */
-                                                      return 1883;
+                                                      return 1979;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxx11000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00011xxxxxx0xxxx
                                                          whilelo.  */
-                                                      return 1884;
+                                                      return 1980;
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 21) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxx1xxxxxxxx000xxxxx0xx1x10010x
-                                                 cmpgt.  */
-                                              return 1241;
-                                            }
                                           else
                                             {
                                               if (((word >> 11) & 0x1) == 0)
@@ -8146,17 +8861,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx1xxxxxx00000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00000xxxxxx1xxxx
                                                          whilele.  */
-                                                      return 1881;
+                                                      return 1977;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx1xxxxxx01000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00010xxxxxx1xxxx
                                                          whilele.  */
-                                                      return 1882;
+                                                      return 1978;
                                                     }
                                                 }
                                               else
@@ -8165,17 +8880,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx1xxxxxx10000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00001xxxxxx1xxxx
                                                          whilels.  */
-                                                      return 1885;
+                                                      return 1981;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx1xxxxxx11000xxxxx1xx1x10010x
+                                                         x01001x1xx1xxxxx00011xxxxxx1xxxx
                                                          whilels.  */
-                                                      return 1886;
+                                                      return 1982;
                                                     }
                                                 }
                                             }
@@ -8193,9 +8908,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx00x000xxxxx0xx1x100110
+                                                         011001x1xx0xxxxx000x00xxxxxxxxxx
                                                          fadd.  */
-                                                      return 1296;
+                                                      return 1337;
                                                     }
                                                   else
                                                     {
@@ -8203,17 +8918,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx010000xxxxx0xx1x100110
+                                                             011001x1xx0xxxxx000010xxxxxxxxxx
                                                              fmul.  */
-                                                          return 1347;
+                                                          return 1404;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011000xxxxx0xx1x100110
+                                                             011001x1xx0xxxxx000110xxxxxxxxxx
                                                              frecps.  */
-                                                          return 1357;
+                                                          return 1417;
                                                         }
                                                     }
                                                 }
@@ -8223,9 +8938,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx10x000xxxxx0xx1x100110
+                                                         011001x1xx0xxxxx000x01xxxxxxxxxx
                                                          fsub.  */
-                                                      return 1370;
+                                                      return 1430;
                                                     }
                                                   else
                                                     {
@@ -8233,17 +8948,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx110000xxxxx0xx1x100110
+                                                             011001x1xx0xxxxx000011xxxxxxxxxx
                                                              ftsmul.  */
-                                                          return 1376;
+                                                          return 1436;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx111000xxxxx0xx1x100110
+                                                             011001x1xx0xxxxx000111xxxxxxxxxx
                                                              frsqrts.  */
-                                                          return 1367;
+                                                          return 1427;
                                                         }
                                                     }
                                                 }
@@ -8252,18 +8967,18 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx000xxxxx1xx1x100110
+                                                 011001x1xx1xxxxx000xxxxxxxxxxxxx
                                                  fmla.  */
-                                              return 1344;
+                                              return 1395;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx000xxxxxxxx1x100111
+                                             111001x1xxxxxxxx000xxxxxxxxxxxxx
                                              str.  */
-                                          return 1808;
+                                          return 1898;
                                         }
                                     }
                                 }
@@ -8273,21 +8988,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 30) & 0x1) == 0)
                                         {
-                                          if (((word >> 4) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxx0xxxxxxxx100xxxxx0xx1x10010x
-                                                 cmplt.  */
-                                              return 1255;
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x1xx0xxxxx001xxxxxxxx0xxxx
+                                                     cmplt.  */
+                                                  return 1296;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     001001x1xx0xxxxx001xxxxxxxx1xxxx
+                                                     cmple.  */
+                                                  return 1290;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxx1xxxxxxxx100xxxxx0xx1x10010x
-                                                 cmple.  */
-                                              return 1249;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x10x0xxxxx001xxxxxxxxxxxxx
+                                                     ld1rqw.  */
+                                                  return 1505;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     101001x11x0xxxxx001xxxxxxxxxxxxx
+                                                     ld1rqd.  */
+                                                  return 1501;
+                                                }
                                             }
                                         }
                                       else
@@ -8304,9 +9041,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxx100000000xx1x10011x
+                                                                 x11001x1xx000000001xxxxxxxxxxxxx
                                                                  faddv.  */
-                                                              return 1300;
+                                                              return 1341;
                                                             }
                                                           else
                                                             {
@@ -8314,17 +9051,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxx0xxxxxxxx100000010xx1x10011x
+                                                                     x11001x1xx010000001xxxxxxxx0xxxx
                                                                      fcmge.  */
-                                                                  return 1303;
+                                                                  return 1348;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxx1xxxxxxxx100000010xx1x10011x
+                                                                     x11001x1xx010000001xxxxxxxx1xxxx
                                                                      fcmgt.  */
-                                                                  return 1305;
+                                                                  return 1350;
                                                                 }
                                                             }
                                                         }
@@ -8332,18 +9069,18 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1000001x0xx1x10011x
+                                                             x11001x1xx0x1000001xxxxxxxxxxxxx
                                                              fadda.  */
-                                                          return 1299;
+                                                          return 1340;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100001xx0xx1x10011x
+                                                         x11001x1xx0xx100001xxxxxxxxxxxxx
                                                          fmaxnmv.  */
-                                                      return 1336;
+                                                      return 1387;
                                                     }
                                                 }
                                               else
@@ -8352,9 +9089,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100010xx0xx1x10011x
+                                                         x11001x1xx0xx010001xxxxxxxxxxxxx
                                                          fcmeq.  */
-                                                      return 1301;
+                                                      return 1346;
                                                     }
                                                   else
                                                     {
@@ -8362,17 +9099,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1000110x0xx1x10011x
+                                                             x11001x1xx0x0110001xxxxxxxxxxxxx
                                                              fmaxv.  */
-                                                          return 1337;
+                                                          return 1388;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1000111x0xx1x10011x
+                                                             x11001x1xx0x1110001xxxxxxxxxxxxx
                                                              frecpe.  */
-                                                          return 1356;
+                                                          return 1416;
                                                         }
                                                     }
                                                 }
@@ -8387,26 +9124,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx0xxxxxxxx100100xx0xx1x10011x
+                                                             x11001x1xx0xx001001xxxxxxxx0xxxx
                                                              fcmlt.  */
-                                                          return 1308;
+                                                          return 1353;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx1xxxxxxxx100100xx0xx1x10011x
+                                                             x11001x1xx0xx001001xxxxxxxx1xxxx
                                                              fcmle.  */
-                                                          return 1307;
+                                                          return 1352;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100101xx0xx1x10011x
+                                                         x11001x1xx0xx101001xxxxxxxxxxxxx
                                                          fminnmv.  */
-                                                      return 1342;
+                                                      return 1393;
                                                     }
                                                 }
                                               else
@@ -8415,9 +9152,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx100110xx0xx1x10011x
+                                                         x11001x1xx0xx011001xxxxxxxxxxxxx
                                                          fcmne.  */
-                                                      return 1309;
+                                                      return 1354;
                                                     }
                                                   else
                                                     {
@@ -8425,17 +9162,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1001110x0xx1x10011x
+                                                             x11001x1xx0x0111001xxxxxxxxxxxxx
                                                              fminv.  */
-                                                          return 1343;
+                                                          return 1394;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx1001111x0xx1x10011x
+                                                             x11001x1xx0x1111001xxxxxxxxxxxxx
                                                              frsqrte.  */
-                                                          return 1366;
+                                                          return 1426;
                                                         }
                                                     }
                                                 }
@@ -8450,39 +9187,39 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxx0xxxxxxxx100xxxxx1xx1x10010x
+                                                 x01001x1xx1xxxxx001xxxxxxxx0xxxx
                                                  ctermeq.  */
-                                              return 1270;
+                                              return 1311;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxx1xxxxxxxx100xxxxx1xx1x10010x
+                                                 x01001x1xx1xxxxx001xxxxxxxx1xxxx
                                                  ctermne.  */
-                                              return 1271;
+                                              return 1312;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx100xxxxx1xx1x10011x
+                                             x11001x1xx1xxxxx001xxxxxxxxxxxxx
                                              fmls.  */
-                                          return 1345;
+                                          return 1399;
                                         }
                                     }
                                 }
                             }
                           else
                             {
-                              if (((word >> 23) & 0x1) == 0)
+                              if (((word >> 30) & 0x1) == 0)
                                 {
                                   if (((word >> 21) & 0x1) == 0)
                                     {
                                       if (((word >> 22) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
                                               if (((word >> 31) & 0x1) == 0)
                                                 {
@@ -8494,17 +9231,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxx0xxxx10xxxx00001x100100
+                                                                 001001x10000xxxx01xxxx0xxxx0xxxx
                                                                  and.  */
-                                                              return 1201;
+                                                              return 1242;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx1xxxx0xxxx10xxxx00001x100100
+                                                                 001001x10000xxxx01xxxx0xxxx1xxxx
                                                                  bic.  */
-                                                              return 1213;
+                                                              return 1254;
                                                             }
                                                         }
                                                       else
@@ -8513,17 +9250,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxx0xxxx10xxx010001x100100
+                                                                 001001x100010xxx01xxxx0xxxxxxxxx
                                                                  brka.  */
-                                                              return 1215;
+                                                              return 1256;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxx0xxxx10xxx110001x100100
+                                                                 001001x100011xxx01xxxx0xxxxxxxxx
                                                                  brkn.  */
-                                                              return 1219;
+                                                              return 1260;
                                                             }
                                                         }
                                                     }
@@ -8533,17 +9270,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx0xxxx1xxxx10xxxxx0001x100100
+                                                             001001x1000xxxxx01xxxx1xxxx0xxxx
                                                              eor.  */
-                                                          return 1288;
+                                                          return 1329;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx1xxxx1xxxx10xxxxx0001x100100
+                                                             001001x1000xxxxx01xxxx1xxxx1xxxx
                                                              sel.  */
-                                                          return 1688;
+                                                          return 1778;
                                                         }
                                                     }
                                                 }
@@ -8553,83 +9290,72 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0001x100101
+                                                         101001x1000xxxxx010xxxxxxxxxxxxx
                                                          ld1sh.  */
-                                                      return 1460;
+                                                      return 1528;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0001x100101
+                                                         101001x1000xxxxx011xxxxxxxxxxxxx
                                                          ldff1sh.  */
-                                                      return 1549;
+                                                      return 1628;
                                                     }
                                                 }
                                             }
                                           else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxxx10xxxxx0001x10011x
-                                                 stnt1w.  */
-                                              return 1806;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
                                             {
                                               if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 4) & 0x1) == 0)
+                                                  if (((word >> 9) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 9) & 0x1) == 0)
+                                                      if (((word >> 20) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 20) & 0x1) == 0)
+                                                          if (((word >> 4) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxx0xxxx10xxxx00101x100100
-                                                                 ands.  */
-                                                              return 1202;
+                                                                 001001x11000xxxx01xxxx0xxxx0xxxx
+                                                                 orr.  */
+                                                              return 1714;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxx0xxxx0xxxx10xxx010101x100100
-                                                                     brkas.  */
-                                                                  return 1216;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxx0xxxx0xxxx10xxx110101x100100
-                                                                     brkns.  */
-                                                                  return 1220;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 001001x11000xxxx01xxxx0xxxx1xxxx
+                                                                 orn.  */
+                                                              return 1709;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx0xxxx1xxxx10xxxxx0101x100100
-                                                             eors.  */
-                                                          return 1289;
+                                                             001001x11001xxxx01xxxx0xxxxxxxxx
+                                                             brkb.  */
+                                                          return 1258;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxx1xxxxxxxxx10xxxxx0101x100100
-                                                         bics.  */
-                                                      return 1214;
+                                                      if (((word >> 4) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             001001x1100xxxxx01xxxx1xxxx0xxxx
+                                                             nor.  */
+                                                          return 1706;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             001001x1100xxxxx01xxxx1xxxx1xxxx
+                                                             nand.  */
+                                                          return 1703;
+                                                        }
                                                     }
                                                 }
                                               else
@@ -8638,174 +9364,75 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0101x100101
-                                                         ld1w.  */
-                                                      return 1479;
+                                                         101001x1100xxxxx010xxxxxxxxxxxxx
+                                                         ld1sb.  */
+                                                      return 1516;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0101x100101
-                                                         ldff1w.  */
-                                                      return 1565;
+                                                         101001x1100xxxxx011xxxxxxxxxxxxx
+                                                         ldff1sb.  */
+                                                      return 1616;
                                                     }
                                                 }
                                             }
-                                          else
-                                            {
-                                              if (((word >> 13) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx0101x10011x
-                                                     st1w.  */
-                                                  return 1768;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx0101x10011x
-                                                     st3w.  */
-                                                  return 1790;
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx010xxxxx1001x1001xx
-                                                 ld1sh.  */
-                                              return 1461;
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 30) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1101x10010x
-                                                     ld1w.  */
-                                                  return 1480;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1101x10011x
-                                                     st1w.  */
-                                                  return 1770;
-                                                }
-                                            }
                                         }
                                       else
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              if (((word >> 30) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1001x10010x
-                                                     ldff1sh.  */
-                                                  return 1550;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1001x10011x
-                                                     st2w.  */
-                                                  return 1782;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 30) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1101x10010x
-                                                     ldff1w.  */
-                                                  return 1566;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1101x10011x
-                                                     st4w.  */
-                                                  return 1798;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 30) & 0x1) == 0)
-                                    {
-                                      if (((word >> 21) & 0x1) == 0)
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
                                               if (((word >> 31) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 9) & 0x1) == 0)
+                                                  if (((word >> 4) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 9) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 4) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxx0xxxx10xxxx00011x100100
-                                                                 orr.  */
-                                                              return 1630;
+                                                                 001001x10100xxxx01xxxx0xxxx0xxxx
+                                                                 ands.  */
+                                                              return 1243;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxx1xxxx0xxxx10xxxx00011x100100
-                                                                 orn.  */
-                                                              return 1625;
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     001001x101010xxx01xxxx0xxxx0xxxx
+                                                                     brkas.  */
+                                                                  return 1257;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     001001x101011xxx01xxxx0xxxx0xxxx
+                                                                     brkns.  */
+                                                                  return 1261;
+                                                                }
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxx0xxxx10xxxx10011x100100
-                                                             brkb.  */
-                                                          return 1217;
+                                                             001001x1010xxxxx01xxxx1xxxx0xxxx
+                                                             eors.  */
+                                                          return 1330;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 4) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxx0xxxx1xxxx10xxxxx0011x100100
-                                                             nor.  */
-                                                          return 1622;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxx1xxxx1xxxx10xxxxx0011x100100
-                                                             nand.  */
-                                                          return 1619;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         001001x1010xxxxx01xxxxxxxxx1xxxx
+                                                         bics.  */
+                                                      return 1255;
                                                     }
                                                 }
                                               else
@@ -8814,17 +9441,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0011x100101
-                                                         ld1sb.  */
-                                                      return 1448;
+                                                         101001x1010xxxxx010xxxxxxxxxxxxx
+                                                         ld1w.  */
+                                                      return 1547;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0011x100101
-                                                         ldff1sb.  */
-                                                      return 1540;
+                                                         101001x1010xxxxx011xxxxxxxxxxxxx
+                                                         ldff1w.  */
+                                                      return 1647;
                                                     }
                                                 }
                                             }
@@ -8840,26 +9467,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxx0xxxx10xxxx00111x100100
+                                                                 001001x11100xxxx01xxxx0xxxx0xxxx
                                                                  orrs.  */
-                                                              return 1631;
+                                                              return 1715;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxx0xxxx10xxxx10111x100100
+                                                                 001001x11101xxxx01xxxx0xxxx0xxxx
                                                                  brkbs.  */
-                                                              return 1218;
+                                                              return 1259;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx0xxxx1xxxx10xxxxx0111x100100
+                                                             001001x1110xxxxx01xxxx1xxxx0xxxx
                                                              nors.  */
-                                                          return 1623;
+                                                          return 1707;
                                                         }
                                                     }
                                                   else
@@ -8868,17 +9495,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx1xxxx0xxxx10xxxxx0111x100100
+                                                             001001x1110xxxxx01xxxx0xxxx1xxxx
                                                              orns.  */
-                                                          return 1626;
+                                                          return 1710;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx1xxxx1xxxx10xxxxx0111x100100
+                                                             001001x1110xxxxx01xxxx1xxxx1xxxx
                                                              nands.  */
-                                                          return 1620;
+                                                          return 1704;
                                                         }
                                                     }
                                                 }
@@ -8888,187 +9515,297 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx010xxxxx0111x100101
+                                                         101001x1110xxxxx010xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1450;
+                                                      return 1518;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0111x100101
+                                                         101001x1110xxxxx011xxxxxxxxxxxxx
                                                          ldff1sb.  */
-                                                      return 1542;
+                                                      return 1620;
                                                     }
                                                 }
                                             }
                                         }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x01001x1001xxxxx010xxxxxxxxxxxxx
+                                                     ld1sh.  */
+                                                  return 1529;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x01001x1101xxxxx010xxxxxxxxxxxxx
+                                                     ld1sb.  */
+                                                  return 1517;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x01001x1011xxxxx010xxxxxxxxxxxxx
+                                                     ld1w.  */
+                                                  return 1548;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x01001x1111xxxxx010xxxxxxxxxxxxx
+                                                     ld1d.  */
+                                                  return 1470;
+                                                }
+                                            }
+                                        }
                                       else
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1011x10010x
-                                                     ld1sb.  */
-                                                  return 1449;
+                                                     x01001x1001xxxxx011xxxxxxxxxxxxx
+                                                     ldff1sh.  */
+                                                  return 1630;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1111x10010x
-                                                     ld1d.  */
-                                                  return 1410;
+                                                     x01001x1101xxxxx011xxxxxxxxxxxxx
+                                                     ldff1sb.  */
+                                                  return 1618;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1011x10010x
-                                                     ldff1sb.  */
-                                                  return 1541;
+                                                     x01001x1011xxxxx011xxxxxxxxxxxxx
+                                                     ldff1w.  */
+                                                  return 1649;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1111x10010x
+                                                     x01001x1111xxxxx011xxxxxxxxxxxxx
                                                      ldff1d.  */
-                                                  return 1522;
+                                                  return 1594;
                                                 }
                                             }
                                         }
                                     }
-                                  else
+                                }
+                              else
+                                {
+                                  if (((word >> 13) & 0x1) == 0)
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 21) & 0x1) == 0)
+                                            {
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x1xx0xxxxx010xxxxxxxx0xxxx
+                                                     fcmge.  */
+                                                  return 1349;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x1xx0xxxxx010xxxxxxxx1xxxx
+                                                     fcmgt.  */
+                                                  return 1351;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 011001x1xx1xxxxx010xxxxxxxxxxxxx
+                                                 fnmla.  */
+                                              return 1413;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 22) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 111001x1x0xxxxxx010xxxxxxxxxxxxx
+                                                 str.  */
+                                              return 1899;
+                                            }
+                                          else
                                             {
                                               if (((word >> 21) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 4) & 0x1) == 0)
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     111001x1x10xxxxx010xxxxxxxxxxxxx
+                                                     st1w.  */
+                                                  return 1858;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxxxx010xxxxx0x11x100110
-                                                         fcmge.  */
-                                                      return 1304;
+                                                         111001x1011xxxxx010xxxxxxxxxxxxx
+                                                         st1w.  */
+                                                      return 1860;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx1xxxxxxxx010xxxxx0x11x100110
-                                                         fcmgt.  */
-                                                      return 1306;
+                                                         111001x1111xxxxx010xxxxxxxxxxxxx
+                                                         st1d.  */
+                                                      return 1837;
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxx1x11x100110
-                                                     fnmla.  */
-                                                  return 1353;
-                                                }
                                             }
-                                          else
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 21) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxxx011x100111
-                                                     str.  */
-                                                  return 1809;
+                                                     011001x1xx0xxxxx011xxxxxxxx0xxxx
+                                                     fcmeq.  */
+                                                  return 1347;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx010xxxxxx111x100111
-                                                     st1d.  */
-                                                  return 1747;
+                                                     011001x1xx0xxxxx011xxxxxxxx1xxxx
+                                                     fcmne.  */
+                                                  return 1355;
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 4) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxxxx110xxxxx0x11x100110
-                                                         fcmeq.  */
-                                                      return 1302;
+                                                         111001x1000xxxxx011xxxxxxxxxxxxx
+                                                         stnt1w.  */
+                                                      return 1896;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx1xxxxxxxx110xxxxx0x11x100110
-                                                         fcmne.  */
-                                                      return 1310;
+                                                         111001x1100xxxxx011xxxxxxxxxxxxx
+                                                         stnt1d.  */
+                                                      return 1892;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0011x100111
-                                                         stnt1d.  */
-                                                      return 1802;
+                                                         111001x1010xxxxx011xxxxxxxxxxxxx
+                                                         st3w.  */
+                                                      return 1880;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx0111x100111
+                                                         111001x1110xxxxx011xxxxxxxxxxxxx
                                                          st3d.  */
-                                                      return 1786;
+                                                      return 1876;
                                                     }
                                                 }
                                             }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 011001x1xx1xxxxx011xxxxxxxxxxxxx
+                                                 fnmls.  */
+                                              return 1414;
+                                            }
                                           else
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx110xxxxx1x11x100110
-                                                     fnmls.  */
-                                                  return 1354;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x1001xxxxx011xxxxxxxxxxxxx
+                                                         st2w.  */
+                                                      return 1872;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x1101xxxxx011xxxxxxxxxxxxx
+                                                         st2d.  */
+                                                      return 1868;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx1011x100111
-                                                         st2d.  */
-                                                      return 1778;
+                                                         111001x1011xxxxx011xxxxxxxxxxxxx
+                                                         st4w.  */
+                                                      return 1888;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx110xxxxx1111x100111
+                                                         111001x1111xxxxx011xxxxxxxxxxxxx
                                                          st4d.  */
-                                                      return 1794;
+                                                      return 1884;
                                                     }
                                                 }
                                             }
@@ -9091,17 +9828,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxx0xxxxxxxx001xxxxx0xx1x10010x
+                                                 x01001x1xx0xxxxx100xxxxxxxx0xxxx
                                                  cmpeq.  */
-                                              return 1235;
+                                              return 1276;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxx1xxxxxxxx001xxxxx0xx1x10010x
+                                                 x01001x1xx0xxxxx100xxxxxxxx1xxxx
                                                  cmpne.  */
-                                              return 1258;
+                                              return 1299;
                                             }
                                         }
                                       else
@@ -9114,17 +9851,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx00001x10010x
+                                                         x01001x10000xxxx101xxxxxxxxxxxxx
                                                          ld1sh.  */
-                                                      return 1467;
+                                                      return 1535;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx00011x10010x
+                                                         x01001x11000xxxx101xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1454;
+                                                      return 1522;
                                                     }
                                                 }
                                               else
@@ -9133,17 +9870,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx00101x10010x
+                                                         x01001x10100xxxx101xxxxxxxxxxxxx
                                                          ld1w.  */
-                                                      return 1486;
+                                                      return 1554;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx00111x10010x
+                                                         x01001x11100xxxx101xxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1456;
+                                                      return 1524;
                                                     }
                                                 }
                                             }
@@ -9155,17 +9892,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx10001x10010x
+                                                         x01001x10001xxxx101xxxxxxxxxxxxx
                                                          ldnf1sh.  */
-                                                      return 1584;
+                                                      return 1668;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx10011x10010x
+                                                         x01001x11001xxxx101xxxxxxxxxxxxx
                                                          ldnf1sb.  */
-                                                      return 1581;
+                                                      return 1665;
                                                     }
                                                 }
                                               else
@@ -9174,17 +9911,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx10101x10010x
+                                                         x01001x10101xxxx101xxxxxxxxxxxxx
                                                          ldnf1w.  */
-                                                      return 1587;
+                                                      return 1671;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxx10111x10010x
+                                                         x01001x11101xxxx101xxxxxxxxxxxxx
                                                          ldnf1sb.  */
-                                                      return 1583;
+                                                      return 1667;
                                                     }
                                                 }
                                             }
@@ -9202,17 +9939,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxxxxx11xxxx000x1x100100
+                                                         001001x1x000xxxx11xxxxxxxxx0xxxx
                                                          brkpa.  */
-                                                      return 1221;
+                                                      return 1262;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxx0xxxxxxxxx11xxxx001x1x100100
+                                                         001001x1x100xxxx11xxxxxxxxx0xxxx
                                                          brkpas.  */
-                                                      return 1222;
+                                                      return 1263;
                                                     }
                                                 }
                                               else
@@ -9223,9 +9960,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx0xxxxxxxxx110xx010xx1x100100
+                                                             001001x1xx010xx011xxxxxxxxx0xxxx
                                                              ptest.  */
-                                                          return 1664;
+                                                          return 1748;
                                                         }
                                                       else
                                                         {
@@ -9237,17 +9974,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxx0xxxxx0x00110xx110xx1x100100
+                                                                         001001x1xx011xx01100x0xxxxx0xxxx
                                                                          pfirst.  */
-                                                                      return 1634;
+                                                                      return 1718;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxx0xxxxx0x01110xx110xx1x100100
+                                                                         001001x1xx011xx01110x0xxxxx0xxxx
                                                                          ptrue.  */
-                                                                      return 1665;
+                                                                      return 1749;
                                                                     }
                                                                 }
                                                               else
@@ -9256,17 +9993,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxx0xxxxx0x1x110xx1100x1x100100
+                                                                         001001x1x0011xx011x1x0xxxxx0xxxx
                                                                          rdffr.  */
-                                                                      return 1671;
+                                                                      return 1755;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxx0xxxxx0x1x110xx1101x1x100100
+                                                                         001001x1x1011xx011x1x0xxxxx0xxxx
                                                                          rdffrs.  */
-                                                                      return 1672;
+                                                                      return 1756;
                                                                     }
                                                                 }
                                                             }
@@ -9274,9 +10011,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxxx1xxx110xx110xx1x100100
+                                                                 001001x1xx011xx011xxx1xxxxx0xxxx
                                                                  pfalse.  */
-                                                              return 1633;
+                                                              return 1717;
                                                             }
                                                         }
                                                     }
@@ -9288,26 +10025,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxxx0x0x111xxx10xx1x100100
+                                                                 001001x1xx01xxx111x0x0xxxxx0xxxx
                                                                  ptrues.  */
-                                                              return 1666;
+                                                              return 1750;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxx0xxxxx0x1x111xxx10xx1x100100
+                                                                 001001x1xx01xxx111x1x0xxxxx0xxxx
                                                                  rdffr.  */
-                                                              return 1670;
+                                                              return 1754;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxx0xxxxx1xxx111xxx10xx1x100100
+                                                             001001x1xx01xxx111xxx1xxxxx0xxxx
                                                              pnext.  */
-                                                          return 1635;
+                                                          return 1719;
                                                         }
                                                     }
                                                 }
@@ -9318,17 +10055,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx1xxxxxxxxx11xxxxx00x1x100100
+                                                     001001x1x00xxxxx11xxxxxxxxx1xxxx
                                                      brkpb.  */
-                                                  return 1223;
+                                                  return 1264;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxx1xxxxxxxxx11xxxxx01x1x100100
+                                                     001001x1x10xxxxx11xxxxxxxxx1xxxx
                                                      brkpbs.  */
-                                                  return 1224;
+                                                  return 1265;
                                                 }
                                             }
                                         }
@@ -9342,17 +10079,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0001x100101
+                                                         101001x1000xxxxx110xxxxxxxxxxxxx
                                                          ldnt1w.  */
-                                                      return 1595;
+                                                      return 1679;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0011x100101
+                                                         101001x1100xxxxx110xxxxxxxxxxxxx
                                                          ldnt1d.  */
-                                                      return 1591;
+                                                      return 1675;
                                                     }
                                                 }
                                               else
@@ -9361,17 +10098,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0101x100101
+                                                         101001x1010xxxxx110xxxxxxxxxxxxx
                                                          ld3w.  */
-                                                      return 1503;
+                                                      return 1571;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx0111x100101
+                                                         101001x1110xxxxx110xxxxxxxxxxxxx
                                                          ld3d.  */
-                                                      return 1499;
+                                                      return 1567;
                                                     }
                                                 }
                                             }
@@ -9383,17 +10120,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0001x100101
+                                                         101001x1000xxxxx111xxxxxxxxxxxxx
                                                          ldnt1w.  */
-                                                      return 1596;
+                                                      return 1680;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0011x100101
+                                                         101001x1100xxxxx111xxxxxxxxxxxxx
                                                          ldnt1d.  */
-                                                      return 1592;
+                                                      return 1676;
                                                     }
                                                 }
                                               else
@@ -9402,17 +10139,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0101x100101
+                                                         101001x1010xxxxx111xxxxxxxxxxxxx
                                                          ld3w.  */
-                                                      return 1504;
+                                                      return 1572;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0111x100101
+                                                         101001x1110xxxxx111xxxxxxxxxxxxx
                                                          ld3d.  */
-                                                      return 1500;
+                                                      return 1568;
                                                     }
                                                 }
                                             }
@@ -9423,128 +10160,13 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   if (((word >> 13) & 0x1) == 0)
                                     {
-                                      if (((word >> 23) & 0x1) == 0)
-                                        {
-                                          if (((word >> 22) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0001x10011x
-                                                 st1w.  */
-                                              return 1764;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0101x10011x
-                                                 st1w.  */
-                                              return 1769;
-                                            }
-                                        }
-                                      else
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              if (((word >> 19) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 20) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 16) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 17) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001000000x11x100110
-                                                                         fadd.  */
-                                                                      return 1297;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001001000x11x100110
-                                                                         fmaxnm.  */
-                                                                      return 1334;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001010000x11x100110
-                                                                         fmul.  */
-                                                                      return 1348;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001011000x11x100110
-                                                                         fmax.  */
-                                                                      return 1332;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 17) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001100000x11x100110
-                                                                         fsub.  */
-                                                                      return 1371;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001101000x11x100110
-                                                                         fminnm.  */
-                                                                      return 1340;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 18) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001110000x11x100110
-                                                                         fsubr.  */
-                                                                      return 1373;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001111000x11x100110
-                                                                         fmin.  */
-                                                                      return 1338;
-                                                                    }
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx001xxx010x11x100110
-                                                             ftmad.  */
-                                                          return 1375;
-                                                        }
-                                                    }
-                                                  else
+                                                  if (((word >> 20) & 0x1) == 0)
                                                     {
                                                       if (((word >> 16) & 0x1) == 0)
                                                         {
@@ -9552,71 +10174,38 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               if (((word >> 18) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001000100x11x100110
-                                                                         fabd.  */
-                                                                      return 1292;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001000110x11x100110
-                                                                         fadd.  */
-                                                                      return 1298;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000000100xxxxxxxxxxxxx
+                                                                     fadd.  */
+                                                                  return 1338;
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001001100x11x100110
-                                                                         fdivr.  */
-                                                                      return 1328;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001001110x11x100110
-                                                                         fmaxnm.  */
-                                                                      return 1335;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000100100xxxxxxxxxxxxx
+                                                                     fmaxnm.  */
+                                                                  return 1385;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               if (((word >> 18) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001010100x11x100110
-                                                                         fmulx.  */
-                                                                      return 1350;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001010110x11x100110
-                                                                         fmul.  */
-                                                                      return 1349;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000010100xxxxxxxxxxxxx
+                                                                     fmul.  */
+                                                                  return 1405;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx0010111x0x11x100110
+                                                                     011001x1xx000110100xxxxxxxxxxxxx
                                                                      fmax.  */
-                                                                  return 1333;
+                                                                  return 1383;
                                                                 }
                                                             }
                                                         }
@@ -9626,41 +10215,19 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               if (((word >> 18) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001100100x11x100110
-                                                                         fscale.  */
-                                                                      return 1368;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001100110x11x100110
-                                                                         fsub.  */
-                                                                      return 1372;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000001100xxxxxxxxxxxxx
+                                                                     fsub.  */
+                                                                  return 1431;
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001101100x11x100110
-                                                                         fdiv.  */
-                                                                      return 1327;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx001101110x11x100110
-                                                                         fminnm.  */
-                                                                      return 1341;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000101100xxxxxxxxxxxxx
+                                                                     fminnm.  */
+                                                                  return 1391;
                                                                 }
                                                             }
                                                           else
@@ -9669,495 +10236,797 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx0011101x0x11x100110
+                                                                     011001x1xx000011100xxxxxxxxxxxxx
                                                                      fsubr.  */
-                                                                  return 1374;
+                                                                  return 1433;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx0011111x0x11x100110
+                                                                     011001x1xx000111100xxxxxxxxxxxxx
                                                                      fmin.  */
-                                                                  return 1339;
+                                                                  return 1389;
                                                                 }
                                                             }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         011001x1xx010xxx100xxxxxxxxxxxxx
+                                                         ftmad.  */
+                                                      return 1435;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 4) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxx0xxxxxxxx011xxxxx0x11x100110
-                                                         fcmuo.  */
-                                                      return 1311;
+                                                      if (((word >> 17) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001000100xxxxxxxxxxxxx
+                                                                     fabd.  */
+                                                                  return 1333;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011000100xxxxxxxxxxxxx
+                                                                     fadd.  */
+                                                                  return 1339;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001100100xxxxxxxxxxxxx
+                                                                     fdivr.  */
+                                                                  return 1379;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011100100xxxxxxxxxxxxx
+                                                                     fmaxnm.  */
+                                                                  return 1386;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001010100xxxxxxxxxxxxx
+                                                                     fmulx.  */
+                                                                  return 1410;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011010100xxxxxxxxxxxxx
+                                                                     fmul.  */
+                                                                  return 1406;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x1110100xxxxxxxxxxxxx
+                                                                 fmax.  */
+                                                              return 1384;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxx1xxxxxxxx011xxxxx0x11x100110
-                                                         facge.  */
-                                                      return 1294;
+                                                      if (((word >> 17) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001001100xxxxxxxxxxxxx
+                                                                     fscale.  */
+                                                                  return 1428;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011001100xxxxxxxxxxxxx
+                                                                     fsub.  */
+                                                                  return 1432;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001101100xxxxxxxxxxxxx
+                                                                     fdiv.  */
+                                                                  return 1378;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011101100xxxxxxxxxxxxx
+                                                                     fminnm.  */
+                                                                  return 1392;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x1011100xxxxxxxxxxxxx
+                                                                 fsubr.  */
+                                                              return 1434;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 011001x1xx0x1111100xxxxxxxxxxxxx
+                                                                 fmin.  */
+                                                              return 1390;
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx0x11x100111
-                                                 st1d.  */
-                                              return 1743;
+                                              if (((word >> 4) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x1xx0xxxxx110xxxxxxxx0xxxx
+                                                     fcmuo.  */
+                                                  return 1356;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     011001x1xx0xxxxx110xxxxxxxx1xxxx
+                                                     facge.  */
+                                                  return 1335;
+                                                }
                                             }
                                         }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx0001x10011x
+                                                     111001x1000xxxxx1x0xxxxxxxxxxxxx
                                                      st1w.  */
-                                                  return 1765;
+                                                  return 1854;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx0101x10011x
-                                                     st1w.  */
-                                                  return 1772;
+                                                     111001x1100xxxxx1x0xxxxxxxxxxxxx
+                                                     st1d.  */
+                                                  return 1833;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 111001x1x10xxxxx1x0xxxxxxxxxxxxx
+                                                 st1w.  */
+                                              return 1859;
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 14) & 0x1) == 0)
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000000101xxxxxxxxxxxxx
+                                                                     frintn.  */
+                                                                  return 1422;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx010000101xxxxxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 1768;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101000000x11x100110
-                                                                         frintn.  */
-                                                                      return 1362;
+                                                                         011001x1x0001000101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 1358;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101000010x11x100110
-                                                                         scvtf.  */
-                                                                      return 1682;
+                                                                         011001x1x1001000101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 1360;
                                                                     }
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      if (((word >> 22) & 0x1) == 0)
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101000100011x100110
-                                                                             fcvt.  */
-                                                                          return 1313;
-                                                                        }
-                                                                      else
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101000100111x100110
-                                                                             fcvt.  */
-                                                                          return 1315;
-                                                                        }
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101000110x11x100110
-                                                                         fcvtzs.  */
-                                                                      return 1320;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011000101xxxxxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 1368;
                                                                 }
                                                             }
-                                                          else
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000100101xxxxxxxxxxxxx
+                                                                     frinta.  */
+                                                                  return 1419;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101001000x11x100110
-                                                                         frinta.  */
-                                                                      return 1359;
+                                                                         011001x1x0010100101xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 1767;
                                                                     }
                                                                   else
                                                                     {
-                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                      if (((word >> 23) & 0x1) == 0)
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101001010011x100110
+                                                                             011001x101010100101xxxxxxxxxxxxx
                                                                              scvtf.  */
-                                                                          return 1681;
+                                                                          return 1766;
                                                                         }
                                                                       else
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101001010111x100110
+                                                                             011001x111010100101xxxxxxxxxxxxx
                                                                              scvtf.  */
-                                                                          return 1683;
+                                                                          return 1770;
                                                                         }
                                                                     }
                                                                 }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001100101xxxxxxxxxxxxx
+                                                                     frecpx.  */
+                                                                  return 1418;
+                                                                }
                                                               else
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  if (((word >> 22) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101001100x11x100110
-                                                                         frecpx.  */
-                                                                      return 1358;
+                                                                         011001x1x0011100101xxxxxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 1367;
                                                                     }
                                                                   else
                                                                     {
-                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                      if (((word >> 23) & 0x1) == 0)
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101001110011x100110
+                                                                             011001x101011100101xxxxxxxxxxxxx
                                                                              fcvtzs.  */
-                                                                          return 1319;
+                                                                          return 1365;
                                                                         }
                                                                       else
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101001110111x100110
+                                                                             011001x111011100101xxxxxxxxxxxxx
                                                                              fcvtzs.  */
-                                                                          return 1321;
+                                                                          return 1369;
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx1010100x0x11x100110
+                                                                     011001x1xx000010101xxxxxxxxxxxxx
                                                                      frintm.  */
-                                                                  return 1361;
+                                                                  return 1421;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx1010101x0x11x100110
-                                                                     fcvt.  */
-                                                                  return 1317;
+                                                                     011001x1xx010010101xxxxxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 1765;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001010101xxxxxxxxxxxxx
+                                                                     fcvt.  */
+                                                                  return 1362;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011010101xxxxxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 1364;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000110101xxxxxxxxxxxxx
+                                                                     frintx.  */
+                                                                  return 1424;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101011000x11x100110
-                                                                         frintx.  */
-                                                                      return 1364;
+                                                                         011001x10x010110101xxxxxxxxxxxxx
+                                                                         scvtf.  */
+                                                                      return 1769;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101011010x11x100110
+                                                                         011001x11x010110101xxxxxxxxxxxxx
                                                                          scvtf.  */
-                                                                      return 1684;
+                                                                      return 1771;
                                                                     }
                                                                 }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x10x0x1110101xxxxxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 1366;
+                                                                }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx1010111x0x11x100110
+                                                                     011001x11x0x1110101xxxxxxxxxxxxx
                                                                      fcvtzs.  */
-                                                                  return 1322;
+                                                                  return 1370;
                                                                 }
                                                             }
                                                         }
                                                     }
-                                                  else
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000001101xxxxxxxxxxxxx
+                                                                     frintp.  */
+                                                                  return 1423;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx010001101xxxxxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 1920;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 22) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101100000x11x100110
-                                                                         frintp.  */
-                                                                      return 1363;
+                                                                         011001x1x0001001101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 1359;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101100010x11x100110
-                                                                         ucvtf.  */
-                                                                      return 1828;
+                                                                         011001x1x1001001101xxxxxxxxxxxxx
+                                                                         fcvt.  */
+                                                                      return 1361;
                                                                     }
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      if (((word >> 22) & 0x1) == 0)
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101100100011x100110
-                                                                             fcvt.  */
-                                                                          return 1314;
-                                                                        }
-                                                                      else
-                                                                        {
-                                                                          /* 33222222222211111111110000000000
-                                                                             10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101100100111x100110
-                                                                             fcvt.  */
-                                                                          return 1316;
-                                                                        }
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101100110x11x100110
-                                                                         fcvtzu.  */
-                                                                      return 1324;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011001101xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 1375;
                                                                 }
                                                             }
-                                                          else
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 22) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 22) & 0x1) == 0)
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1x00x0101101xxxxxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 1919;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx1011010x0011x100110
+                                                                         011001x1010x0101101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1827;
+                                                                      return 1918;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx1011010x0111x100110
+                                                                         011001x1110x0101101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1829;
+                                                                      return 1922;
                                                                     }
                                                                 }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001101101xxxxxxxxxxxxx
+                                                                     fsqrt.  */
+                                                                  return 1429;
+                                                                }
                                                               else
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  if (((word >> 22) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101101100x11x100110
-                                                                         fsqrt.  */
-                                                                      return 1369;
+                                                                         011001x1x0011101101xxxxxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 1374;
                                                                     }
                                                                   else
                                                                     {
-                                                                      if (((word >> 22) & 0x1) == 0)
+                                                                      if (((word >> 23) & 0x1) == 0)
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101101110011x100110
+                                                                             011001x101011101101xxxxxxxxxxxxx
                                                                              fcvtzu.  */
-                                                                          return 1323;
+                                                                          return 1372;
                                                                         }
                                                                       else
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxxxxx101101110111x100110
+                                                                             011001x111011101101xxxxxxxxxxxxx
                                                                              fcvtzu.  */
-                                                                          return 1325;
+                                                                          return 1376;
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx1011100x0x11x100110
+                                                                     011001x1xx000011101xxxxxxxxxxxxx
                                                                      frintz.  */
-                                                                  return 1365;
+                                                                  return 1425;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx1011101x0x11x100110
-                                                                     fcvt.  */
-                                                                  return 1318;
+                                                                     011001x1xx010011101xxxxxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 1917;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 20) & 0x1) == 0)
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx001011101xxxxxxxxxxxxx
+                                                                     fcvt.  */
+                                                                  return 1363;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx011011101xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 1371;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x1xx000111101xxxxxxxxxxxxx
+                                                                     frinti.  */
+                                                                  return 1420;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101111000x11x100110
-                                                                         frinti.  */
-                                                                      return 1360;
+                                                                         011001x10x010111101xxxxxxxxxxxxx
+                                                                         ucvtf.  */
+                                                                      return 1921;
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxxxxx101111010x11x100110
+                                                                         011001x11x010111101xxxxxxxxxxxxx
                                                                          ucvtf.  */
-                                                                      return 1830;
+                                                                      return 1923;
                                                                     }
                                                                 }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     011001x10x0x1111101xxxxxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 1373;
+                                                                }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxxxx1011111x0x11x100110
+                                                                     011001x11x0x1111101xxxxxxxxxxxxx
                                                                      fcvtzu.  */
-                                                                  return 1326;
+                                                                  return 1377;
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
-                                              else
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxxx0011x100111
-                                                         st1d.  */
-                                                      return 1744;
+                                                         111001x1000xxxxx101xxxxxxxxxxxxx
+                                                         st1w.  */
+                                                      return 1855;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx101xxxxx0111x100111
+                                                         111001x1100xxxxx101xxxxxxxxxxxxx
                                                          st1d.  */
-                                                      return 1748;
+                                                      return 1834;
                                                     }
                                                 }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 23) & 0x1) == 0)
-                                            {
-                                              if (((word >> 20) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxx00x01x10011x
-                                                     st1w.  */
-                                                  return 1773;
-                                                }
                                               else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx10001x10011x
-                                                         stnt1w.  */
-                                                      return 1807;
+                                                         111001x1010xxxxx101xxxxxxxxxxxxx
+                                                         st1w.  */
+                                                      return 1862;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx10101x10011x
-                                                         st3w.  */
-                                                      return 1791;
+                                                         111001x1110xxxxx101xxxxxxxxxxxxx
+                                                         st1d.  */
+                                                      return 1838;
                                                     }
                                                 }
                                             }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 011001x1xx0xxxxx111xxxxxxxxxxxxx
+                                                 facgt.  */
+                                              return 1336;
+                                            }
                                           else
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 20) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx0x11x100110
-                                                     facgt.  */
-                                                  return 1295;
+                                                     111001x1xx00xxxx111xxxxxxxxxxxxx
+                                                     st1w.  */
+                                                  return 1863;
                                                 }
                                               else
                                                 {
                                                   if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0011x100111
-                                                         stnt1d.  */
-                                                      return 1803;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x10001xxxx111xxxxxxxxxxxxx
+                                                             stnt1w.  */
+                                                          return 1897;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x11001xxxx111xxxxxxxxxxxxx
+                                                             stnt1d.  */
+                                                          return 1893;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx0111x100111
-                                                         st3d.  */
-                                                      return 1787;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x10101xxxx111xxxxxxxxxxxxx
+                                                             st3w.  */
+                                                          return 1881;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x11101xxxx111xxxxxxxxxxxxx
+                                                             st3d.  */
+                                                          return 1877;
+                                                        }
                                                     }
                                                 }
                                             }
@@ -10185,9 +11054,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx01000001xx1x100100
+                                                                 001001x1xx10000010xxxxxxxxxxxxxx
                                                                  cntp.  */
-                                                              return 1264;
+                                                              return 1305;
                                                             }
                                                           else
                                                             {
@@ -10199,35 +11068,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxx000x01000101xx1x100100
+                                                                             001001x1xx10100010x000xxxxxxxxxx
                                                                              sqincp.  */
-                                                                          return 1722;
+                                                                          return 1812;
                                                                         }
                                                                       else
                                                                         {
                                                                           /* 33222222222211111111110000000000
                                                                              10987654321098765432109876543210
-                                                                             xxxxxxxxxx001x01000101xx1x100100
+                                                                             001001x1xx10100010x100xxxxxxxxxx
                                                                              wrffr.  */
-                                                                          return 1889;
+                                                                          return 1985;
                                                                         }
                                                                     }
                                                                   else
                                                                     {
                                                                       /* 33222222222211111111110000000000
                                                                          10987654321098765432109876543210
-                                                                         xxxxxxxxxx01xx01000101xx1x100100
+                                                                         001001x1xx10100010xx10xxxxxxxxxx
                                                                          sqincp.  */
-                                                                      return 1724;
+                                                                      return 1814;
                                                                     }
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx1xxx01000101xx1x100100
+                                                                     001001x1xx10100010xxx1xxxxxxxxxx
                                                                      sqincp.  */
-                                                                  return 1723;
+                                                                  return 1813;
                                                                 }
                                                             }
                                                         }
@@ -10239,26 +11108,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxx00x01001x01xx1x100100
+                                                                     001001x1xx10x10010x00xxxxxxxxxxx
                                                                      incp.  */
-                                                                  return 1383;
+                                                                  return 1443;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxxx01x01001x01xx1x100100
+                                                                     001001x1xx10x10010x10xxxxxxxxxxx
                                                                      setffr.  */
-                                                                  return 1689;
+                                                                  return 1779;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxx1xx01001x01xx1x100100
+                                                                 001001x1xx10x10010xx1xxxxxxxxxxx
                                                                  incp.  */
-                                                              return 1384;
+                                                              return 1444;
                                                             }
                                                         }
                                                     }
@@ -10270,26 +11139,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00xx0101xx01xx1x100100
+                                                                 001001x1xx10xx1010xx00xxxxxxxxxx
                                                                  sqdecp.  */
-                                                              return 1708;
+                                                              return 1798;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx01xx0101xx01xx1x100100
+                                                                 001001x1xx10xx1010xx10xxxxxxxxxx
                                                                  sqdecp.  */
-                                                              return 1710;
+                                                              return 1800;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1xxx0101xx01xx1x100100
+                                                             001001x1xx10xx1010xxx1xxxxxxxxxx
                                                              sqdecp.  */
-                                                          return 1709;
+                                                          return 1799;
                                                         }
                                                     }
                                                 }
@@ -10305,26 +11174,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00xx01100x01xx1x100100
+                                                                     001001x1xx10x00110xx00xxxxxxxxxx
                                                                      uqincp.  */
-                                                                  return 1864;
+                                                                  return 1960;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx00xx01101x01xx1x100100
+                                                                     001001x1xx10x10110xx00xxxxxxxxxx
                                                                      decp.  */
-                                                                  return 1277;
+                                                                  return 1318;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx00xx0111xx01xx1x100100
+                                                                 001001x1xx10xx1110xx00xxxxxxxxxx
                                                                  uqdecp.  */
-                                                              return 1850;
+                                                              return 1946;
                                                             }
                                                         }
                                                       else
@@ -10335,26 +11204,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01xx01100x01xx1x100100
+                                                                     001001x1xx10x00110xx10xxxxxxxxxx
                                                                      uqincp.  */
-                                                                  return 1865;
+                                                                  return 1961;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx01xx01101x01xx1x100100
+                                                                     001001x1xx10x10110xx10xxxxxxxxxx
                                                                      decp.  */
-                                                                  return 1278;
+                                                                  return 1319;
                                                                 }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx01xx0111xx01xx1x100100
+                                                                 001001x1xx10xx1110xx10xxxxxxxxxx
                                                                  uqdecp.  */
-                                                              return 1851;
+                                                              return 1947;
                                                             }
                                                         }
                                                     }
@@ -10364,17 +11233,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1xxx0110xx01xx1x100100
+                                                             001001x1xx10xx0110xxx1xxxxxxxxxx
                                                              uqincp.  */
-                                                          return 1866;
+                                                          return 1962;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1xxx0111xx01xx1x100100
+                                                             001001x1xx10xx1110xxx1xxxxxxxxxx
                                                              uqdecp.  */
-                                                          return 1852;
+                                                          return 1948;
                                                         }
                                                     }
                                                 }
@@ -10387,17 +11256,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx01xxxx01001x100101
+                                                         101001x10010xxxx10xxxxxxxxxxxxxx
                                                          ld1sh.  */
-                                                      return 1468;
+                                                      return 1536;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx01xxxx01011x100101
+                                                         101001x11010xxxx10xxxxxxxxxxxxxx
                                                          ld1sb.  */
-                                                      return 1455;
+                                                      return 1523;
                                                     }
                                                 }
                                               else
@@ -10406,17 +11275,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx01xxxx01101x100101
+                                                         101001x10110xxxx10xxxxxxxxxxxxxx
                                                          ld1w.  */
-                                                      return 1487;
+                                                      return 1555;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx01xxxx01111x100101
+                                                         101001x11110xxxx10xxxxxxxxxxxxxx
                                                          ld1d.  */
-                                                      return 1415;
+                                                      return 1475;
                                                     }
                                                 }
                                             }
@@ -10429,17 +11298,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxxx01xxxx11001x10010x
+                                                     x01001x10011xxxx10xxxxxxxxxxxxxx
                                                      ldnf1sh.  */
-                                                  return 1585;
+                                                  return 1669;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxxx01xxxx11011x10010x
+                                                     x01001x11011xxxx10xxxxxxxxxxxxxx
                                                      ldnf1sb.  */
-                                                  return 1582;
+                                                  return 1666;
                                                 }
                                             }
                                           else
@@ -10448,17 +11317,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxxx01xxxx11101x10010x
+                                                     x01001x10111xxxx10xxxxxxxxxxxxxx
                                                      ldnf1w.  */
-                                                  return 1588;
+                                                  return 1672;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxxx01xxxx11111x10010x
+                                                     x01001x11111xxxx10xxxxxxxxxxxxxx
                                                      ldnf1d.  */
-                                                  return 1577;
+                                                  return 1661;
                                                 }
                                             }
                                         }
@@ -10479,17 +11348,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx11000001xx1x100100
+                                                                 001001x1xx10000011xxxxxxxxxxxxxx
                                                                  add.  */
-                                                              return 1191;
+                                                              return 1232;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx11000011xx1x100100
+                                                                 001001x1xx11000011xxxxxxxxxxxxxx
                                                                  mul.  */
-                                                              return 1617;
+                                                              return 1701;
                                                             }
                                                         }
                                                       else
@@ -10498,17 +11367,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx11000101xx1x100100
+                                                                 001001x1xx10100011xxxxxxxxxxxxxx
                                                                  smax.  */
-                                                              return 1690;
+                                                              return 1780;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx11000111xx1x100100
+                                                                 001001x1xx11100011xxxxxxxxxxxxxx
                                                                  dup.  */
-                                                              return 1283;
+                                                              return 1324;
                                                             }
                                                         }
                                                     }
@@ -10516,9 +11385,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx11001xx1xx1x100100
+                                                         001001x1xx1xx10011xxxxxxxxxxxxxx
                                                          sqadd.  */
-                                                      return 1699;
+                                                      return 1789;
                                                     }
                                                 }
                                               else
@@ -10527,17 +11396,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx11010xx1xx1x100100
+                                                         001001x1xx1xx01011xxxxxxxxxxxxxx
                                                          smin.  */
-                                                      return 1693;
+                                                      return 1783;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx11011xx1xx1x100100
+                                                         001001x1xx1xx11011xxxxxxxxxxxxxx
                                                          sqsub.  */
-                                                      return 1729;
+                                                      return 1819;
                                                     }
                                                 }
                                             }
@@ -10551,9 +11420,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxxx111000x1xx1x100100
+                                                             001001x1xx1x000111xxxxxxxxxxxxxx
                                                              sub.  */
-                                                          return 1811;
+                                                          return 1901;
                                                         }
                                                       else
                                                         {
@@ -10561,17 +11430,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx11100101xx1x100100
+                                                                 001001x1xx10100111xxxxxxxxxxxxxx
                                                                  umax.  */
-                                                              return 1833;
+                                                              return 1929;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxxxxxx11100111xx1x100100
+                                                                 001001x1xx11100111xxxxxxxxxxxxxx
                                                                  fdup.  */
-                                                              return 1329;
+                                                              return 1380;
                                                             }
                                                         }
                                                     }
@@ -10579,9 +11448,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx11101xx1xx1x100100
+                                                         001001x1xx1xx10111xxxxxxxxxxxxxx
                                                          uqadd.  */
-                                                      return 1841;
+                                                      return 1937;
                                                     }
                                                 }
                                               else
@@ -10592,26 +11461,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxxx111100x1xx1x100100
+                                                             001001x1xx1x001111xxxxxxxxxxxxxx
                                                              subr.  */
-                                                          return 1813;
+                                                          return 1903;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxxx111101x1xx1x100100
+                                                             001001x1xx1x101111xxxxxxxxxxxxxx
                                                              umin.  */
-                                                          return 1836;
+                                                          return 1932;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxxx11111xx1xx1x100100
+                                                         001001x1xx1xx11111xxxxxxxxxxxxxx
                                                          uqsub.  */
-                                                      return 1871;
+                                                      return 1967;
                                                     }
                                                 }
                                             }
@@ -10626,17 +11495,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx1001x100101
+                                                         101001x1001xxxxx110xxxxxxxxxxxxx
                                                          ld2w.  */
-                                                      return 1495;
+                                                      return 1563;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx1011x100101
+                                                         101001x1101xxxxx110xxxxxxxxxxxxx
                                                          ld2d.  */
-                                                      return 1491;
+                                                      return 1559;
                                                     }
                                                 }
                                               else
@@ -10645,17 +11514,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx1101x100101
+                                                         101001x1011xxxxx110xxxxxxxxxxxxx
                                                          ld4w.  */
-                                                      return 1511;
+                                                      return 1579;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx011xxxxx1111x100101
+                                                         101001x1111xxxxx110xxxxxxxxxxxxx
                                                          ld4d.  */
-                                                      return 1507;
+                                                      return 1575;
                                                     }
                                                 }
                                             }
@@ -10667,17 +11536,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1001x100101
+                                                         101001x1001xxxxx111xxxxxxxxxxxxx
                                                          ld2w.  */
-                                                      return 1496;
+                                                      return 1564;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1011x100101
+                                                         101001x1101xxxxx111xxxxxxxxxxxxx
                                                          ld2d.  */
-                                                      return 1492;
+                                                      return 1560;
                                                     }
                                                 }
                                               else
@@ -10686,17 +11555,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1101x100101
+                                                         101001x1011xxxxx111xxxxxxxxxxxxx
                                                          ld4w.  */
-                                                      return 1512;
+                                                      return 1580;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxxx1111x100101
+                                                         101001x1111xxxxx111xxxxxxxxxxxxx
                                                          ld4d.  */
-                                                      return 1508;
+                                                      return 1576;
                                                     }
                                                 }
                                             }
@@ -10707,53 +11576,53 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   if (((word >> 13) & 0x1) == 0)
                                     {
-                                      if (((word >> 23) & 0x1) == 0)
+                                      if (((word >> 31) & 0x1) == 0)
                                         {
-                                          if (((word >> 22) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx1001x10011x
-                                                 st1w.  */
-                                              return 1766;
+                                                 011001x1xx1xxxxx100xxxxxxxxxxxxx
+                                                 fmad.  */
+                                              return 1382;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx1101x10011x
-                                                 st1w.  */
-                                              return 1771;
+                                                 011001x1xx1xxxxx110xxxxxxxxxxxxx
+                                                 fnmad.  */
+                                              return 1412;
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 31) & 0x1) == 0)
+                                          if (((word >> 22) & 0x1) == 0)
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              if (((word >> 23) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx001xxxxx1x11x100110
-                                                     fmad.  */
-                                                  return 1331;
+                                                     111001x1001xxxxx1x0xxxxxxxxxxxxx
+                                                     st1w.  */
+                                                  return 1856;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx011xxxxx1x11x100110
-                                                     fnmad.  */
-                                                  return 1352;
+                                                     111001x1101xxxxx1x0xxxxxxxxxxxxx
+                                                     st1d.  */
+                                                  return 1835;
                                                 }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxxxx0x1xxxxx1x11x100111
-                                                 st1d.  */
-                                              return 1745;
+                                                 111001x1x11xxxxx1x0xxxxxxxxxxxxx
+                                                 st1w.  */
+                                              return 1861;
                                             }
                                         }
                                     }
@@ -10761,114 +11630,114 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 14) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
                                             {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1001x10011x
-                                                     st1w.  */
-                                                  return 1767;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1101x10011x
-                                                     st1w.  */
-                                                  return 1774;
-                                                }
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 011001x1xx1xxxxx101xxxxxxxxxxxxx
+                                                 fmsb.  */
+                                              return 1403;
                                             }
                                           else
                                             {
-                                              if (((word >> 31) & 0x1) == 0)
+                                              if (((word >> 22) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1x11x100110
-                                                     fmsb.  */
-                                                  return 1346;
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x1001xxxxx101xxxxxxxxxxxxx
+                                                         st1w.  */
+                                                      return 1857;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         111001x1101xxxxx101xxxxxxxxxxxxx
+                                                         st1d.  */
+                                                      return 1836;
+                                                    }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx101xxxxx1x11x100111
-                                                     st1d.  */
-                                                  return 1746;
+                                                     111001x1x11xxxxx101xxxxxxxxxxxxx
+                                                     st1w.  */
+                                                  return 1864;
                                                 }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 31) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 011001x1xx1xxxxx111xxxxxxxxxxxxx
+                                                 fnmsb.  */
+                                              return 1415;
+                                            }
+                                          else
                                             {
                                               if (((word >> 20) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxx01x01x10011x
-                                                     st1w.  */
-                                                  return 1775;
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx11001x10011x
-                                                         st2w.  */
-                                                      return 1783;
+                                                         111001x10x10xxxx111xxxxxxxxxxxxx
+                                                         st1w.  */
+                                                      return 1865;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx11101x10011x
-                                                         st4w.  */
-                                                      return 1799;
+                                                         111001x11x10xxxx111xxxxxxxxxxxxx
+                                                         st1d.  */
+                                                      return 1839;
                                                     }
                                                 }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 31) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxxxxx111xxxxx1x11x100110
-                                                     fnmsb.  */
-                                                  return 1355;
-                                                }
                                               else
                                                 {
-                                                  if (((word >> 20) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxxxxx111xxxx01x11x100111
-                                                         st1d.  */
-                                                      return 1749;
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x10011xxxx111xxxxxxxxxxxxx
+                                                             st2w.  */
+                                                          return 1873;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             111001x11011xxxx111xxxxxxxxxxxxx
+                                                             st2d.  */
+                                                          return 1869;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 22) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx111xxxx11011x100111
-                                                             st2d.  */
-                                                          return 1779;
+                                                             111001x10111xxxx111xxxxxxxxxxxxx
+                                                             st4w.  */
+                                                          return 1889;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxxxxx111xxxx11111x100111
+                                                             111001x11111xxxx111xxxxxxxxxxxxx
                                                              st4d.  */
-                                                          return 1795;
+                                                          return 1885;
                                                         }
                                                     }
                                                 }
@@ -10891,189 +11760,321 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxxxx101000
+                             000101xxxxxxxxxxxxxxxxxxxxxxxxxx
                              b.  */
-                          return 627;
+                          return 630;
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxxxx101001
+                             100101xxxxxxxxxxxxxxxxxxxxxxxxxx
                              bl.  */
-                          return 628;
+                          return 631;
                         }
                     }
                   else
                     {
                       if (((word >> 24) & 0x1) == 0)
                         {
-                          if (((word >> 25) & 0x1) == 0)
+                          if (((word >> 4) & 0x1) == 0)
                             {
-                              if (((word >> 31) & 0x1) == 0)
+                              if (((word >> 25) & 0x1) == 0)
                                 {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxxxx00101010
-                                     b.c.  */
-                                  return 636;
-                                }
-                              else
-                                {
-                                  if (((word >> 0) & 0x1) == 0)
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         01010100xxxxxxxxxxxxxxxxxxx0xxxx
+                                         b.c.  */
+                                      return 651;
+                                    }
+                                  else
                                     {
-                                      if (((word >> 1) & 0x1) == 0)
+                                      if (((word >> 0) & 0x1) == 0)
                                         {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          if (((word >> 1) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 00xxxxxxxxxxxxxxxxxxx0xx00101011
-                                                 hlt.  */
-                                              return 708;
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx0xxxxxxxxxxxxxxxx0xx00
+                                                     hlt.  */
+                                                  return 742;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx1xxxxxxxxxxxxxxxx0xx00
+                                                     brk.  */
+                                                  return 741;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 00xxxxxxxxxxxxxxxxxxx1xx00101011
-                                                 brk.  */
-                                              return 707;
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx0xxxxxxxxxxxxxxxx0xx10
+                                                     hvc.  */
+                                                  return 739;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx1xxxxxxxxxxxxxxxx0xx10
+                                                     dcps2.  */
+                                                  return 744;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          if (((word >> 1) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 01xxxxxxxxxxxxxxxxxxx0xx00101011
-                                                 hvc.  */
-                                              return 705;
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx0xxxxxxxxxxxxxxxx0xx01
+                                                     svc.  */
+                                                  return 738;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx1xxxxxxxxxxxxxxxx0xx01
+                                                     dcps1.  */
+                                                  return 743;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 01xxxxxxxxxxxxxxxxxxx1xx00101011
-                                                 dcps2.  */
-                                              return 710;
+                                              if (((word >> 21) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx0xxxxxxxxxxxxxxxx0xx11
+                                                     smc.  */
+                                                  return 740;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     11010100xx1xxxxxxxxxxxxxxxx0xx11
+                                                     dcps3.  */
+                                                  return 745;
+                                                }
                                             }
                                         }
                                     }
-                                  else
+                                }
+                              else
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      if (((word >> 1) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 10xxxxxxxxxxxxxxxxxxx0xx00101011
-                                                 svc.  */
-                                              return 704;
+                                                 x1010110000xxxxxxxxxxxxxxxx0xxxx
+                                                 br.  */
+                                              return 632;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 10xxxxxxxxxxxxxxxxxxx1xx00101011
-                                                 dcps1.  */
-                                              return 709;
+                                                 x1010110100xxxxxxxxxxxxxxxx0xxxx
+                                                 eret.  */
+                                              return 635;
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 21) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x1010110x10xxxxxxxxxxxxxxxx0xxxx
+                                             ret.  */
+                                          return 634;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x10101100x1xxxxxxxxxxxxxxxx0xxxx
+                                             blr.  */
+                                          return 633;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x10101101x1xxxxxxxxxxxxxxxx0xxxx
+                                             drps.  */
+                                          return 636;
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 10) & 0x1) == 0)
+                                {
+                                  if (((word >> 21) & 0x1) == 0)
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          if (((word >> 23) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 11xxxxxxxxxxxxxxxxxxx0xx00101011
-                                                 smc.  */
-                                              return 706;
+                                                 x10101x0000xxxxxxxxxx0xxxxx1xxxx
+                                                 braaz.  */
+                                              return 641;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 11xxxxxxxxxxxxxxxxxxx1xx00101011
-                                                 dcps3.  */
-                                              return 711;
+                                                 x10101x0100xxxxxxxxxx0xxxxx1xxxx
+                                                 eretaa.  */
+                                              return 647;
                                             }
                                         }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x10101x0x10xxxxxxxxxx0xxxxx1xxxx
+                                             retaa.  */
+                                          return 645;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x10101x0xx1xxxxxxxxxx0xxxxx1xxxx
+                                         blraaz.  */
+                                      return 643;
                                     }
                                 }
-                            }
-                          else
-                            {
-                              if (((word >> 21) & 0x1) == 0)
+                              else
                                 {
-                                  if (((word >> 22) & 0x1) == 0)
+                                  if (((word >> 21) & 0x1) == 0)
                                     {
-                                      if (((word >> 23) & 0x1) == 0)
+                                      if (((word >> 22) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxxxxxxxx0000110101x
-                                             br.  */
-                                          return 629;
+                                          if (((word >> 23) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x10101x0000xxxxxxxxxx1xxxxx1xxxx
+                                                 brabz.  */
+                                              return 642;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x10101x0100xxxxxxxxxx1xxxxx1xxxx
+                                                 eretab.  */
+                                              return 648;
+                                            }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxxxxxxxx0010110101x
-                                             eret.  */
-                                          return 632;
+                                             x10101x0x10xxxxxxxxxx1xxxxx1xxxx
+                                             retab.  */
+                                          return 646;
                                         }
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx01x0110101x
-                                         ret.  */
-                                      return 631;
+                                         x10101x0xx1xxxxxxxxxx1xxxxx1xxxx
+                                         blrabz.  */
+                                      return 644;
                                     }
                                 }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 21) & 0x1) == 0)
+                            {
+                              if (((word >> 25) & 0x1) == 0)
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     x1010101xx0xxxxxxxxxxxxxxxxxxxxx
+                                     msr.  */
+                                  return 1157;
+                                }
                               else
                                 {
-                                  if (((word >> 23) & 0x1) == 0)
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx1x00110101x
-                                         blr.  */
-                                      return 630;
+                                         x1010111xx0xxxxxxxxxx0xxxxxxxxxx
+                                         braa.  */
+                                      return 637;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx1x10110101x
-                                         drps.  */
-                                      return 633;
+                                         x1010111xx0xxxxxxxxxx1xxxxxxxxxx
+                                         brab.  */
+                                      return 638;
                                     }
                                 }
                             }
-                        }
-                      else
-                        {
-                          if (((word >> 21) & 0x1) == 0)
-                            {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxx0xx1x10101x
-                                 msr.  */
-                              return 1117;
-                            }
                           else
                             {
-                              /* 33222222222211111111110000000000
-                                 10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxx1xx1x10101x
-                                 sysl.  */
-                              return 1142;
+                              if (((word >> 25) & 0x1) == 0)
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     x1010101xx1xxxxxxxxxxxxxxxxxxxxx
+                                     sysl.  */
+                                  return 1183;
+                                }
+                              else
+                                {
+                                  if (((word >> 10) & 0x1) == 0)
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x1010111xx1xxxxxxxxxx0xxxxxxxxxx
+                                         blraa.  */
+                                      return 639;
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         x1010111xx1xxxxxxxxxx1xxxxxxxxxx
+                                         blrab.  */
+                                      return 640;
+                                    }
+                                }
                             }
                         }
                     }
@@ -11086,17 +12087,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx001011xx
+                             xx110100xxxxxxxxxxxxxxxxxxxxxxxx
                              cbz.  */
-                          return 634;
+                          return 649;
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx011011xx
+                             xx110110xxxxxxxxxxxxxxxxxxxxxxxx
                              tbz.  */
-                          return 1152;
+                          return 1193;
                         }
                     }
                   else
@@ -11105,17 +12106,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx101011xx
+                             xx110101xxxxxxxxxxxxxxxxxxxxxxxx
                              cbnz.  */
-                          return 635;
+                          return 650;
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx111011xx
+                             xx110111xxxxxxxxxxxxxxxxxxxxxxxx
                              tbnz.  */
-                          return 1153;
+                          return 1194;
                         }
                     }
                 }
@@ -11137,17 +12138,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx00001100xx
+                                     xx00110000xxxxxxxxxxxxxxxxxxxxxx
                                      st4.  */
-                                  return 431;
+                                  return 434;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx00001101xx
+                                     xx10110000xxxxxxxxxxxxxxxxxxxxxx
                                      stnp.  */
-                                  return 903;
+                                  return 943;
                                 }
                             }
                           else
@@ -11160,17 +12161,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0xxxxxxx000101100xx
+                                             xx001101000xxxxxxx0xxxxxxxxxxxxx
                                              st1.  */
-                                          return 447;
+                                          return 450;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0xxxxxxx100101100xx
+                                             xx001101001xxxxxxx0xxxxxxxxxxxxx
                                              st2.  */
-                                          return 449;
+                                          return 452;
                                         }
                                     }
                                   else
@@ -11179,17 +12180,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx1xxxxxxx000101100xx
+                                             xx001101000xxxxxxx1xxxxxxxxxxxxx
                                              st3.  */
-                                          return 448;
+                                          return 451;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx1xxxxxxx100101100xx
+                                             xx001101001xxxxxxx1xxxxxxxxxxxxx
                                              st4.  */
-                                          return 450;
+                                          return 453;
                                         }
                                     }
                                 }
@@ -11197,9 +12198,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx00101101xx
+                                     xx10110100xxxxxxxxxxxxxxxxxxxxxx
                                      stp.  */
-                                  return 907;
+                                  return 947;
                                 }
                             }
                         }
@@ -11213,9 +12214,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx001001100xx
+                                         xx001100100xxxxxxxxxxxxxxxxxxxxx
                                          st4.  */
-                                      return 439;
+                                      return 442;
                                     }
                                   else
                                     {
@@ -11223,17 +12224,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0xxxxxxx001101100xx
+                                             xx001101100xxxxxxx0xxxxxxxxxxxxx
                                              st1.  */
-                                          return 459;
+                                          return 462;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx1xxxxxxx001101100xx
+                                             xx001101100xxxxxxx1xxxxxxxxxxxxx
                                              st3.  */
-                                          return 460;
+                                          return 463;
                                         }
                                     }
                                 }
@@ -11243,17 +12244,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxx0xxxxxxx101x01100xx
+                                         xx00110x101xxxxxxx0xxxxxxxxxxxxx
                                          st2.  */
-                                      return 461;
+                                      return 464;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxx1xxxxxxx101x01100xx
+                                         xx00110x101xxxxxxx1xxxxxxxxxxxxx
                                          st4.  */
-                                      return 462;
+                                      return 465;
                                     }
                                 }
                             }
@@ -11261,9 +12262,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxx01x01101xx
+                                 xx10110x10xxxxxxxxxxxxxxxxxxxxxx
                                  stp.  */
-                              return 912;
+                              return 952;
                             }
                         }
                     }
@@ -11277,17 +12278,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx10001100xx
+                                     xx00110001xxxxxxxxxxxxxxxxxxxxxx
                                      ld4.  */
-                                  return 435;
+                                  return 438;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx10001101xx
+                                     xx10110001xxxxxxxxxxxxxxxxxxxxxx
                                      ldnp.  */
-                                  return 904;
+                                  return 944;
                                 }
                             }
                           else
@@ -11300,17 +12301,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0xxxxxxx010101100xx
+                                             xx001101010xxxxxxx0xxxxxxxxxxxxx
                                              ld1.  */
-                                          return 451;
+                                          return 454;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0xxxxxxx110101100xx
+                                             xx001101011xxxxxxx0xxxxxxxxxxxxx
                                              ld2.  */
-                                          return 455;
+                                          return 458;
                                         }
                                     }
                                   else
@@ -11319,17 +12320,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx1xxxxxxx010101100xx
+                                             xx001101010xxxxxxx1xxxxxxxxxxxxx
                                              ld3.  */
-                                          return 452;
+                                          return 455;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx1xxxxxxx110101100xx
+                                             xx001101011xxxxxxx1xxxxxxxxxxxxx
                                              ld4.  */
-                                          return 456;
+                                          return 459;
                                         }
                                     }
                                 }
@@ -11337,9 +12338,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxxxxxxxxxxxxxx10101101xx
+                                     xx10110101xxxxxxxxxxxxxxxxxxxxxx
                                      ldp.  */
-                                  return 908;
+                                  return 948;
                                 }
                             }
                         }
@@ -11353,9 +12354,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxxxxxxxx011001100xx
+                                         xx001100110xxxxxxxxxxxxxxxxxxxxx
                                          ld4.  */
-                                      return 443;
+                                      return 446;
                                     }
                                   else
                                     {
@@ -11363,17 +12364,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx0xxxxxxx011101100xx
+                                             xx001101110xxxxxxx0xxxxxxxxxxxxx
                                              ld1.  */
-                                          return 463;
+                                          return 466;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxx1xxxxxxx011101100xx
+                                             xx001101110xxxxxxx1xxxxxxxxxxxxx
                                              ld3.  */
-                                          return 464;
+                                          return 467;
                                         }
                                     }
                                 }
@@ -11383,17 +12384,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxx0xxxxxxx111x01100xx
+                                         xx00110x111xxxxxxx0xxxxxxxxxxxxx
                                          ld2.  */
-                                      return 467;
+                                      return 470;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxx1xxxxxxx111x01100xx
+                                         xx00110x111xxxxxxx1xxxxxxxxxxxxx
                                          ld4.  */
-                                      return 468;
+                                      return 471;
                                     }
                                 }
                             }
@@ -11401,9 +12402,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                             {
                               /* 33222222222211111111110000000000
                                  10987654321098765432109876543210
-                                 xxxxxxxxxxxxxxxxxxxxxx11x01101xx
+                                 xx10110x11xxxxxxxxxxxxxxxxxxxxxx
                                  ldp.  */
-                              return 913;
+                              return 953;
                             }
                         }
                     }
@@ -11416,9 +12417,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxxxx001110xx
+                             xx011100xxxxxxxxxxxxxxxxxxxxxxxx
                              ldr.  */
-                          return 916;
+                          return 956;
                         }
                       else
                         {
@@ -11430,17 +12431,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx00xxxxxxxxxx0x001111xx
+                                         xx111100x0xxxxxxxxxx00xxxxxxxxxx
                                          stur.  */
-                                      return 864;
+                                      return 899;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx00xxxxxxxxxx1x001111xx
+                                         xx111100x1xxxxxxxxxx00xxxxxxxxxx
                                          ldur.  */
-                                      return 865;
+                                      return 900;
                                     }
                                 }
                               else
@@ -11449,17 +12450,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx01xxxxxxxxxx0x001111xx
+                                         xx111100x0xxxxxxxxxx10xxxxxxxxxx
                                          str.  */
-                                      return 843;
+                                      return 878;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx01xxxxxxxxxx1x001111xx
+                                         xx111100x1xxxxxxxxxx10xxxxxxxxxx
                                          ldr.  */
-                                      return 844;
+                                      return 879;
                                     }
                                 }
                             }
@@ -11469,17 +12470,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxx1xxxxxxxxxxx0x001111xx
+                                     xx111100x0xxxxxxxxxxx1xxxxxxxxxx
                                      str.  */
-                                  return 820;
+                                  return 855;
                                 }
                               else
                                 {
                                   /* 33222222222211111111110000000000
                                      10987654321098765432109876543210
-                                     xxxxxxxxxx1xxxxxxxxxxx1x001111xx
+                                     xx111100x1xxxxxxxxxxx1xxxxxxxxxx
                                      ldr.  */
-                                  return 821;
+                                  return 856;
                                 }
                             }
                         }
@@ -11490,17 +12491,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxx0x10111xxx
+                             xxx11101x0xxxxxxxxxxxxxxxxxxxxxx
                              str.  */
-                          return 831;
+                          return 866;
                         }
                       else
                         {
                           /* 33222222222211111111110000000000
                              10987654321098765432109876543210
-                             xxxxxxxxxxxxxxxxxxxxxx1x10111xxx
+                             xxx11101x1xxxxxxxxxxxxxxxxxxxxxx
                              ldr.  */
-                          return 832;
+                          return 867;
                         }
                     }
                 }
@@ -11513,448 +12514,591 @@ aarch64_opcode_lookup_1 (uint32_t word)
                     {
                       if (((word >> 28) & 0x1) == 0)
                         {
-                          if (((word >> 10) & 0x1) == 0)
+                          if (((word >> 29) & 0x1) == 0)
                             {
-                              if (((word >> 29) & 0x1) == 0)
+                              if (((word >> 31) & 0x1) == 0)
                                 {
-                                  if (((word >> 11) & 0x1) == 0)
-                                    {
-                                      if (((word >> 12) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx000xxxxxxxx0xx011100xx
-                                             tbl.  */
-                                          return 411;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx001xxxxxxxx0xx011100xx
-                                             tbx.  */
-                                          return 412;
-                                        }
-                                    }
-                                  else
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
-                                      if (((word >> 12) & 0x1) == 0)
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx010x0xxxxxx0xx011100xx
-                                                 trn1.  */
-                                              return 256;
+                                                 0x001110xx0xxxxxxxx000xxxxxxxxxx
+                                                 tbl.  */
+                                              return 414;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx010x1xxxxxx0xx011100xx
-                                                 trn2.  */
-                                              return 259;
+                                                 0x001110xx0xxxxxxxx100xxxxxxxxxx
+                                                 tbx.  */
+                                              return 415;
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 13) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
                                               if (((word >> 14) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01100xxxxxx0xx011100xx
-                                                     uzp1.  */
-                                                  return 255;
+                                                     0x001110xx0xxxxxx0x010xxxxxxxxxx
+                                                     trn1.  */
+                                                  return 257;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx01101xxxxxx0xx011100xx
-                                                     uzp2.  */
-                                                  return 258;
+                                                     0x001110xx0xxxxxx1x010xxxxxxxxxx
+                                                     trn2.  */
+                                                  return 260;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 14) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx01110xxxxxx0xx011100xx
-                                                     zip1.  */
-                                                  return 257;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxxx00110xxxxxxxxxx
+                                                         uzp1.  */
+                                                      return 256;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxxx10110xxxxxxxxxx
+                                                         uzp2.  */
+                                                      return 259;
+                                                    }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx01111xxxxxx0xx011100xx
-                                                     zip2.  */
-                                                  return 260;
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxxx01110xxxxxxxxxx
+                                                         zip1.  */
+                                                      return 258;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110xx0xxxxxx11110xxxxxxxxxx
+                                                         zip2.  */
+                                                      return 261;
+                                                    }
                                                 }
                                             }
                                         }
                                     }
-                                }
-                              else
-                                {
-                                  /* 33222222222211111111110000000000
-                                     10987654321098765432109876543210
-                                     xxxxxxxxxx0xxxxxxxxxx0xx011101xx
-                                     ext.  */
-                                  return 129;
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 15) & 0x1) == 0)
-                                {
-                                  if (((word >> 22) & 0x1) == 0)
+                                  else
                                     {
-                                      if (((word >> 29) & 0x1) == 0)
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          if (((word >> 11) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx10xxx0xxxxx00x011100xx
-                                                 dup.  */
-                                              return 146;
-                                            }
-                                          else
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 12) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 13) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1100x0xxxxx00x011100xx
+                                                         0x001110x00xxxxxxx0001xxxxxxxxxx
                                                          dup.  */
                                                       return 147;
                                                     }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110010xxxxxxx0001xxxxxxxxxx
+                                                             fmaxnm.  */
+                                                          return 286;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110110xxxxxxx0001xxxxxxxxxx
+                                                             fminnm.  */
+                                                          return 302;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     0x001110xx0xxxxxxx1001xxxxxxxxxx
+                                                     fcmeq.  */
+                                                  return 294;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 15) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x0011100x0xxxxx0x0101xxxxxxxxxx
+                                                             fadd.  */
+                                                          return 290;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x0011101x0xxxxx0x0101xxxxxxxxxx
+                                                             fsub.  */
+                                                          return 306;
+                                                        }
+                                                    }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1101x0xxxxx00x011100xx
-                                                         smov.  */
-                                                      return 148;
+                                                         0x001110xx0xxxxx1x0101xxxxxxxxxx
+                                                         sdot.  */
+                                                      return 2004;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 13) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1110x0xxxxx00x011100xx
-                                                         ins.  */
-                                                      return 151;
+                                                         0x0011100x0xxxxxxx1101xxxxxxxxxx
+                                                         fmax.  */
+                                                      return 296;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1111x0xxxxx00x011100xx
-                                                         umov.  */
-                                                      return 149;
+                                                         0x0011101x0xxxxxxx1101xxxxxxxxxx
+                                                         fmin.  */
+                                                      return 308;
                                                     }
                                                 }
                                             }
                                         }
                                       else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx1xxxx0xxxxx00x011101xx
-                                             ins.  */
-                                          return 153;
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 11) & 0x1) == 0)
                                         {
                                           if (((word >> 12) & 0x1) == 0)
                                             {
                                               if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 22) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110x00xxxxxxx0011xxxxxxxxxx
+                                                         dup.  */
+                                                      return 148;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1000x0xxxxx010011100xx
-                                                             fmaxnm.  */
-                                                          return 285;
+                                                             0x001110010xxxxxxx0011xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 288;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1000x0xxxxx010011101xx
-                                                             fmaxnmp.  */
-                                                          return 336;
+                                                             0x001110110xxxxxxx0011xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 304;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     0x001110xx0xxxxxxx1011xxxxxxxxxx
+                                                     smov.  */
+                                                  return 149;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110x00xxxxxxx0111xxxxxxxxxx
+                                                         ins.  */
+                                                      return 152;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110x10xxxxxxx0111xxxxxxxxxx
+                                                         fmulx.  */
+                                                      return 292;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         0x001110x00xxxxxxx1111xxxxxxxxxx
+                                                         umov.  */
+                                                      return 150;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 23) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110010xxxxxxx1111xxxxxxxxxx
+                                                             frecps.  */
+                                                          return 298;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110110xxxxxxx1111xxxxxxxxxx
+                                                             frsqrts.  */
+                                                          return 310;
                                                         }
                                                     }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 22) & 0x1) == 0)
+                                    {
+                                      if (((word >> 23) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1x001110000xxxxxxxxxxxxxxxxxxxxx
+                                             eor3.  */
+                                          return 2011;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1x001110100xxxxxxxxxxxxxxxxxxxxx
+                                             xar.  */
+                                          return 2013;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 15) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             1x001110x10xxxxx0xxxxxxxxxxxxxxx
+                                             sm3ss1.  */
+                                          return 2015;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 10) & 0x1) == 0)
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110010xxxxx1xxx00xxxxxxxxxx
+                                                         sm3tt1a.  */
+                                                      return 2016;
+                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx1000x0xxxxx011011100xx
-                                                             fminnm.  */
-                                                          return 301;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx1000x0xxxxx011011101xx
-                                                             fminnmp.  */
-                                                          return 352;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110110xxxxx1xxx00xxxxxxxxxx
+                                                         sha512su0.  */
+                                                      return 2009;
                                                     }
                                                 }
                                               else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     1x001110x10xxxxx1xxx10xxxxxxxxxx
+                                                     sm3tt2a.  */
+                                                  return 2018;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx1001x0xxxxx010011100xx
-                                                             fcmeq.  */
-                                                          return 293;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx1001x0xxxxx010011101xx
-                                                             fcmge.  */
-                                                          return 342;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         1x001110010xxxxx1xxx01xxxxxxxxxx
+                                                         sm3tt1b.  */
+                                                      return 2017;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1001x0xxxxx01101110xxx
-                                                         fcmgt.  */
-                                                      return 356;
+                                                         1x001110110xxxxx1xxx01xxxxxxxxxx
+                                                         sm4e.  */
+                                                      return 2022;
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     1x001110x10xxxxx1xxx11xxxxxxxxxx
+                                                     sm3tt2b.  */
+                                                  return 2019;
+                                                }
                                             }
-                                          else
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 10) & 0x1) == 0)
+                                {
+                                  /* 33222222222211111111110000000000
+                                     10987654321098765432109876543210
+                                     xx101110xx0xxxxxxxxxx0xxxxxxxxxx
+                                     ext.  */
+                                  return 130;
+                                }
+                              else
+                                {
+                                  if (((word >> 15) & 0x1) == 0)
+                                    {
+                                      if (((word >> 22) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx101110x00xxxxx0xxxx1xxxxxxxxxx
+                                             ins.  */
+                                          return 154;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 11) & 0x1) == 0)
                                             {
-                                              if (((word >> 13) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1010x0xxxxx010011100xx
-                                                             fadd.  */
-                                                          return 289;
+                                                             xx101110010xxxxx0x0001xxxxxxxxxx
+                                                             fmaxnmp.  */
+                                                          return 337;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1010x0xxxxx010011101xx
-                                                             faddp.  */
-                                                          return 338;
+                                                             xx101110110xxxxx0x0001xxxxxxxxxx
+                                                             fminnmp.  */
+                                                          return 353;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1010x0xxxxx011011100xx
-                                                             fsub.  */
-                                                          return 305;
+                                                             xx101110010xxxxx0x1001xxxxxxxxxx
+                                                             fcmge.  */
+                                                          return 343;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1010x0xxxxx011011101xx
-                                                             fabd.  */
-                                                          return 354;
+                                                             xx101110110xxxxx0x1001xxxxxxxxxx
+                                                             fcmgt.  */
+                                                          return 357;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1011x0xxxxx010011100xx
-                                                             fmax.  */
-                                                          return 295;
+                                                             xx101110010xxxxx0x0101xxxxxxxxxx
+                                                             faddp.  */
+                                                          return 339;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1011x0xxxxx010011101xx
-                                                             fmaxp.  */
-                                                          return 346;
+                                                             xx101110110xxxxx0x0101xxxxxxxxxx
+                                                             fabd.  */
+                                                          return 355;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 23) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1011x0xxxxx011011100xx
-                                                             fmin.  */
-                                                          return 307;
+                                                             xx101110010xxxxx0x1101xxxxxxxxxx
+                                                             fmaxp.  */
+                                                          return 347;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx1011x0xxxxx011011101xx
+                                                             xx101110110xxxxx0x1101xxxxxxxxxx
                                                              fminp.  */
-                                                          return 360;
+                                                          return 361;
                                                         }
                                                     }
                                                 }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 12) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 13) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
                                                   if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1100x0xxxxx01001110xxx
-                                                         fmla.  */
-                                                      return 287;
+                                                         xx101110010xxxxx0xx011xxxxxxxxxx
+                                                         facge.  */
+                                                      return 345;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1100x0xxxxx01101110xxx
-                                                         fmls.  */
-                                                      return 303;
+                                                         xx101110110xxxxx0xx011xxxxxxxxxx
+                                                         facgt.  */
+                                                      return 359;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1101x0xxxxx01001110xxx
-                                                         facge.  */
-                                                      return 344;
+                                                         xx101110x10xxxxx0x0111xxxxxxxxxx
+                                                         fmul.  */
+                                                      return 341;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1101x0xxxxx01101110xxx
-                                                         facgt.  */
-                                                      return 358;
+                                                         xx101110x10xxxxx0x1111xxxxxxxxxx
+                                                         fdiv.  */
+                                                      return 349;
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              if (((word >> 13) & 0x1) == 0)
+                                              if (((word >> 11) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 12) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1110x0xxxxx01x011100xx
-                                                         fmulx.  */
-                                                      return 291;
+                                                         xx101110xx0xxxxx100001xxxxxxxxxx
+                                                         sqrdmlah.  */
+                                                      return 364;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1110x0xxxxx01x011101xx
-                                                         fmul.  */
-                                                      return 340;
+                                                         xx101110xx0xxxxx100101xxxxxxxxxx
+                                                         udot.  */
+                                                      return 2003;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx1111x0xxxxx010011100xx
-                                                             frecps.  */
-                                                          return 297;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx1111x0xxxxx010011101xx
-                                                             fdiv.  */
-                                                          return 348;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx1111x0xxxxx01101110xxx
-                                                         frsqrts.  */
-                                                      return 309;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx101110xx0xxxxx100x11xxxxxxxxxx
+                                                     sqrdmlsh.  */
+                                                  return 365;
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101110xx0xxxxx110xx1xxxxxxxxxx
+                                                 fcmla.  */
+                                              return 366;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx101110xx0xxxxx1x1xx1xxxxxxxxxx
+                                             fcadd.  */
+                                          return 367;
                                         }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 11) & 0x1) == 0)
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxx10xxx1xxxxx0xx01110xxx
-                                         sqrdmlah.  */
-                                      return 363;
-                                    }
-                                  else
-                                    {
-                                      /* 33222222222211111111110000000000
-                                         10987654321098765432109876543210
-                                         xxxxxxxxxx11xxx1xxxxx0xx01110xxx
-                                         sqrdmlsh.  */
-                                      return 364;
                                     }
                                 }
                             }
@@ -11971,17 +13115,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxxx00xxx0xx0111100x
+                                             x0011110xx0xxx00xxxxxxxxxxxxxxxx
                                              fcvtzs.  */
-                                          return 718;
+                                          return 752;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxxx01xxx0xx0111100x
+                                             x0011110xx0xxx10xxxxxxxxxxxxxxxx
                                              scvtf.  */
-                                          return 714;
+                                          return 748;
                                         }
                                     }
                                   else
@@ -11990,17 +13134,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxxx10xxx0xx0111100x
+                                             x0011110xx0xxx01xxxxxxxxxxxxxxxx
                                              fcvtzu.  */
-                                          return 720;
+                                          return 754;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxxxxxx11xxx0xx0111100x
+                                             x0011110xx0xxx11xxxxxxxxxxxxxxxx
                                              ucvtf.  */
-                                          return 716;
+                                          return 750;
                                         }
                                     }
                                 }
@@ -12016,17 +13160,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x000xxxxxx0xx0111101x
+                                                     x1011110xx0xxxxxx000x0xxxxxxxxxx
                                                      sha1c.  */
-                                                  return 657;
+                                                  return 672;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x001xxxxxx0xx0111101x
+                                                     x1011110xx0xxxxxx100x0xxxxxxxxxx
                                                      sha256h.  */
-                                                  return 661;
+                                                  return 676;
                                                 }
                                             }
                                           else
@@ -12035,17 +13179,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x010xxxxxx0xx0111101x
+                                                     x1011110xx0xxxxxx010x0xxxxxxxxxx
                                                      sha1m.  */
-                                                  return 659;
+                                                  return 674;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x011xxxxxx0xx0111101x
+                                                     x1011110xx0xxxxxx110x0xxxxxxxxxx
                                                      sha256su1.  */
-                                                  return 663;
+                                                  return 678;
                                                 }
                                             }
                                         }
@@ -12057,26 +13201,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x100xxxxxx0xx0111101x
+                                                     x1011110xx0xxxxxx001x0xxxxxxxxxx
                                                      sha1p.  */
-                                                  return 658;
+                                                  return 673;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x101xxxxxx0xx0111101x
+                                                     x1011110xx0xxxxxx101x0xxxxxxxxxx
                                                      sha256h2.  */
-                                                  return 662;
+                                                  return 677;
                                                 }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0x11xxxxxxx0xx0111101x
+                                                 x1011110xx0xxxxxxx11x0xxxxxxxxxx
                                                  sha1su0.  */
-                                              return 660;
+                                              return 675;
                                             }
                                         }
                                     }
@@ -12088,17 +13232,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx10x0xxxxxxx0xx0111101x
+                                                 x1011110xx0xxxxxxx0x01xxxxxxxxxx
                                                  dup.  */
-                                              return 526;
+                                              return 529;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx10x1xxxxxxx0xx0111101x
+                                                 x1011110xx0xxxxxxx1x01xxxxxxxxxx
                                                  fcmeq.  */
-                                              return 547;
+                                              return 550;
                                             }
                                         }
                                       else
@@ -12107,9 +13251,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx11x0xxxxxxx0xx0111101x
+                                                 x1011110xx0xxxxxxx0x11xxxxxxxxxx
                                                  fmulx.  */
-                                              return 545;
+                                              return 548;
                                             }
                                           else
                                             {
@@ -12117,17 +13261,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx11x1xxxxxxx0x00111101x
+                                                     x10111100x0xxxxxxx1x11xxxxxxxxxx
                                                      frecps.  */
-                                                  return 549;
+                                                  return 552;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx11x1xxxxxxx0x10111101x
+                                                     x10111101x0xxxxxxx1x11xxxxxxxxxx
                                                      frsqrts.  */
-                                                  return 551;
+                                                  return 554;
                                                 }
                                             }
                                         }
@@ -12144,9 +13288,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxx000xxxxxxx0xx011111xx
+                                             xx111110xx0xxxxxxx000xxxxxxxxxxx
                                              sqrdmlah.  */
-                                          return 579;
+                                          return 582;
                                         }
                                       else
                                         {
@@ -12154,17 +13298,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxx001xxxxxxx0x0011111xx
+                                                 xx1111100x0xxxxxxx100xxxxxxxxxxx
                                                  fcmge.  */
-                                              return 564;
+                                              return 567;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxxx001xxxxxxx0x1011111xx
+                                                 xx1111101x0xxxxxxx100xxxxxxxxxxx
                                                  fcmgt.  */
-                                              return 570;
+                                              return 573;
                                             }
                                         }
                                     }
@@ -12172,9 +13316,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxx01xxxxxxxx0xx011111xx
+                                         xx111110xx0xxxxxxxx10xxxxxxxxxxx
                                          fabd.  */
-                                      return 568;
+                                      return 571;
                                     }
                                 }
                               else
@@ -12183,9 +13327,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxx1x0xxxxxxx0xx011111xx
+                                         xx111110xx0xxxxxxx0x1xxxxxxxxxxx
                                          sqrdmlsh.  */
-                                      return 580;
+                                      return 583;
                                     }
                                   else
                                     {
@@ -12193,17 +13337,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxx1x1xxxxxxx0x0011111xx
+                                             xx1111100x0xxxxxxx1x1xxxxxxxxxxx
                                              facge.  */
-                                          return 566;
+                                          return 569;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxx1x1xxxxxxx0x1011111xx
+                                             xx1111101x0xxxxxxx1x1xxxxxxxxxxx
                                              facgt.  */
-                                          return 572;
+                                          return 575;
                                         }
                                     }
                                 }
@@ -12212,2284 +13356,1943 @@ aarch64_opcode_lookup_1 (uint32_t word)
                     }
                   else
                     {
-                      if (((word >> 10) & 0x1) == 0)
+                      if (((word >> 28) & 0x1) == 0)
                         {
-                          if (((word >> 11) & 0x1) == 0)
-                            {
-                              if (((word >> 12) & 0x1) == 0)
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000000xxxxx1xx0111000x
-                                                             saddl.  */
-                                                          return 42;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000000xxxxx1xx0111001x
-                                                             saddl2.  */
-                                                          return 43;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000000xxxxx1xx0111010x
-                                                             uaddl.  */
-                                                          return 74;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000000xxxxx1xx0111011x
-                                                             uaddl2.  */
-                                                          return 75;
-                                                        }
-                                                    }
-                                                }
-                                              else
+                          if (((word >> 15) & 0x1) == 0)
+                            {
+                              if (((word >> 29) & 0x1) == 0)
+                                {
+                                  if (((word >> 31) & 0x1) == 0)
+                                    {
+                                      if (((word >> 10) & 0x1) == 0)
+                                        {
+                                          if (((word >> 11) & 0x1) == 0)
+                                            {
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 17) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000000001xx01111xxx
-                                                                         fcvtns.  */
-                                                                      return 722;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000000011xx01111xxx
-                                                                         fcvtms.  */
-                                                                      return 742;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000000101xx01111xxx
-                                                                         fcvtps.  */
-                                                                      return 738;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000000111xx01111xxx
-                                                                         fcvtzs.  */
-                                                                      return 746;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx000000001xx1xx01111xxx
-                                                                 fcvtas.  */
-                                                              return 730;
-                                                            }
-                                                        }
-                                                      else
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000000010xx1xx01111xxx
-                                                                 scvtf.  */
-                                                              return 726;
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0000000110x1xx01111xxx
-                                                                     fmov.  */
-                                                                  return 734;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0000000111x1xx01111xxx
-                                                                     fmov.  */
-                                                                  return 750;
-                                                                }
-                                                            }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 17) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 18) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000100001xx01111xxx
-                                                                         fcvtnu.  */
-                                                                      return 724;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000100011xx01111xxx
-                                                                         fcvtmu.  */
-                                                                      return 744;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 20) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000100101xx01111xxx
-                                                                         fcvtpu.  */
-                                                                      return 740;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx000000100111xx01111xxx
-                                                                         fcvtzu.  */
-                                                                      return 748;
-                                                                    }
-                                                                }
+                                                                 00001110xx1xxxxx000000xxxxxxxxxx
+                                                                 saddl.  */
+                                                              return 42;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000000101xx1xx01111xxx
-                                                                 fcvtau.  */
-                                                              return 732;
+                                                                 01001110xx1xxxxx000000xxxxxxxxxx
+                                                                 saddl2.  */
+                                                              return 43;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000000110xx1xx01111xxx
-                                                                 ucvtf.  */
-                                                              return 728;
+                                                                 00001110xx1xxxxx010000xxxxxxxxxx
+                                                                 addhn.  */
+                                                              return 50;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 19) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0000001110x1xx01111xxx
-                                                                     fmov.  */
-                                                                  return 736;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0000001111x1xx01111xxx
-                                                                     fmov.  */
-                                                                  return 751;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx010000xxxxxxxxxx
+                                                                 addhn2.  */
+                                                              return 51;
                                                             }
                                                         }
                                                     }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 29) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000001xxxxx1xx0111x00x
-                                                         smlal.  */
-                                                      return 58;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000001xxxxx1xx0111x01x
-                                                         smlal2.  */
-                                                      return 59;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000001xxxxx1xx0111x10x
-                                                         umlal.  */
-                                                      return 90;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000001xxxxx1xx0111x11x
-                                                         umlal2.  */
-                                                      return 91;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 28) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000010xxxxx1xx0111000x
-                                                             addhn.  */
-                                                          return 50;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000010xxxxx1xx0111001x
-                                                             addhn2.  */
-                                                          return 51;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000010xxxxx1xx0111010x
-                                                             raddhn.  */
-                                                          return 82;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000010xxxxx1xx0111011x
-                                                             raddhn2.  */
-                                                          return 83;
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000011xxxxx1xx0111000x
-                                                             smull.  */
-                                                          return 66;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000011xxxxx1xx0111001x
-                                                             smull2.  */
-                                                          return 67;
-                                                        }
-                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000011xxxxx1xx0111010x
-                                                             umull.  */
-                                                          return 94;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000011xxxxx1xx0111011x
-                                                             umull2.  */
-                                                          return 95;
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 17) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 15) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010000xx1xx01111xxx
-                                                                 fmov.  */
-                                                              return 764;
+                                                                 00001110xx1xxxxx001000xxxxxxxxxx
+                                                                 ssubl.  */
+                                                              return 46;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010001xx1xx01111xxx
-                                                                 frintn.  */
-                                                              return 773;
+                                                                 01001110xx1xxxxx001000xxxxxxxxxx
+                                                                 ssubl2.  */
+                                                              return 47;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010100xx1xx01111xxx
-                                                                 fneg.  */
-                                                              return 768;
+                                                                 00001110xx1xxxxx011000xxxxxxxxxx
+                                                                 subhn.  */
+                                                              return 54;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010101xx1xx01111xxx
-                                                                 frintm.  */
-                                                              return 777;
+                                                                 01001110xx1xxxxx011000xxxxxxxxxx
+                                                                 subhn2.  */
+                                                              return 55;
                                                             }
                                                         }
                                                     }
-                                                  else
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 16) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000011000xx1xx01111xxx
-                                                                 fabs.  */
-                                                              return 766;
+                                                                 00001110xx1xxxxx000100xxxxxxxxxx
+                                                                 saddw.  */
+                                                              return 44;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000011001xx1xx01111xxx
-                                                                 frintp.  */
-                                                              return 775;
+                                                                 01001110xx1xxxxx000100xxxxxxxxxx
+                                                                 saddw2.  */
+                                                              return 45;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 18) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000011100xx1xx01111xxx
-                                                                 fsqrt.  */
-                                                              return 770;
+                                                                 00001110xx1xxxxx010100xxxxxxxxxx
+                                                                 sabal.  */
+                                                              return 52;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000011101xx1xx01111xxx
-                                                                 frintz.  */
-                                                              return 779;
+                                                                 01001110xx1xxxxx010100xxxxxxxxxx
+                                                                 sabal2.  */
+                                                              return 53;
                                                             }
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 18) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00001xx10xx1xx01111xxx
-                                                         fcvt.  */
-                                                      return 772;
-                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 15) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 16) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010011xx1xx01111xxx
-                                                                 frinta.  */
-                                                              return 781;
+                                                                 00001110xx1xxxxx001100xxxxxxxxxx
+                                                                 ssubw.  */
+                                                              return 48;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx000010111xx1xx01111xxx
-                                                                 frintx.  */
-                                                              return 783;
+                                                                 01001110xx1xxxxx001100xxxxxxxxxx
+                                                                 ssubw2.  */
+                                                              return 49;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000011x11xx1xx01111xxx
-                                                             frinti.  */
-                                                          return 785;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 00001110xx1xxxxx011100xxxxxxxxxx
+                                                                 sabdl.  */
+                                                              return 56;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 01001110xx1xxxxx011100xxxxxxxxxx
+                                                                 sabdl2.  */
+                                                              return 57;
+                                                            }
                                                         }
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx000100xxxxx1xx0111000x
-                                                             ssubl.  */
-                                                          return 46;
+                                                             0x001110xx1xxxxx000010xxxxxxxxxx
+                                                             rev64.  */
+                                                          return 156;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000100xxxxx1xx0111001x
-                                                             ssubl2.  */
-                                                          return 47;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x0xx0010010xxxxxxxxxx
+                                                                     cls.  */
+                                                                  return 160;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x1xx0010010xxxxxxxxxx
+                                                                     aese.  */
+                                                                  return 665;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1010010xxxxxxxxxx
+                                                                     sqxtn.  */
+                                                                  return 170;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1010010xxxxxxxxxx
+                                                                     sqxtn2.  */
+                                                                  return 171;
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000100xxxxx1xx0111010x
-                                                             usubl.  */
-                                                          return 78;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1xxxx0001010xxxxxxxxxx
+                                                                 saddlp.  */
+                                                              return 158;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1001010xxxxxxxxxx
+                                                                     xtn.  */
+                                                                  return 168;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1001010xxxxxxxxxx
+                                                                     xtn2.  */
+                                                                  return 169;
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx000100xxxxx1xx0111011x
-                                                             usubl2.  */
-                                                          return 79;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x0xx0011010xxxxxxxxxx
+                                                                     sadalp.  */
+                                                                  return 162;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x1xx0011010xxxxxxxxxx
+                                                                     aesmc.  */
+                                                                  return 667;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1011010xxxxxxxxxx
+                                                                     fcvtn.  */
+                                                                  return 172;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1011010xxxxxxxxxx
+                                                                     fcvtn2.  */
+                                                                  return 173;
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 3) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 4) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxx00xxxxx000100xxxxx1xx01111xxx
-                                                             fcmp.  */
-                                                          return 756;
+                                                             0x001110xx1xxxxx000110xxxxxxxxxx
+                                                             rev16.  */
+                                                          return 157;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx01xxxxx000100xxxxx1xx01111xxx
-                                                             fcmpe.  */
-                                                          return 758;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1x0xxx010110xxxxxxxxxx
+                                                                 cnt.  */
+                                                              return 161;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1x1xxx010110xxxxxxxxxx
+                                                                 aesd.  */
+                                                              return 666;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 4) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx10xxxxx000100xxxxx1xx01111xxx
-                                                             fcmp.  */
-                                                          return 760;
-                                                        }
-                                                      else
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxx11xxxxx000100xxxxx1xx01111xxx
-                                                             fcmpe.  */
-                                                          return 762;
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx10xxxx001110xxxxxxxxxx
+                                                                 suqadd.  */
+                                                              return 159;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx11xxxx001110xxxxxxxxxx
+                                                                 saddlv.  */
+                                                              return 27;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x0xx0011110xxxxxxxxxx
+                                                                     sqabs.  */
+                                                                  return 163;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x001110xx1x1xx0011110xxxxxxxxxx
+                                                                     aesimc.  */
+                                                                  return 668;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 30) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     00001110xx1xxxx1011110xxxxxxxxxx
+                                                                     fcvtl.  */
+                                                                  return 174;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     01001110xx1xxxx1011110xxxxxxxxxx
+                                                                     fcvtl2.  */
+                                                                  return 175;
+                                                                }
+                                                            }
                                                         }
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 29) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000101xxxxx1xx0111x00x
-                                                         smlsl.  */
-                                                      return 62;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000101xxxxx1xx0111x01x
-                                                         smlsl2.  */
-                                                      return 63;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000101xxxxx1xx0111x10x
-                                                         umlsl.  */
-                                                      return 92;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000101xxxxx1xx0111x11x
-                                                         umlsl2.  */
-                                                      return 93;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 29) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000110xxxxx1xx0111x00x
-                                                         subhn.  */
-                                                      return 54;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000110xxxxx1xx0111x01x
-                                                         subhn2.  */
-                                                      return 55;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000110xxxxx1xx0111x10x
-                                                         rsubhn.  */
-                                                      return 86;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000110xxxxx1xx0111x11x
-                                                         rsubhn2.  */
-                                                      return 87;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 22) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000111xxxxx10x0111xx0x
-                                                         pmull.  */
-                                                      return 70;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000111xxxxx10x0111xx1x
-                                                         pmull2.  */
-                                                      return 72;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000111xxxxx11x0111xx0x
-                                                         pmull.  */
-                                                      return 71;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx000111xxxxx11x0111xx1x
-                                                         pmull2.  */
-                                                      return 73;
                                                     }
                                                 }
                                             }
                                         }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 28) & 0x1) == 0)
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      else
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 11) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001000xxxxx1xx0111000x
-                                                             saddw.  */
-                                                          return 44;
+                                                             0x001110xx1xxxxx000001xxxxxxxxxx
+                                                             shadd.  */
+                                                          return 262;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001000xxxxx1xx0111001x
-                                                             saddw2.  */
-                                                          return 45;
+                                                             0x001110xx1xxxxx010001xxxxxxxxxx
+                                                             sshl.  */
+                                                          return 269;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001000xxxxx1xx0111010x
-                                                             uaddw.  */
-                                                          return 76;
+                                                             0x001110xx1xxxxx001001xxxxxxxxxx
+                                                             shsub.  */
+                                                          return 265;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001000xxxxx1xx0111011x
-                                                             uaddw2.  */
-                                                          return 77;
+                                                             0x001110xx1xxxxx011001xxxxxxxxxx
+                                                             smax.  */
+                                                          return 273;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx001001xxxxx1xx01110x0x
-                                                         sqdmlal.  */
-                                                      return 60;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx001001xxxxx1xx01110x1x
-                                                         sqdmlal2.  */
-                                                      return 61;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001010xxxxx1xx0111000x
-                                                             sabal.  */
-                                                          return 52;
+                                                             0x001110xx1xxxxx000101xxxxxxxxxx
+                                                             srhadd.  */
+                                                          return 264;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001010xxxxx1xx0111001x
-                                                             sabal2.  */
-                                                          return 53;
+                                                             0x001110xx1xxxxx010101xxxxxxxxxx
+                                                             srshl.  */
+                                                          return 271;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001010xxxxx1xx0111010x
-                                                             uabal.  */
-                                                          return 84;
+                                                             0x001110xx1xxxxx001101xxxxxxxxxx
+                                                             cmgt.  */
+                                                          return 267;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001010xxxxx1xx0111011x
-                                                             uabal2.  */
-                                                          return 85;
+                                                             0x001110xx1xxxxx011101xxxxxxxxxx
+                                                             sabd.  */
+                                                          return 275;
                                                         }
                                                     }
                                                 }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx001011xxxxx1xx01110x0x
-                                                         sqdmull.  */
-                                                      return 68;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx001011xxxxx1xx01110x1x
-                                                         sqdmull2.  */
-                                                      return 69;
-                                                    }
-                                                }
                                             }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 12) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001100xxxxx1xx0111000x
-                                                             ssubw.  */
-                                                          return 48;
+                                                             0x001110xx1xxxxx000011xxxxxxxxxx
+                                                             sqadd.  */
+                                                          return 263;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001100xxxxx1xx0111001x
-                                                             ssubw2.  */
-                                                          return 49;
+                                                             0x001110xx1xxxxx010011xxxxxxxxxx
+                                                             sqshl.  */
+                                                          return 270;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001100xxxxx1xx0111010x
-                                                             usubw.  */
-                                                          return 80;
+                                                             0x001110xx1xxxxx001011xxxxxxxxxx
+                                                             sqsub.  */
+                                                          return 266;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx001100xxxxx1xx0111011x
-                                                             usubw2.  */
-                                                          return 81;
+                                                             0x001110xx1xxxxx011011xxxxxxxxxx
+                                                             smin.  */
+                                                          return 274;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx001101xxxxx1xx01110x0x
-                                                         sqdmlsl.  */
-                                                      return 64;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx001101xxxxx1xx01110x1x
-                                                         sqdmlsl2.  */
-                                                      return 65;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 29) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00111xxxxxx1xx0111000x
-                                                         sabdl.  */
-                                                      return 56;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00111xxxxxx1xx0111001x
-                                                         sabdl2.  */
-                                                      return 57;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00111xxxxxx1xx0111010x
-                                                         uabdl.  */
-                                                      return 88;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx00111xxxxxx1xx0111011x
-                                                         uabdl2.  */
-                                                      return 89;
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx001xxxxxxxx1xx01111x0x
-                                             fmov.  */
-                                          return 813;
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx00100xxxxxx1xx01111x1x
-                                                     sqdmlal.  */
-                                                  return 413;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx00101xxxxxx1xx01111x1x
-                                                     sqdmull.  */
-                                                  return 415;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0011xxxxxxx1xx01111x1x
-                                                 sqdmlsl.  */
-                                              return 414;
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 12) & 0x1) == 0)
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010000xxxxx1xx011100xx
-                                                         rev64.  */
-                                                      return 155;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010000xxxxx1xx011101xx
-                                                         rev32.  */
-                                                      return 206;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010000xxxxx1xx01111x0x
-                                                         fmul.  */
-                                                      return 787;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010000xxxxx1xx01111x1x
-                                                         sha1h.  */
-                                                      return 654;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0100010xxxx1xx011100xx
-                                                             cmgt.  */
-                                                          return 163;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0100010xxxx1xx011101xx
-                                                             cmge.  */
-                                                          return 212;
-                                                        }
-                                                    }
-                                                  else
+                                                  if (((word >> 13) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 22) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100011xx0x1x0011100xx
-                                                                     frintn.  */
-                                                                  return 175;
+                                                                     0x001110001xxxxx000111xxxxxxxxxx
+                                                                     and.  */
+                                                                  return 299;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100011xx0x1x0011101xx
-                                                                     frinta.  */
-                                                                  return 223;
+                                                                     0x001110101xxxxx000111xxxxxxxxxx
+                                                                     orr.  */
+                                                                  return 311;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100011xx0x1x101110xxx
-                                                                 frintp.  */
-                                                              return 195;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 23) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
+                                                              if (((word >> 23) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100011xx1x1x0011100xx
-                                                                     frintn.  */
-                                                                  return 176;
+                                                                     0x001110011xxxxx000111xxxxxxxxxx
+                                                                     bic.  */
+                                                                  return 300;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100011xx1x1x0011101xx
-                                                                     frinta.  */
-                                                                  return 224;
+                                                                     0x001110111xxxxx000111xxxxxxxxxx
+                                                                     orn.  */
+                                                                  return 313;
                                                                 }
                                                             }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100011xx1x1x101110xxx
-                                                                 frintp.  */
-                                                              return 196;
-                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx010111xxxxxxxxxx
+                                                             sqrshl.  */
+                                                          return 272;
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 14) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx010001xxxxx1xx0111100x
-                                                             fnmul.  */
-                                                          return 803;
+                                                             0x001110xx1xxxxx001111xxxxxxxxxx
+                                                             cmge.  */
+                                                          return 268;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx010001xxxxx1xx0111101x
-                                                             cmgt.  */
-                                                          return 473;
+                                                             0x001110xx1xxxxx011111xxxxxxxxxx
+                                                             saba.  */
+                                                          return 276;
                                                         }
                                                     }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010001xxxxx1xx011111xx
-                                                         cmge.  */
-                                                      return 502;
-                                                    }
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                  else
+                                    {
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         1x001110xx1xxxxx0xxxxxxxxxxxxxxx
+                                         bcax.  */
+                                      return 2014;
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 10) & 0x1) == 0)
+                                    {
+                                      if (((word >> 11) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100100xx0x1xx011100xx
-                                                                 cls.  */
-                                                              return 159;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100100xx0x1xx011101xx
-                                                                 clz.  */
-                                                              return 209;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx000000xxxxxxxxxx
+                                                             uaddl.  */
+                                                          return 74;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0100100xx1x1xx01110xxx
-                                                             aese.  */
-                                                          return 650;
+                                                             x1101110xx1xxxxx000000xxxxxxxxxx
+                                                             uaddl2.  */
+                                                          return 75;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100101xxxx1xx0111000x
-                                                                 sqxtn.  */
-                                                              return 169;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100101xxxx1xx0111001x
-                                                                 sqxtn2.  */
-                                                              return 170;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx010000xxxxxxxxxx
+                                                             raddhn.  */
+                                                          return 82;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100101xxxx1xx0111010x
-                                                                 uqxtn.  */
-                                                              return 219;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100101xxxx1xx0111011x
-                                                                 uqxtn2.  */
-                                                              return 220;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx010000xxxxxxxxxx
+                                                             raddhn2.  */
+                                                          return 83;
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       if (((word >> 30) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx010010xxxxx1xx0111100x
-                                                             fmax.  */
-                                                          return 795;
+                                                             x0101110xx1xxxxx001000xxxxxxxxxx
+                                                             usubl.  */
+                                                          return 78;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx010010xxxxx1xx0111101x
-                                                             sqxtn.  */
-                                                          return 477;
+                                                             x1101110xx1xxxxx001000xxxxxxxxxx
+                                                             usubl2.  */
+                                                          return 79;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010010xxxxx1xx011111xx
-                                                         uqxtn.  */
-                                                      return 506;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx011000xxxxxxxxxx
+                                                             rsubhn.  */
+                                                          return 86;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx011000xxxxxxxxxx
+                                                             rsubhn2.  */
+                                                          return 87;
+                                                        }
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100110xx001xx011100xx
-                                                                     fcmgt.  */
-                                                                  return 187;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100110xx001xx011101xx
-                                                                     fcmge.  */
-                                                                  return 238;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100110xx001xx011110xx
-                                                                     fcmgt.  */
-                                                                  return 486;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100110xx001xx011111xx
-                                                                     fcmge.  */
-                                                                  return 516;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx000100xxxxxxxxxx
+                                                             uaddw.  */
+                                                          return 76;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x0011100xx
-                                                                         fmaxnmv.  */
-                                                                      return 35;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x0011101xx
-                                                                         fmaxnmv.  */
-                                                                      return 34;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x0011110xx
-                                                                         fmaxnmp.  */
-                                                                      return 530;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x0011111xx
-                                                                         fmaxnmp.  */
-                                                                      return 529;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x1011100xx
-                                                                         fminnmv.  */
-                                                                      return 39;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x1011101xx
-                                                                         fminnmv.  */
-                                                                      return 38;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x1011110xx
-                                                                         fminnmp.  */
-                                                                      return 536;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0100110xx011x1011111xx
-                                                                         fminnmp.  */
-                                                                      return 535;
-                                                                    }
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx000100xxxxxxxxxx
+                                                             uaddw2.  */
+                                                          return 77;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx010100xxxxxxxxxx
+                                                             uabal.  */
+                                                          return 84;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx010100xxxxxxxxxx
+                                                             uabal2.  */
+                                                          return 85;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx001100xxxxxxxxxx
+                                                             usubw.  */
+                                                          return 80;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx001100xxxxxxxxxx
+                                                             usubw2.  */
+                                                          return 81;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx011100xxxxxxxxxx
+                                                             uabdl.  */
+                                                          return 88;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx011100xxxxxxxxxx
+                                                             uabdl2.  */
+                                                          return 89;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000010xxxxxxxxxx
+                                                         rev32.  */
+                                                      return 207;
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0010010xxxxxxxxxx
+                                                             clz.  */
+                                                          return 210;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100110xx1x1xx011100xx
-                                                                 fcmgt.  */
-                                                              return 188;
+                                                                 x0101110xx1xxxx1010010xxxxxxxxxx
+                                                                 uqxtn.  */
+                                                              return 220;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100110xx1x1xx011101xx
-                                                                 fcmge.  */
-                                                              return 239;
+                                                                 x1101110xx1xxxx1010010xxxxxxxxxx
+                                                                 uqxtn2.  */
+                                                              return 221;
                                                             }
                                                         }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0001010xxxxxxxxxx
+                                                             uaddlp.  */
+                                                          return 208;
+                                                        }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100110xx1x1xx011110xx
-                                                                 fcmgt.  */
-                                                              return 487;
+                                                                 x0101110xx1xxxx1001010xxxxxxxxxx
+                                                                 sqxtun.  */
+                                                              return 216;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100110xx1x1xx011111xx
-                                                                 fcmge.  */
-                                                              return 517;
+                                                                 x1101110xx1xxxx1001010xxxxxxxxxx
+                                                                 sqxtun2.  */
+                                                              return 217;
                                                             }
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100111xx0x1x0011100xx
-                                                                     fcvtas.  */
-                                                                  return 183;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100111xx0x1x0011101xx
-                                                                     fcvtau.  */
-                                                                  return 231;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100111xx0x1x0011110xx
-                                                                     fcvtas.  */
-                                                                  return 482;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0100111xx0x1x0011111xx
-                                                                     fcvtau.  */
-                                                                  return 512;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0011010xxxxxxxxxx
+                                                             uadalp.  */
+                                                          return 211;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100111xx0x1x10111x0xx
-                                                                 urecpe.  */
-                                                              return 203;
+                                                                 x0101110xx1xxxx1011010xxxxxxxxxx
+                                                                 fcvtxn.  */
+                                                              return 222;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100111xx0x1x10111x1xx
-                                                                 ursqrte.  */
-                                                              return 250;
+                                                                 x1101110xx1xxxx1011010xxxxxxxxxx
+                                                                 fcvtxn2.  */
+                                                              return 223;
                                                             }
                                                         }
                                                     }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110x01xxxxx0x0110xxxxxxxxxx
+                                                         not.  */
+                                                      return 236;
+                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110x11xxxxx0x0110xxxxxxxxxx
+                                                         rbit.  */
+                                                      return 238;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 20) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100111xx1x1xx011100xx
-                                                                 fcvtas.  */
-                                                              return 184;
+                                                                 xx101110xx10xxx0001110xxxxxxxxxx
+                                                                 usqadd.  */
+                                                              return 209;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100111xx1x1xx011101xx
-                                                                 fcvtau.  */
-                                                              return 232;
+                                                                 xx101110xx11xxx0001110xxxxxxxxxx
+                                                                 uaddlv.  */
+                                                              return 31;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100111xx1x1xx011110xx
-                                                                 fcvtas.  */
-                                                              return 483;
+                                                                 x0101110xx1xxxx1001110xxxxxxxxxx
+                                                                 shll.  */
+                                                              return 218;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0100111xx1x1xx011111xx
-                                                                 fcvtau.  */
-                                                              return 513;
+                                                                 x1101110xx1xxxx1001110xxxxxxxxxx
+                                                                 shll2.  */
+                                                              return 219;
                                                             }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011110xxxxxxxxxx
+                                                         sqneg.  */
+                                                      return 212;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 11) & 0x1) == 0)
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000001xxxxxxxxxx
+                                                         uhadd.  */
+                                                      return 314;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010001xxxxxxxxxx
+                                                         ushl.  */
+                                                      return 321;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001001xxxxxxxxxx
+                                                         uhsub.  */
+                                                      return 317;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011001xxxxxxxxxx
+                                                         umax.  */
+                                                      return 325;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000101xxxxxxxxxx
+                                                         urhadd.  */
+                                                      return 316;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010101xxxxxxxxxx
+                                                         urshl.  */
+                                                      return 323;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001101xxxxxxxxxx
+                                                         cmhi.  */
+                                                      return 319;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011101xxxxxxxxxx
+                                                         uabd.  */
+                                                      return 327;
+                                                    }
                                                 }
                                             }
                                         }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      else
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 12) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0101000xxxx1xx011100xx
-                                                             saddlp.  */
-                                                          return 157;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0101000xxxx1xx011101xx
-                                                             uaddlp.  */
-                                                          return 207;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx000011xxxxxxxxxx
+                                                         uqadd.  */
+                                                      return 315;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101001xxxx1xx0111000x
-                                                                 xtn.  */
-                                                              return 167;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101001xxxx1xx0111001x
-                                                                 xtn2.  */
-                                                              return 168;
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101001xxxx1xx0111010x
-                                                                 sqxtun.  */
-                                                              return 215;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101001xxxx1xx0111011x
-                                                                 sqxtun2.  */
-                                                              return 216;
-                                                            }
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010011xxxxxxxxxx
+                                                         uqshl.  */
+                                                      return 322;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx010100xxxxx1xx0111100x
-                                                             fadd.  */
-                                                          return 791;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx010100xxxxx1xx0111101x
-                                                             sha256su0.  */
-                                                          return 656;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001011xxxxxxxxxx
+                                                         uqsub.  */
+                                                      return 318;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx010100xxxxx1xx011111xx
-                                                         sqxtun.  */
-                                                      return 505;
+                                                         xx101110xx1xxxxx011011xxxxxxxxxx
+                                                         umin.  */
+                                                      return 326;
                                                     }
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 20) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 28) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0101010xxx01xx01110xxx
-                                                             cmlt.  */
-                                                          return 165;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0101010xxx01xx01111xxx
-                                                             cmlt.  */
-                                                          return 475;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0101010xxx11xx0111x0xx
-                                                             smaxv.  */
-                                                          return 28;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0101010xxx11xx0111x1xx
-                                                             umaxv.  */
-                                                          return 32;
-                                                        }
-                                                    }
-                                                }
-                                              else
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 22) & 0x1) == 0)
                                                         {
                                                           if (((word >> 23) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x0011100xx
-                                                                         fcvtns.  */
-                                                                      return 179;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x0011101xx
-                                                                         fcvtnu.  */
-                                                                      return 227;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x0011110xx
-                                                                         fcvtns.  */
-                                                                      return 478;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x0011111xx
-                                                                         fcvtnu.  */
-                                                                      return 508;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x1011100xx
-                                                                         fcvtps.  */
-                                                                      return 199;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x1011101xx
-                                                                         fcvtpu.  */
-                                                                      return 246;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x1011110xx
-                                                                         fcvtps.  */
-                                                                      return 492;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0101011xx001x1011111xx
-                                                                         fcvtpu.  */
-                                                                      return 520;
-                                                                    }
-                                                                }
-                                                            }
-                                                        }
-                                                      else
-                                                        {
-                                                          if (((word >> 29) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101011xx011xx0111x0xx
-                                                                 sminv.  */
-                                                              return 29;
+                                                                 xx101110001xxxxx000111xxxxxxxxxx
+                                                                 eor.  */
+                                                              return 350;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101011xx011xx0111x1xx
-                                                                 uminv.  */
-                                                              return 33;
-                                                            }
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      if (((word >> 23) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x0011100xx
-                                                                     fcvtns.  */
-                                                                  return 180;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x0011101xx
-                                                                     fcvtnu.  */
-                                                                  return 228;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x0011110xx
-                                                                     fcvtns.  */
-                                                                  return 479;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x0011111xx
-                                                                     fcvtnu.  */
-                                                                  return 509;
-                                                                }
+                                                                 xx101110101xxxxx000111xxxxxxxxxx
+                                                                 bit.  */
+                                                              return 362;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x1011100xx
-                                                                     fcvtps.  */
-                                                                  return 200;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x1011101xx
-                                                                     fcvtpu.  */
-                                                                  return 247;
-                                                                }
-                                                            }
-                                                          else
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x1011110xx
-                                                                     fcvtps.  */
-                                                                  return 493;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0101011xx1x1x1011111xx
-                                                                     fcvtpu.  */
-                                                                  return 521;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110011xxxxx000111xxxxxxxxxx
+                                                                 bsl.  */
+                                                              return 351;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110111xxxxx000111xxxxxxxxxx
+                                                                 bif.  */
+                                                              return 363;
                                                             }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx010111xxxxxxxxxx
+                                                         uqrshl.  */
+                                                      return 324;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 14) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx001111xxxxxxxxxx
+                                                         cmhs.  */
+                                                      return 320;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx011111xxxxxxxxxx
+                                                         uaba.  */
+                                                      return 328;
+                                                    }
                                                 }
                                             }
                                         }
-                                      else
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 10) & 0x1) == 0)
+                                {
+                                  if (((word >> 11) & 0x1) == 0)
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0001110xx1xxxxx100000xxxxxxxxxx
+                                                             smlal.  */
+                                                          return 58;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101100xx0x1xx011100xx
-                                                                 sadalp.  */
-                                                              return 161;
+                                                                 01001110xx1xxxxx100000xxxxxxxxxx
+                                                                 smlal2.  */
+                                                              return 59;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101100xx0x1xx011101xx
-                                                                 uadalp.  */
-                                                              return 210;
+                                                                 11001110xx1xxxxx100000xxxxxxxxxx
+                                                                 sha512h.  */
+                                                              return 2007;
                                                             }
                                                         }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx100000xxxxxxxxxx
+                                                             umlal.  */
+                                                          return 90;
+                                                        }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0101100xx1x1xx01110xxx
-                                                             aesmc.  */
-                                                          return 652;
+                                                             x1101110xx1xxxxx100000xxxxxxxxxx
+                                                             umlal2.  */
+                                                          return 91;
                                                         }
                                                     }
-                                                  else
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 30) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101101xxxx1xx0111000x
-                                                                 fcvtn.  */
-                                                              return 171;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101101xxxx1xx0111001x
-                                                                 fcvtn2.  */
-                                                              return 172;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0001110xx1xxxxx110000xxxxxxxxxx
+                                                             smull.  */
+                                                          return 66;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 30) & 0x1) == 0)
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101101xxxx1xx0111010x
-                                                                 fcvtxn.  */
-                                                              return 221;
+                                                                 01001110xx1xxxxx110000xxxxxxxxxx
+                                                                 smull2.  */
+                                                              return 67;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0101101xxxx1xx0111011x
-                                                                 fcvtxn2.  */
-                                                              return 222;
+                                                                 11001110xx1xxxxx110000xxxxxxxxxx
+                                                                 sm3partw1.  */
+                                                              return 2020;
                                                             }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx110000xxxxxxxxxx
+                                                             umull.  */
+                                                          return 94;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx110000xxxxxxxxxx
+                                                             umull2.  */
+                                                          return 95;
+                                                        }
+                                                    }
                                                 }
-                                              else
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010110xxxxx1xx011110xx
-                                                         fmaxnm.  */
-                                                      return 799;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0001110xx1xxxxx101000xxxxxxxxxx
+                                                             smlsl.  */
+                                                          return 62;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1001110xx1xxxxx101000xxxxxxxxxx
+                                                             smlsl2.  */
+                                                          return 63;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx010110xxxxx1xx011111xx
-                                                         fcvtxn.  */
-                                                      return 507;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0101110xx1xxxxx101000xxxxxxxxxx
+                                                             umlsl.  */
+                                                          return 92;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1101110xx1xxxxx101000xxxxxxxxxx
+                                                             umlsl2.  */
+                                                          return 93;
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 22) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0x01110x01xxxxx111000xxxxxxxxxx
+                                                             pmull.  */
+                                                          return 70;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1x01110x01xxxxx111000xxxxxxxxxx
+                                                             pmull2.  */
+                                                          return 72;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0x01110x11xxxxx111000xxxxxxxxxx
+                                                             pmull.  */
+                                                          return 71;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1x01110x11xxxxx111000xxxxxxxxxx
+                                                             pmull2.  */
+                                                          return 73;
+                                                        }
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 19) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx010111xxx0x1xx01110xxx
-                                                         fcmlt.  */
-                                                      return 191;
+                                                         x0x01110xx1xxxxx100100xxxxxxxxxx
+                                                         sqdmlal.  */
+                                                      return 60;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx010111xxx0x1xx01111xxx
-                                                         fcmlt.  */
-                                                      return 490;
+                                                         x1x01110xx1xxxxx100100xxxxxxxxxx
+                                                         sqdmlal2.  */
+                                                      return 61;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx010111xxx1x1xx01110xxx
-                                                         fcmlt.  */
-                                                      return 192;
+                                                         x0x01110xx1xxxxx110100xxxxxxxxxx
+                                                         sqdmull.  */
+                                                      return 68;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx010111xxx1x1xx01111xxx
-                                                         fcmlt.  */
-                                                      return 491;
+                                                         x1x01110xx1xxxxx110100xxxxxxxxxx
+                                                         sqdmull2.  */
+                                                      return 69;
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          else
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 30) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx011000xxxxx1xx01110xxx
-                                                     rev16.  */
-                                                  return 156;
+                                                     x0x01110xx1xxxxx1x1100xxxxxxxxxx
+                                                     sqdmlsl.  */
+                                                  return 64;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 30) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx011000xxxxx1xx01111x0x
-                                                         fdiv.  */
-                                                      return 789;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx011000xxxxx1xx01111x1x
-                                                         sha1su1.  */
-                                                      return 655;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x01110xx1xxxxx1x1100xxxxxxxxxx
+                                                     sqdmlsl2.  */
+                                                  return 65;
                                                 }
                                             }
-                                          else
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 31) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0110010xxxx1xx011100xx
-                                                             cmeq.  */
-                                                          return 164;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 0x001110xx1xxxx0100010xxxxxxxxxx
+                                                                 cmgt.  */
+                                                              return 164;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011100x1x0xx1100010xxxxxxxxxx
+                                                                         frintn.  */
+                                                                      return 176;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011101x1x0xx1100010xxxxxxxxxx
+                                                                         frintp.  */
+                                                                      return 196;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 23) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011100x1x1xx1100010xxxxxxxxxx
+                                                                         frintn.  */
+                                                                      return 177;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011101x1x1xx1100010xxxxxxxxxx
+                                                                         frintp.  */
+                                                                      return 197;
+                                                                    }
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0110010xxxx1xx011101xx
-                                                             cmle.  */
-                                                          return 213;
+                                                             1x001110xx1xxxxx100010xxxxxxxxxx
+                                                             sha512su1.  */
+                                                          return 2010;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0110010xxxx1xx011110xx
-                                                             cmeq.  */
-                                                          return 474;
+                                                             xx101110xx1xxxx0100010xxxxxxxxxx
+                                                             cmge.  */
+                                                          return 213;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0110010xxxx1xx011111xx
-                                                             cmle.  */
-                                                          return 503;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx1x0xx1100010xxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 224;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx1x1xx1100010xxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 225;
+                                                            }
                                                         }
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx0x1x00111x0xx
-                                                                 frintm.  */
-                                                              return 177;
+                                                              if (((word >> 16) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     0x0011100x1xxxx0110010xxxxxxxxxx
+                                                                     fmaxnmv.  */
+                                                                  return 35;
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 19) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011100x1x0xx1110010xxxxxxxxxx
+                                                                         fcvtas.  */
+                                                                      return 184;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         0x0011100x1x1xx1110010xxxxxxxxxx
+                                                                         fcvtas.  */
+                                                                      return 185;
+                                                                    }
+                                                                }
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx0x1x00111x1xx
-                                                                 frintx.  */
-                                                              return 225;
+                                                                 1x0011100x1xxxxx110010xxxxxxxxxx
+                                                                 sm4ekey.  */
+                                                              return 2023;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 16) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx0x1x10111x0xx
-                                                                 frintz.  */
-                                                              return 197;
+                                                                 xx1011100x1xxxx0110010xxxxxxxxxx
+                                                                 fmaxnmv.  */
+                                                              return 34;
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx0x1x10111x1xx
-                                                                 frinti.  */
-                                                              return 244;
+                                                              if (((word >> 19) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x0xx1110010xxxxxxxxxx
+                                                                     fcvtau.  */
+                                                                  return 232;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1110010xxxxxxxxxx
+                                                                     fcvtau.  */
+                                                                  return 233;
+                                                                }
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x100xx0110010xxxxxxxxxx
+                                                                         fcmgt.  */
+                                                                      return 188;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x100xx0110010xxxxxxxxxx
+                                                                         fcmge.  */
+                                                                      return 239;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x110xx0110010xxxxxxxxxx
+                                                                         fminnmv.  */
+                                                                      return 39;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x110xx0110010xxxxxxxxxx
+                                                                         fminnmv.  */
+                                                                      return 38;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx0110010xxxxxxxxxx
+                                                                     fcmgt.  */
+                                                                  return 189;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx0110010xxxxxxxxxx
+                                                                     fcmge.  */
+                                                                  return 240;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
                                                         {
                                                           if (((word >> 29) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx1x1x00111x0xx
-                                                                 frintm.  */
-                                                              return 178;
+                                                                 xx0011101x1xxxx1110010xxxxxxxxxx
+                                                                 urecpe.  */
+                                                              return 204;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx1x1x00111x1xx
-                                                                 frintx.  */
-                                                              return 226;
+                                                                 xx1011101x1xxxx1110010xxxxxxxxxx
+                                                                 ursqrte.  */
+                                                              return 251;
                                                             }
                                                         }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 20) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx10xxx0101010xxxxxxxxxx
+                                                             cmlt.  */
+                                                          return 166;
+                                                        }
                                                       else
                                                         {
                                                           if (((word >> 29) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx1x1x10111x0xx
-                                                                 frintz.  */
-                                                              return 198;
+                                                                 xx001110xx11xxx0101010xxxxxxxxxx
+                                                                 smaxv.  */
+                                                              return 28;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110011xx1x1x10111x1xx
-                                                                 frinti.  */
-                                                              return 245;
+                                                                 xx101110xx11xxx0101010xxxxxxxxxx
+                                                                 umaxv.  */
+                                                              return 32;
+                                                            }
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011100x100xx1101010xxxxxxxxxx
+                                                                         fcvtns.  */
+                                                                      return 180;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011100x100xx1101010xxxxxxxxxx
+                                                                         fcvtnu.  */
+                                                                      return 228;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x100xx1101010xxxxxxxxxx
+                                                                         fcvtps.  */
+                                                                      return 200;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x100xx1101010xxxxxxxxxx
+                                                                         fcvtpu.  */
+                                                                      return 247;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx001110xx110xx1101010xxxxxxxxxx
+                                                                     sminv.  */
+                                                                  return 29;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx101110xx110xx1101010xxxxxxxxxx
+                                                                     uminv.  */
+                                                                  return 33;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 181;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 229;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 201;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 248;
+                                                                }
                                                             }
                                                         }
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  if (((word >> 19) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx01110xx1x0xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 192;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx01110xx1x1xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 193;
+                                                    }
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
                                                       if (((word >> 29) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011010xxx0x1xx011100xx
-                                                             cnt.  */
-                                                          return 160;
+                                                             xx001110xx1xxxx0100110xxxxxxxxxx
+                                                             cmeq.  */
+                                                          return 165;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 22) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx011010xxx0x10x011101xx
-                                                                 not.  */
-                                                              return 235;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx011010xxx0x11x011101xx
-                                                                 rbit.  */
-                                                              return 237;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0100110xxxxxxxxxx
+                                                             cmle.  */
+                                                          return 214;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx011010xxx1x1xx01110xxx
-                                                         aesd.  */
-                                                      return 651;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx011010xxxxx1xx01111xxx
-                                                     fmin.  */
-                                                  return 797;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               if (((word >> 29) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110110xx001xx011100xx
-                                                                     fcmeq.  */
-                                                                  return 189;
+                                                                     xx0011100x1x0xx1100110xxxxxxxxxx
+                                                                     frintm.  */
+                                                                  return 178;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110110xx001xx011101xx
-                                                                     fcmle.  */
-                                                                  return 240;
+                                                                     xx1011100x1x0xx1100110xxxxxxxxxx
+                                                                     frintx.  */
+                                                                  return 226;
                                                                 }
                                                             }
                                                           else
@@ -14498,49 +15301,74 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110110xx001xx011110xx
-                                                                     fcmeq.  */
-                                                                  return 488;
+                                                                     xx0011101x1x0xx1100110xxxxxxxxxx
+                                                                     frintz.  */
+                                                                  return 198;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110110xx001xx011111xx
-                                                                     fcmle.  */
-                                                                  return 518;
+                                                                     xx1011101x1x0xx1100110xxxxxxxxxx
+                                                                     frinti.  */
+                                                                  return 245;
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110110xx011xx0111x0xx
-                                                                 faddp.  */
-                                                              return 532;
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011100x1x1xx1100110xxxxxxxxxx
+                                                                     frintm.  */
+                                                                  return 179;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011100x1x1xx1100110xxxxxxxxxx
+                                                                     frintx.  */
+                                                                  return 227;
+                                                                }
                                                             }
                                                           else
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110110xx011xx0111x1xx
-                                                                 faddp.  */
-                                                              return 531;
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0011101x1x1xx1100110xxxxxxxxxx
+                                                                     frintz.  */
+                                                                  return 199;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1011101x1x1xx1100110xxxxxxxxxx
+                                                                     frinti.  */
+                                                                  return 246;
+                                                                }
                                                             }
                                                         }
                                                     }
-                                                  else
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
                                                           if (((word >> 29) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110110xx1x1xx011100xx
+                                                                 xx001110xx1x0xx0110110xxxxxxxxxx
                                                                  fcmeq.  */
                                                               return 190;
                                                             }
@@ -14548,7 +15376,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110110xx1x1xx011101xx
+                                                                 xx101110xx1x0xx0110110xxxxxxxxxx
                                                                  fcmle.  */
                                                               return 241;
                                                             }
@@ -14559,44 +15387,41 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110110xx1x1xx011110xx
+                                                                 xx001110xx1x1xx0110110xxxxxxxxxx
                                                                  fcmeq.  */
-                                                              return 489;
+                                                              return 191;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0110110xx1x1xx011111xx
+                                                                 xx101110xx1x1xx0110110xxxxxxxxxx
                                                                  fcmle.  */
-                                                              return 519;
+                                                              return 242;
                                                             }
                                                         }
                                                     }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               if (((word >> 29) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x0011100xx
+                                                                     xx0011100x1x0xx1110110xxxxxxxxxx
                                                                      scvtf.  */
-                                                                  return 185;
+                                                                  return 186;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x0011101xx
+                                                                     xx1011100x1x0xx1110110xxxxxxxxxx
                                                                      ucvtf.  */
-                                                                  return 233;
+                                                                  return 234;
                                                                 }
                                                             }
                                                           else
@@ -14605,39 +15430,39 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x0011110xx
-                                                                     scvtf.  */
-                                                                  return 484;
+                                                                     xx0011101x1x0xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 205;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x0011111xx
-                                                                     ucvtf.  */
-                                                                  return 514;
+                                                                     xx1011101x1x0xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 252;
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               if (((word >> 29) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x1011100xx
-                                                                     frecpe.  */
-                                                                  return 204;
+                                                                     xx0011100x1x1xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 187;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x1011101xx
-                                                                     frsqrte.  */
-                                                                  return 251;
+                                                                     xx1011100x1x1xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 235;
                                                                 }
                                                             }
                                                           else
@@ -14646,42 +15471,119 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x1011110xx
+                                                                     xx0011101x1x1xx1110110xxxxxxxxxx
                                                                      frecpe.  */
-                                                                  return 496;
+                                                                  return 206;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx0x1x1011111xx
+                                                                     xx1011101x1x1xx1110110xxxxxxxxxx
                                                                      frsqrte.  */
-                                                                  return 524;
+                                                                  return 253;
                                                                 }
                                                             }
                                                         }
                                                     }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx001110xx1xxxx0101110xxxxxxxxxx
+                                                             abs.  */
+                                                          return 167;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx101110xx1xxxx0101110xxxxxxxxxx
+                                                             neg.  */
+                                                          return 215;
+                                                        }
+                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011100x100xx1101110xxxxxxxxxx
+                                                                         fcvtms.  */
+                                                                      return 182;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011100x100xx1101110xxxxxxxxxx
+                                                                         fcvtmu.  */
+                                                                      return 230;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 202;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 249;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx01110xx110xx1101110xxxxxxxxxx
+                                                                 addv.  */
+                                                              return 30;
+                                                            }
+                                                        }
+                                                      else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 23) & 0x1) == 0)
                                                             {
                                                               if (((word >> 29) & 0x1) == 0)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x0011100xx
-                                                                     scvtf.  */
-                                                                  return 186;
+                                                                     xx0011100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtms.  */
+                                                                  return 183;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x0011101xx
-                                                                     ucvtf.  */
-                                                                  return 234;
+                                                                     xx1011100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtmu.  */
+                                                                  return 231;
                                                                 }
                                                             }
                                                           else
@@ -14690,187 +15592,473 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x0011110xx
-                                                                     scvtf.  */
-                                                                  return 485;
+                                                                     xx0011101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 203;
                                                                 }
                                                               else
                                                                 {
                                                                   /* 33222222222211111111110000000000
                                                                      10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x0011111xx
-                                                                     ucvtf.  */
-                                                                  return 515;
+                                                                     xx1011101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 250;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 16) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx001110xx100xx0111110xxxxxxxxxx
+                                                                     fabs.  */
+                                                                  return 194;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx101110xx100xx0111110xxxxxxxxxx
+                                                                     fneg.  */
+                                                                  return 243;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011100x110xx0111110xxxxxxxxxx
+                                                                         fmaxv.  */
+                                                                      return 37;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011100x110xx0111110xxxxxxxxxx
+                                                                         fmaxv.  */
+                                                                      return 36;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0011101x110xx0111110xxxxxxxxxx
+                                                                         fminv.  */
+                                                                      return 41;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1011101x110xx0111110xxxxxxxxxx
+                                                                         fminv.  */
+                                                                      return 40;
+                                                                    }
                                                                 }
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 29) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x1011100xx
-                                                                     frecpe.  */
-                                                                  return 205;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x1011101xx
-                                                                     frsqrte.  */
-                                                                  return 252;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx001110xx1x1xx0111110xxxxxxxxxx
+                                                                 fabs.  */
+                                                              return 195;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x1011110xx
-                                                                     frecpe.  */
-                                                                  return 497;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0110111xx1x1x1011111xx
-                                                                     frsqrte.  */
-                                                                  return 525;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx101110xx1x1xx0111110xxxxxxxxxx
+                                                                 fneg.  */
+                                                              return 244;
                                                             }
                                                         }
                                                     }
+                                                  else
+                                                    {
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx1x0xx1111110xxxxxxxxxx
+                                                             fsqrt.  */
+                                                          return 254;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx01110xx1x1xx1111110xxxxxxxxxx
+                                                             fsqrt.  */
+                                                          return 255;
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                                     }
-                                  else
+                                }
+                              else
+                                {
+                                  if (((word >> 11) & 0x1) == 0)
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 12) & 0x1) == 0)
                                         {
-                                          if (((word >> 15) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
-                                              if (((word >> 28) & 0x1) == 0)
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 31) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             0x001110xx1xxxxx100001xxxxxxxxxx
+                                                             add.  */
+                                                          return 277;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             1x001110xx1xxxxx100001xxxxxxxxxx
+                                                             sha512h2.  */
+                                                          return 2008;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100001xxxxxxxxxx
+                                                         sub.  */
+                                                      return 329;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 31) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111000xxx01xx011100xx
-                                                                 suqadd.  */
-                                                              return 158;
+                                                                 0x0011100x1xxxxx110001xxxxxxxxxx
+                                                                 fmaxnm.  */
+                                                              return 285;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111000xxx01xx011101xx
-                                                                 usqadd.  */
-                                                              return 208;
+                                                                 1x0011100x1xxxxx110001xxxxxxxxxx
+                                                                 sm3partw2.  */
+                                                              return 2021;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111000xxx11xx011100xx
-                                                                 saddlv.  */
-                                                              return 27;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111000xxx11xx011101xx
-                                                                 uaddlv.  */
-                                                              return 31;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx110001xxxxxxxxxx
+                                                             fmaxnmp.  */
+                                                          return 336;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011101x1xxxxx110001xxxxxxxxxx
+                                                             fminnm.  */
+                                                          return 301;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011101x1xxxxx110001xxxxxxxxxx
+                                                             fminnmp.  */
+                                                          return 352;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx101001xxxxxxxxxx
+                                                         smaxp.  */
+                                                      return 281;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx101001xxxxxxxxxx
+                                                         umaxp.  */
+                                                      return 333;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx111001xxxxxxxxxx
+                                                             fcmeq.  */
+                                                          return 293;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111001xxxxxxxxxx
+                                                             fcmge.  */
+                                                          return 342;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xxx011101x1xxxxx111001xxxxxxxxxx
+                                                         fcmgt.  */
+                                                      return 356;
+                                                    }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx100101xxxxxxxxxx
+                                                         mla.  */
+                                                      return 279;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100101xxxxxxxxxx
+                                                         mls.  */
+                                                      return 331;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx110101xxxxxxxxxx
+                                                             fadd.  */
+                                                          return 289;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx110101xxxxxxxxxx
+                                                             faddp.  */
+                                                          return 338;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011101x1xxxxx110101xxxxxxxxxx
+                                                             fsub.  */
+                                                          return 305;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011101x1xxxxx110101xxxxxxxxxx
+                                                             fabd.  */
+                                                          return 354;
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx101101xxxxxxxxxx
+                                                         sqdmulh.  */
+                                                      return 283;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx101101xxxxxxxxxx
+                                                         sqrdmulh.  */
+                                                      return 335;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx0011100x1xxxxx111101xxxxxxxxxx
+                                                             fmax.  */
+                                                          return 295;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111101xxxxxxxxxx
+                                                             fmaxp.  */
+                                                          return 346;
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0111001xxxx1xx01110x0x
-                                                             shll.  */
-                                                          return 217;
+                                                             xx0011101x1xxxxx111101xxxxxxxxxx
+                                                             fmin.  */
+                                                          return 307;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0111001xxxx1xx01110x1x
-                                                             shll2.  */
-                                                          return 218;
+                                                             xx1011101x1xxxxx111101xxxxxxxxxx
+                                                             fminp.  */
+                                                          return 360;
                                                         }
                                                     }
                                                 }
-                                              else
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      if (((word >> 31) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011100xxxxx1xx0111100x
-                                                             fsub.  */
-                                                          return 793;
+                                                             0x001110xx1xxxxx100011xxxxxxxxxx
+                                                             cmtst.  */
+                                                          return 278;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011100xxxxx1xx0111101x
-                                                             suqadd.  */
-                                                          return 471;
+                                                             1x001110xx1xxxxx100011xxxxxxxxxx
+                                                             rax1.  */
+                                                          return 2012;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx011100xxxxx1xx011111xx
-                                                         usqadd.  */
-                                                      return 500;
+                                                         xx101110xx1xxxxx100011xxxxxxxxxx
+                                                         cmeq.  */
+                                                      return 330;
                                                     }
                                                 }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 16) & 0x1) == 0)
+                                              else
                                                 {
-                                                  if (((word >> 28) & 0x1) == 0)
+                                                  if (((word >> 23) & 0x1) == 0)
                                                     {
                                                       if (((word >> 29) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0111010xxxx1xx011100xx
-                                                             abs.  */
-                                                          return 166;
+                                                             xx0011100x1xxxxx110011xxxxxxxxxx
+                                                             fmla.  */
+                                                          return 287;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111010xxxx1xx011101xx
-                                                             neg.  */
-                                                          return 214;
+                                                          if (((word >> 30) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x01011100x1xxxxx110011xxxxxxxxxx
+                                                                 fmlal2.  */
+                                                              return 2026;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x11011100x1xxxxx110011xxxxxxxxxx
+                                                                 fmlal2.  */
+                                                              return 2030;
+                                                            }
                                                         }
                                                     }
                                                   else
@@ -14879,592 +16067,526 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0111010xxxx1xx011110xx
-                                                             abs.  */
-                                                          return 476;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111010xxxx1xx011111xx
-                                                             neg.  */
-                                                          return 504;
-                                                        }
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 19) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 20) & 0x1) == 0)
-                                                        {
-                                                          if (((word >> 23) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x0011100xx
-                                                                         fcvtms.  */
-                                                                      return 181;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x0011101xx
-                                                                         fcvtmu.  */
-                                                                      return 229;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x0011110xx
-                                                                         fcvtms.  */
-                                                                      return 480;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x0011111xx
-                                                                         fcvtmu.  */
-                                                                      return 510;
-                                                                    }
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 28) & 0x1) == 0)
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x1011100xx
-                                                                         fcvtzs.  */
-                                                                      return 201;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x1011101xx
-                                                                         fcvtzu.  */
-                                                                      return 248;
-                                                                    }
-                                                                }
-                                                              else
-                                                                {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x1011110xx
-                                                                         fcvtzs.  */
-                                                                      return 494;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111011xx001x1011111xx
-                                                                         fcvtzu.  */
-                                                                      return 522;
-                                                                    }
-                                                                }
-                                                            }
+                                                             xx0011101x1xxxxx110011xxxxxxxxxx
+                                                             fmls.  */
+                                                          return 303;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111011xx011xx01110xxx
-                                                                 addv.  */
-                                                              return 30;
+                                                                 x01011101x1xxxxx110011xxxxxxxxxx
+                                                                 fmlsl2.  */
+                                                              return 2027;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111011xx011xx01111xxx
-                                                                 addp.  */
-                                                              return 528;
+                                                                 x11011101x1xxxxx110011xxxxxxxxxx
+                                                                 fmlsl2.  */
+                                                              return 2031;
                                                             }
                                                         }
                                                     }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx101011xxxxxxxxxx
+                                                         sminp.  */
+                                                      return 282;
+                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx101011xxxxxxxxxx
+                                                         uminp.  */
+                                                      return 334;
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x0011100xx
-                                                                     fcvtms.  */
-                                                                  return 182;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x0011101xx
-                                                                     fcvtmu.  */
-                                                                  return 230;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x00011100x1xxxxx111011xxxxxxxxxx
+                                                                 fmlal.  */
+                                                              return 2024;
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x0011110xx
-                                                                     fcvtms.  */
-                                                                  return 481;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x0011111xx
-                                                                     fcvtmu.  */
-                                                                  return 511;
-                                                                }
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 x10011100x1xxxxx111011xxxxxxxxxx
+                                                                 fmlal.  */
+                                                              return 2028;
                                                             }
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 28) & 0x1) == 0)
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x1011100xx
-                                                                     fcvtzs.  */
-                                                                  return 202;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x1011101xx
-                                                                     fcvtzu.  */
-                                                                  return 249;
-                                                                }
-                                                            }
-                                                          else
-                                                            {
-                                                              if (((word >> 29) & 0x1) == 0)
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x1011110xx
-                                                                     fcvtzs.  */
-                                                                  return 495;
-                                                                }
-                                                              else
-                                                                {
-                                                                  /* 33222222222211111111110000000000
-                                                                     10987654321098765432109876543210
-                                                                     xxxxxxxxxx0111011xx1x1x1011111xx
-                                                                     fcvtzu.  */
-                                                                  return 523;
-                                                                }
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx1011100x1xxxxx111011xxxxxxxxxx
+                                                             facge.  */
+                                                          return 344;
                                                         }
                                                     }
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 15) & 0x1) == 0)
-                                            {
-                                              if (((word >> 28) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 16) & 0x1) == 0)
+                                                  else
                                                     {
-                                                      if (((word >> 19) & 0x1) == 0)
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 30) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111100xx0x1xx011100xx
-                                                                 sqabs.  */
-                                                              return 162;
+                                                                 x00011101x1xxxxx111011xxxxxxxxxx
+                                                                 fmlsl.  */
+                                                              return 2025;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111100xx0x1xx011101xx
-                                                                 sqneg.  */
-                                                              return 211;
+                                                                 x10011101x1xxxxx111011xxxxxxxxxx
+                                                                 fmlsl.  */
+                                                              return 2029;
                                                             }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0111100xx1x1xx01110xxx
-                                                             aesimc.  */
-                                                          return 653;
+                                                             xx1011101x1xxxxx111011xxxxxxxxxx
+                                                             facgt.  */
+                                                          return 358;
                                                         }
                                                     }
+                                                }
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  if (((word >> 29) & 0x1) == 0)
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx100111xxxxxxxxxx
+                                                         mul.  */
+                                                      return 280;
+                                                    }
                                                   else
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111101xxxx1xx01110x0x
-                                                             fcvtl.  */
-                                                          return 173;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111101xxxx1xx01110x1x
-                                                             fcvtl2.  */
-                                                          return 174;
-                                                        }
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx100111xxxxxxxxxx
+                                                         pmul.  */
+                                                      return 332;
                                                     }
                                                 }
                                               else
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 30) & 0x1) == 0)
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx001110xx1xxxxx110111xxxxxxxxxx
+                                                         fmulx.  */
+                                                      return 291;
+                                                    }
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx101110xx1xxxxx110111xxxxxxxxxx
+                                                         fmul.  */
+                                                      return 340;
+                                                    }
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx01110xx1xxxxx101111xxxxxxxxxx
+                                                     addp.  */
+                                                  return 284;
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 23) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 29) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011110xxxxx1xx0111100x
-                                                             fminnm.  */
-                                                          return 801;
+                                                             xx0011100x1xxxxx111111xxxxxxxxxx
+                                                             frecps.  */
+                                                          return 297;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx011110xxxxx1xx0111101x
-                                                             sqabs.  */
-                                                          return 472;
+                                                             xx1011100x1xxxxx111111xxxxxxxxxx
+                                                             fdiv.  */
+                                                          return 348;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx011110xxxxx1xx011111xx
-                                                         sqneg.  */
-                                                      return 501;
+                                                         xxx011101x1xxxxx111111xxxxxxxxxx
+                                                         frsqrts.  */
+                                                      return 309;
                                                     }
                                                 }
                                             }
-                                          else
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                      else
+                        {
+                          if (((word >> 10) & 0x1) == 0)
+                            {
+                              if (((word >> 11) & 0x1) == 0)
+                                {
+                                  if (((word >> 12) & 0x1) == 0)
+                                    {
+                                      if (((word >> 13) & 0x1) == 0)
+                                        {
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
                                               if (((word >> 16) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 17) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 20) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111110xx001xx0111x0xx
-                                                                 fabs.  */
-                                                              return 193;
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx100000x00000xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 756;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx110000x00000xxxxxxxxxx
+                                                                     fcvtms.  */
+                                                                  return 776;
+                                                                }
                                                             }
                                                           else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx101000x00000xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 772;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx111000x00000xxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 780;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx100x00000xxxxxxxxxx
+                                                             fcvtas.  */
+                                                          return 764;
+                                                        }
+                                                    }
+                                                  else
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx010x00000xxxxxxxxxx
+                                                             scvtf.  */
+                                                          return 760;
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx0111110xx001xx0111x1xx
-                                                                 fneg.  */
-                                                              return 242;
+                                                                 xxx11110xx1x0110x00000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 768;
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 20) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx101110x00000xxxxxxxxxx
+                                                                     fmov.  */
+                                                                  return 784;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx111110x00000xxxxxxxxxx
+                                                                     fjcvtzs.  */
+                                                                  return 786;
+                                                                }
                                                             }
                                                         }
-                                                      else
+                                                    }
+                                                }
+                                              else
+                                                {
+                                                  if (((word >> 17) & 0x1) == 0)
+                                                    {
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 23) & 0x1) == 0)
+                                                          if (((word >> 19) & 0x1) == 0)
                                                             {
-                                                              if (((word >> 28) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x0011100xx
-                                                                         fmaxv.  */
-                                                                      return 37;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x0011101xx
-                                                                         fmaxv.  */
-                                                                      return 36;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx100001x00000xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 758;
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x0011110xx
-                                                                         fmaxp.  */
-                                                                      return 534;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x0011111xx
-                                                                         fmaxp.  */
-                                                                      return 533;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx110001x00000xxxxxxxxxx
+                                                                     fcvtmu.  */
+                                                                  return 778;
                                                                 }
                                                             }
                                                           else
                                                             {
-                                                              if (((word >> 28) & 0x1) == 0)
+                                                              if (((word >> 20) & 0x1) == 0)
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x1011100xx
-                                                                         fminv.  */
-                                                                      return 41;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x1011101xx
-                                                                         fminv.  */
-                                                                      return 40;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx101001x00000xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 774;
                                                                 }
                                                               else
                                                                 {
-                                                                  if (((word >> 29) & 0x1) == 0)
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x1011110xx
-                                                                         fminp.  */
-                                                                      return 538;
-                                                                    }
-                                                                  else
-                                                                    {
-                                                                      /* 33222222222211111111110000000000
-                                                                         10987654321098765432109876543210
-                                                                         xxxxxxxxxx0111110xx011x1011111xx
-                                                                         fminp.  */
-                                                                      return 537;
-                                                                    }
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xxx11110xx111001x00000xxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 782;
                                                                 }
                                                             }
                                                         }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1xx101x00000xxxxxxxxxx
+                                                             fcvtau.  */
+                                                          return 766;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 18) & 0x1) == 0)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx0111110xx1x1xx0111x0xx
-                                                             fabs.  */
-                                                          return 194;
+                                                             xxx11110xx1xx011x00000xxxxxxxxxx
+                                                             ucvtf.  */
+                                                          return 762;
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111110xx1x1xx0111x1xx
-                                                             fneg.  */
-                                                          return 243;
+                                                          if (((word >> 19) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1x0111x00000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 770;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1x1111x00000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 785;
+                                                            }
                                                         }
                                                     }
                                                 }
-                                              else
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 17) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 19) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111111xx0x1xx01110xxx
-                                                             fsqrt.  */
-                                                          return 253;
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx000010000xxxxxxxxxx
+                                                                 fmov.  */
+                                                              return 799;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx100010000xxxxxxxxxx
+                                                                 frintn.  */
+                                                              return 808;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111111xx0x1xx01111xxx
-                                                             frecpx.  */
-                                                          return 498;
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx001010000xxxxxxxxxx
+                                                                 fneg.  */
+                                                              return 803;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx101010000xxxxxxxxxx
+                                                                 frintm.  */
+                                                              return 812;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 28) & 0x1) == 0)
+                                                      if (((word >> 16) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111111xx1x1xx01110xxx
-                                                             fsqrt.  */
-                                                          return 254;
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx000110000xxxxxxxxxx
+                                                                 fabs.  */
+                                                              return 801;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx100110000xxxxxxxxxx
+                                                                 frintp.  */
+                                                              return 810;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx0111111xx1x1xx01111xxx
-                                                             frecpx.  */
-                                                          return 499;
+                                                          if (((word >> 18) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx001110000xxxxxxxxxx
+                                                                 fsqrt.  */
+                                                              return 805;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx101110000xxxxxxxxxx
+                                                                 frintz.  */
+                                                              return 814;
+                                                            }
                                                         }
                                                     }
                                                 }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                      else
-                        {
-                          if (((word >> 11) & 0x1) == 0)
-                            {
-                              if (((word >> 28) & 0x1) == 0)
-                                {
-                                  if (((word >> 12) & 0x1) == 0)
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100000xxxxx1xx011100xx
-                                                         shadd.  */
-                                                      return 261;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100000xxxxx1xx011101xx
-                                                         uhadd.  */
-                                                      return 313;
-                                                    }
-                                                }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100001xxxxx1xx011100xx
-                                                         add.  */
-                                                      return 276;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100001xxxxx1xx011101xx
-                                                         sub.  */
-                                                      return 328;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100010xxxxx1xx011100xx
-                                                         sshl.  */
-                                                      return 268;
-                                                    }
-                                                  else
+                                                  if (((word >> 18) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx100010xxxxx1xx011101xx
-                                                         ushl.  */
-                                                      return 320;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100011xxxxx1x0011100xx
-                                                             fmaxnm.  */
-                                                          return 284;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100011xxxxx1x0011101xx
-                                                             fmaxnmp.  */
-                                                          return 335;
-                                                        }
+                                                         xxx11110xx1xx01xx10000xxxxxxxxxx
+                                                         fcvt.  */
+                                                      return 807;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 15) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100011xxxxx1x1011100xx
-                                                             fminnm.  */
-                                                          return 300;
+                                                          if (((word >> 16) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx110010000xxxxxxxxxx
+                                                                 frinta.  */
+                                                              return 816;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx1xx111010000xxxxxxxxxx
+                                                                 frintx.  */
+                                                              return 818;
+                                                            }
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx100011xxxxx1x1011101xx
-                                                             fminnmp.  */
-                                                          return 351;
+                                                             xxx11110xx1xx11x110000xxxxxxxxxx
+                                                             frinti.  */
+                                                          return 820;
                                                         }
                                                     }
                                                 }
@@ -15472,102 +16594,91 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         }
                                       else
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 3) & 0x1) == 0)
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100100xxxxx1xx011100xx
-                                                         shsub.  */
-                                                      return 264;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100100xxxxx1xx011101xx
-                                                         uhsub.  */
-                                                      return 316;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx00xxx
+                                                     fcmp.  */
+                                                  return 791;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100101xxxxx1xx011100xx
-                                                         smaxp.  */
-                                                      return 280;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100101xxxxx1xx011101xx
-                                                         umaxp.  */
-                                                      return 332;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx10xxx
+                                                     fcmpe.  */
+                                                  return 793;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 4) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100110xxxxx1xx011100xx
-                                                         smax.  */
-                                                      return 272;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100110xxxxx1xx011101xx
-                                                         umax.  */
-                                                      return 324;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx01xxx
+                                                     fcmp.  */
+                                                  return 795;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100111xxxxx1x0011100xx
-                                                             fcmeq.  */
-                                                          return 292;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx100111xxxxx1x0011101xx
-                                                             fcmge.  */
-                                                          return 341;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx100111xxxxx1x101110xxx
-                                                         fcmgt.  */
-                                                      return 355;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxxxx1000xxxxx11xxx
+                                                     fcmpe.  */
+                                                  return 797;
+                                                }
+                                            }
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             x0x11110xx1xxxxxxxx100xxxxxxxxxx
+                                             fmov.  */
+                                          return 848;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x11110xx1xxxxxx00100xxxxxxxxxx
+                                                     sqdmlal.  */
+                                                  return 416;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1x11110xx1xxxxxx10100xxxxxxxxxx
+                                                     sqdmull.  */
+                                                  return 418;
                                                 }
                                             }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x1x11110xx1xxxxxxx1100xxxxxxxxxx
+                                                 sqdmlsl.  */
+                                              return 417;
+                                            }
                                         }
                                     }
-                                  else
+                                }
+                              else
+                                {
+                                  if (((word >> 12) & 0x1) == 0)
                                     {
                                       if (((word >> 13) & 0x1) == 0)
                                         {
@@ -15575,40 +16686,51 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx101000xxxxx1xx011100xx
-                                                         srhadd.  */
-                                                      return 263;
+                                                         x0x11110xx1xxxxx000010xxxxxxxxxx
+                                                         fmul.  */
+                                                      return 822;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx101000xxxxx1xx011101xx
-                                                         urhadd.  */
-                                                      return 315;
+                                                         x1x11110xx1xxxxx000010xxxxxxxxxx
+                                                         sha1h.  */
+                                                      return 669;
                                                     }
                                                 }
                                               else
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx101001xxxxx1xx011100xx
-                                                         mla.  */
-                                                      return 278;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx100010xxxxxxxxxx
+                                                             fnmul.  */
+                                                          return 838;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx100010xxxxxxxxxx
+                                                             cmgt.  */
+                                                          return 476;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx101001xxxxx1xx011101xx
-                                                         mls.  */
-                                                      return 330;
+                                                         xx111110xx1xxxxx100010xxxxxxxxxx
+                                                         cmge.  */
+                                                      return 505;
                                                     }
                                                 }
                                             }
@@ -15618,59 +16740,158 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx101010xxxxx1xx011100xx
-                                                         srshl.  */
-                                                      return 270;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx010010xxxxxxxxxx
+                                                             fmax.  */
+                                                          return 830;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx010010xxxxxxxxxx
+                                                             sqxtn.  */
+                                                          return 480;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx101010xxxxx1xx011101xx
-                                                         urshl.  */
-                                                      return 322;
+                                                         xx111110xx1xxxxx010010xxxxxxxxxx
+                                                         uqxtn.  */
+                                                      return 509;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101011xxxxx1x0011100xx
-                                                             fadd.  */
-                                                          return 288;
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx011110xx100xx0110010xxxxxxxxxx
+                                                                     fcmgt.  */
+                                                                  return 489;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx111110xx100xx0110010xxxxxxxxxx
+                                                                     fcmge.  */
+                                                                  return 519;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111100x110xx0110010xxxxxxxxxx
+                                                                         fmaxnmp.  */
+                                                                      return 533;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111100x110xx0110010xxxxxxxxxx
+                                                                         fmaxnmp.  */
+                                                                      return 532;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111101x110xx0110010xxxxxxxxxx
+                                                                         fminnmp.  */
+                                                                      return 539;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111101x110xx0110010xxxxxxxxxx
+                                                                         fminnmp.  */
+                                                                      return 538;
+                                                                    }
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101011xxxxx1x0011101xx
-                                                             faddp.  */
-                                                          return 337;
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x1xx0110010xxxxxxxxxx
+                                                                 fcmgt.  */
+                                                              return 490;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x1xx0110010xxxxxxxxxx
+                                                                 fcmge.  */
+                                                              return 520;
+                                                            }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101011xxxxx1x1011100xx
-                                                             fsub.  */
-                                                          return 304;
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x0xx1110010xxxxxxxxxx
+                                                                 fcvtas.  */
+                                                              return 485;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x0xx1110010xxxxxxxxxx
+                                                                 fcvtau.  */
+                                                              return 515;
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101011xxxxx1x1011101xx
-                                                             fabd.  */
-                                                          return 353;
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x1xx1110010xxxxxxxxxx
+                                                                 fcvtas.  */
+                                                              return 486;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x1xx1110010xxxxxxxxxx
+                                                                 fcvtau.  */
+                                                              return 516;
+                                                            }
                                                         }
                                                     }
                                                 }
@@ -15684,286 +16905,173 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx101100xxxxx1xx011100xx
-                                                         cmgt.  */
-                                                      return 266;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx001010xxxxxxxxxx
+                                                             fadd.  */
+                                                          return 826;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx001010xxxxxxxxxx
+                                                             sha256su0.  */
+                                                          return 671;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx101100xxxxx1xx011101xx
-                                                         cmhi.  */
-                                                      return 318;
+                                                         xx111110xx1xxxxx001010xxxxxxxxxx
+                                                         sqxtun.  */
+                                                      return 508;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx101101xxxxx1xx011100xx
-                                                         sqdmulh.  */
-                                                      return 282;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx101101xxxxx1xx011101xx
-                                                         sqrdmulh.  */
-                                                      return 334;
-                                                    }
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx101110xxxxx1xx011100xx
-                                                         sabd.  */
-                                                      return 274;
-                                                    }
-                                                  else
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx101110xxxxx1xx011101xx
-                                                         uabd.  */
-                                                      return 326;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101111xxxxx1x0011100xx
-                                                             fmax.  */
-                                                          return 294;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101111xxxxx1x0011101xx
-                                                             fmaxp.  */
-                                                          return 345;
-                                                        }
+                                                         xxx11110xx1xxxx0101010xxxxxxxxxx
+                                                         cmlt.  */
+                                                      return 478;
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 29) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101111xxxxx1x1011100xx
-                                                             fmin.  */
-                                                          return 306;
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 481;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 511;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 495;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x0xx1101010xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 523;
+                                                                }
+                                                            }
                                                         }
                                                       else
                                                         {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx101111xxxxx1x1011101xx
-                                                             fminp.  */
-                                                          return 359;
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtns.  */
+                                                                  return 482;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtnu.  */
+                                                                  return 512;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtps.  */
+                                                                  return 496;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x1xx1101010xxxxxxxxxx
+                                                                     fcvtpu.  */
+                                                                  return 524;
+                                                                }
+                                                            }
                                                         }
                                                     }
                                                 }
                                             }
-                                        }
-                                    }
-                                }
-                              else
-                                {
-                                  if (((word >> 29) & 0x1) == 0)
-                                    {
-                                      if (((word >> 30) & 0x1) == 0)
-                                        {
-                                          if (((word >> 4) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxx0xxxxx10xxxxxxxxx1xx0111100x
-                                                 fccmp.  */
-                                              return 752;
-                                            }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxx1xxxxx10xxxxxxxxx1xx0111100x
-                                                 fccmpe.  */
-                                              return 754;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 12) & 0x1) == 0)
-                                            {
-                                              if (((word >> 13) & 0x1) == 0)
+                                              if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 14) & 0x1) == 0)
+                                                  if (((word >> 29) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx10000xxxxxx1xx0111101x
-                                                         add.  */
-                                                      return 556;
+                                                         xx011110xx1xxxxx011010xxxxxxxxxx
+                                                         fmaxnm.  */
+                                                      return 834;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx10001xxxxxx1xx0111101x
-                                                         sshl.  */
-                                                      return 554;
+                                                         xx111110xx1xxxxx011010xxxxxxxxxx
+                                                         fcvtxn.  */
+                                                      return 510;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1001xxxxxxx1xx0111101x
-                                                     fcmeq.  */
-                                                  return 546;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 13) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1010xxxxxxx1xx0111101x
-                                                     srshl.  */
-                                                  return 555;
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 15) & 0x1) == 0)
+                                                  if (((word >> 19) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1011x0xxxxx1xx0111101x
-                                                         cmgt.  */
-                                                      return 552;
+                                                         xxx11110xx1x0xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 493;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1011x1xxxxx1xx0111101x
-                                                         sqdmulh.  */
-                                                      return 543;
+                                                         xxx11110xx1x1xxx111010xxxxxxxxxx
+                                                         fcmlt.  */
+                                                      return 494;
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                   else
-                                    {
-                                      if (((word >> 12) & 0x1) == 0)
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 14) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx10000xxxxxx1xx011111xx
-                                                     sub.  */
-                                                  return 577;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx10001xxxxxx1xx011111xx
-                                                     ushl.  */
-                                                  return 575;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 23) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1001xxxxxxx1x0011111xx
-                                                     fcmge.  */
-                                                  return 563;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1001xxxxxxx1x1011111xx
-                                                     fcmgt.  */
-                                                  return 569;
-                                                }
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 13) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1010x0xxxxx1xx011111xx
-                                                     urshl.  */
-                                                  return 576;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1010x1xxxxx1xx011111xx
-                                                     fabd.  */
-                                                  return 567;
-                                                }
-                                            }
-                                          else
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1011x0xxxxx1xx011111xx
-                                                     cmhi.  */
-                                                  return 573;
-                                                }
-                                              else
-                                                {
-                                                  /* 33222222222211111111110000000000
-                                                     10987654321098765432109876543210
-                                                     xxxxxxxxxx1011x1xxxxx1xx011111xx
-                                                     sqrdmulh.  */
-                                                  return 562;
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                          else
-                            {
-                              if (((word >> 28) & 0x1) == 0)
-                                {
-                                  if (((word >> 12) & 0x1) == 0)
                                     {
                                       if (((word >> 13) & 0x1) == 0)
                                         {
@@ -15971,21 +17079,21 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 30) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110000xxxxx1xx011100xx
-                                                         sqadd.  */
-                                                      return 262;
+                                                         x0x11110xx1xxxxx000110xxxxxxxxxx
+                                                         fdiv.  */
+                                                      return 824;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110000xxxxx1xx011101xx
-                                                         uqadd.  */
-                                                      return 314;
+                                                         x1x11110xx1xxxxx000110xxxxxxxxxx
+                                                         sha1su1.  */
+                                                      return 670;
                                                     }
                                                 }
                                               else
@@ -15994,17 +17102,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110001xxxxx1xx011100xx
-                                                         cmtst.  */
-                                                      return 277;
+                                                         xx011110xx1xxxxx100110xxxxxxxxxx
+                                                         cmeq.  */
+                                                      return 477;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110001xxxxx1xx011101xx
-                                                         cmeq.  */
-                                                      return 329;
+                                                         xx111110xx1xxxxx100110xxxxxxxxxx
+                                                         cmle.  */
+                                                      return 506;
                                                     }
                                                 }
                                             }
@@ -16012,40 +17120,161 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110010xxxxx1xx011100xx
-                                                         sqshl.  */
-                                                      return 269;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110010xxxxx1xx011101xx
-                                                         uqshl.  */
-                                                      return 321;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xxx11110xx1xxxxx010110xxxxxxxxxx
+                                                     fmin.  */
+                                                  return 832;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110011xxxxx1x001110xxx
-                                                         fmla.  */
-                                                      return 286;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx011110xx100xx0110110xxxxxxxxxx
+                                                                     fcmeq.  */
+                                                                  return 491;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx111110xx100xx0110110xxxxxxxxxx
+                                                                     fcmle.  */
+                                                                  return 521;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx011110xx110xx0110110xxxxxxxxxx
+                                                                     faddp.  */
+                                                                  return 535;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx111110xx110xx0110110xxxxxxxxxx
+                                                                     faddp.  */
+                                                                  return 534;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 29) & 0x1) == 0)
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx011110xx1x1xx0110110xxxxxxxxxx
+                                                                 fcmeq.  */
+                                                              return 492;
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xx111110xx1x1xx0110110xxxxxxxxxx
+                                                                 fcmle.  */
+                                                              return 522;
+                                                            }
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110011xxxxx1x101110xxx
-                                                         fmls.  */
-                                                      return 302;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x0xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 487;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x0xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 517;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x0xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 499;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x0xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 527;
+                                                                }
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x1xx1110110xxxxxxxxxx
+                                                                     scvtf.  */
+                                                                  return 488;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x1xx1110110xxxxxxxxxx
+                                                                     ucvtf.  */
+                                                                  return 518;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x1xx1110110xxxxxxxxxx
+                                                                     frecpe.  */
+                                                                  return 500;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x1xx1110110xxxxxxxxxx
+                                                                     frsqrte.  */
+                                                                  return 528;
+                                                                }
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
@@ -16058,38 +17287,148 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110100xxxxx1xx011100xx
-                                                         sqsub.  */
-                                                      return 265;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx001110xxxxxxxxxx
+                                                             fsub.  */
+                                                          return 828;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx001110xxxxxxxxxx
+                                                             suqadd.  */
+                                                          return 474;
+                                                        }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110100xxxxx1xx011101xx
-                                                         uqsub.  */
-                                                      return 317;
+                                                         xx111110xx1xxxxx001110xxxxxxxxxx
+                                                         usqadd.  */
+                                                      return 503;
                                                     }
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110101xxxxx1xx011100xx
-                                                         sminp.  */
-                                                      return 281;
+                                                      if (((word >> 29) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx011110xx1xxxx0101110xxxxxxxxxx
+                                                             abs.  */
+                                                          return 479;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xx111110xx1xxxx0101110xxxxxxxxxx
+                                                             neg.  */
+                                                          return 507;
+                                                        }
                                                     }
                                                   else
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110101xxxxx1xx011101xx
-                                                         uminp.  */
-                                                      return 333;
+                                                      if (((word >> 19) & 0x1) == 0)
+                                                        {
+                                                          if (((word >> 20) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 23) & 0x1) == 0)
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111100x100xx1101110xxxxxxxxxx
+                                                                         fcvtms.  */
+                                                                      return 483;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111100x100xx1101110xxxxxxxxxx
+                                                                         fcvtmu.  */
+                                                                      return 513;
+                                                                    }
+                                                                }
+                                                              else
+                                                                {
+                                                                  if (((word >> 29) & 0x1) == 0)
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx0111101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzs.  */
+                                                                      return 497;
+                                                                    }
+                                                                  else
+                                                                    {
+                                                                      /* 33222222222211111111110000000000
+                                                                         10987654321098765432109876543210
+                                                                         xx1111101x100xx1101110xxxxxxxxxx
+                                                                         fcvtzu.  */
+                                                                      return 525;
+                                                                    }
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              /* 33222222222211111111110000000000
+                                                                 10987654321098765432109876543210
+                                                                 xxx11110xx110xx1101110xxxxxxxxxx
+                                                                 addp.  */
+                                                              return 531;
+                                                            }
+                                                        }
+                                                      else
+                                                        {
+                                                          if (((word >> 23) & 0x1) == 0)
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtms.  */
+                                                                  return 484;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111100x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtmu.  */
+                                                                  return 514;
+                                                                }
+                                                            }
+                                                          else
+                                                            {
+                                                              if (((word >> 29) & 0x1) == 0)
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx0111101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzs.  */
+                                                                  return 498;
+                                                                }
+                                                              else
+                                                                {
+                                                                  /* 33222222222211111111110000000000
+                                                                     10987654321098765432109876543210
+                                                                     xx1111101x1x1xx1101110xxxxxxxxxx
+                                                                     fcvtzu.  */
+                                                                  return 526;
+                                                                }
+                                                            }
+                                                        }
                                                     }
                                                 }
                                             }
@@ -16099,52 +17438,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   if (((word >> 29) & 0x1) == 0)
                                                     {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110110xxxxx1xx011100xx
-                                                         smin.  */
-                                                      return 273;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110110xxxxx1xx011101xx
-                                                         umin.  */
-                                                      return 325;
-                                                    }
-                                                }
-                                              else
-                                                {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110111xxxxx1x001110xxx
-                                                         facge.  */
-                                                      return 343;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx110111xxxxx1x101110xxx
-                                                         facgt.  */
-                                                      return 357;
+                                                      if (((word >> 30) & 0x1) == 0)
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x0011110xx1xxxxx011110xxxxxxxxxx
+                                                             fminnm.  */
+                                                          return 836;
+                                                        }
+                                                      else
+                                                        {
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             x1011110xx1xxxxx011110xxxxxxxxxx
+                                                             sqabs.  */
+                                                          return 475;
+                                                        }
                                                     }
-                                                }
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 13) & 0x1) == 0)
-                                        {
-                                          if (((word >> 14) & 0x1) == 0)
-                                            {
-                                              if (((word >> 15) & 0x1) == 0)
+                                                  else
+                                                    {
+                                                      /* 33222222222211111111110000000000
+                                                         10987654321098765432109876543210
+                                                         xx111110xx1xxxxx011110xxxxxxxxxx
+                                                         sqneg.  */
+                                                      return 504;
+                                                    }
+                                                }
+                                              else
                                                 {
-                                                  if (((word >> 22) & 0x1) == 0)
+                                                  if (((word >> 16) & 0x1) == 0)
                                                     {
                                                       if (((word >> 23) & 0x1) == 0)
                                                         {
@@ -16152,17 +17474,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx100011100xx
-                                                                 and.  */
-                                                              return 298;
+                                                                 xx0111100x1xxxx0111110xxxxxxxxxx
+                                                                 fmaxp.  */
+                                                              return 537;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx100011101xx
-                                                                 eor.  */
-                                                              return 349;
+                                                                 xx1111100x1xxxx0111110xxxxxxxxxx
+                                                                 fmaxp.  */
+                                                              return 536;
                                                             }
                                                         }
                                                       else
@@ -16171,206 +17493,215 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx101011100xx
-                                                                 orr.  */
-                                                              return 310;
+                                                                 xx0111101x1xxxx0111110xxxxxxxxxx
+                                                                 fminp.  */
+                                                              return 541;
                                                             }
                                                           else
                                                             {
                                                               /* 33222222222211111111110000000000
                                                                  10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx101011101xx
-                                                                 bit.  */
-                                                              return 361;
+                                                                 xx1111101x1xxxx0111110xxxxxxxxxx
+                                                                 fminp.  */
+                                                              return 540;
                                                             }
                                                         }
                                                     }
                                                   else
                                                     {
-                                                      if (((word >> 23) & 0x1) == 0)
+                                                      if (((word >> 19) & 0x1) == 0)
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx110011100xx
-                                                                 bic.  */
-                                                              return 299;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx110011101xx
-                                                                 bsl.  */
-                                                              return 350;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1x0xx1111110xxxxxxxxxx
+                                                             frecpx.  */
+                                                          return 501;
                                                         }
                                                       else
                                                         {
-                                                          if (((word >> 29) & 0x1) == 0)
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx111011100xx
-                                                                 orn.  */
-                                                              return 312;
-                                                            }
-                                                          else
-                                                            {
-                                                              /* 33222222222211111111110000000000
-                                                                 10987654321098765432109876543210
-                                                                 xxxxxxxxxx111000xxxxx111011101xx
-                                                                 bif.  */
-                                                              return 362;
-                                                            }
+                                                          /* 33222222222211111111110000000000
+                                                             10987654321098765432109876543210
+                                                             xxx11110xx1x1xx1111110xxxxxxxxxx
+                                                             frecpx.  */
+                                                          return 502;
                                                         }
                                                     }
                                                 }
-                                              else
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                          else
+                            {
+                              if (((word >> 11) & 0x1) == 0)
+                                {
+                                  if (((word >> 29) & 0x1) == 0)
+                                    {
+                                      if (((word >> 30) & 0x1) == 0)
+                                        {
+                                          if (((word >> 4) & 0x1) == 0)
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0011110xx1xxxxxxxxx01xxxxx0xxxx
+                                                 fccmp.  */
+                                              return 787;
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 x0011110xx1xxxxxxxxx01xxxxx1xxxx
+                                                 fccmpe.  */
+                                              return 789;
+                                            }
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 12) & 0x1) == 0)
+                                            {
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 14) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx111001xxxxx1xx011100xx
-                                                         mul.  */
-                                                      return 279;
+                                                         x1011110xx1xxxxxx00001xxxxxxxxxx
+                                                         add.  */
+                                                      return 559;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx111001xxxxx1xx011101xx
-                                                         pmul.  */
-                                                      return 331;
+                                                         x1011110xx1xxxxxx10001xxxxxxxxxx
+                                                         sshl.  */
+                                                      return 557;
                                                     }
                                                 }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx1xxxxxxx1001xxxxxxxxxx
+                                                     fcmeq.  */
+                                                  return 549;
+                                                }
                                             }
                                           else
                                             {
-                                              if (((word >> 15) & 0x1) == 0)
+                                              if (((word >> 13) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111010xxxxx1xx011100xx
-                                                         sqrshl.  */
-                                                      return 271;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111010xxxxx1xx011101xx
-                                                         uqrshl.  */
-                                                      return 323;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1011110xx1xxxxxxx0101xxxxxxxxxx
+                                                     srshl.  */
+                                                  return 558;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
+                                                  if (((word >> 15) & 0x1) == 0)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx111011xxxxx1xx011100xx
-                                                         fmulx.  */
-                                                      return 290;
+                                                         x1011110xx1xxxxx0x1101xxxxxxxxxx
+                                                         cmgt.  */
+                                                      return 555;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx111011xxxxx1xx011101xx
-                                                         fmul.  */
-                                                      return 339;
+                                                         x1011110xx1xxxxx1x1101xxxxxxxxxx
+                                                         sqdmulh.  */
+                                                      return 546;
                                                     }
                                                 }
                                             }
                                         }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 12) & 0x1) == 0)
+                                        {
+                                          if (((word >> 13) & 0x1) == 0)
+                                            {
+                                              if (((word >> 14) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxxx00001xxxxxxxxxx
+                                                     sub.  */
+                                                  return 580;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxxx10001xxxxxxxxxx
+                                                     ushl.  */
+                                                  return 578;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx1111100x1xxxxxxx1001xxxxxxxxxx
+                                                     fcmge.  */
+                                                  return 566;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx1111101x1xxxxxxx1001xxxxxxxxxx
+                                                     fcmgt.  */
+                                                  return 572;
+                                                }
+                                            }
+                                        }
                                       else
                                         {
-                                          if (((word >> 14) & 0x1) == 0)
+                                          if (((word >> 13) & 0x1) == 0)
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111100xxxxx1xx011100xx
-                                                         cmge.  */
-                                                      return 267;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111100xxxxx1xx011101xx
-                                                         cmhs.  */
-                                                      return 319;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxx0x0101xxxxxxxxxx
+                                                     urshl.  */
+                                                  return 579;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx111101xxxxx1xx01110xxx
-                                                     addp.  */
-                                                  return 283;
+                                                     xx111110xx1xxxxx1x0101xxxxxxxxxx
+                                                     fabd.  */
+                                                  return 570;
                                                 }
                                             }
                                           else
                                             {
                                               if (((word >> 15) & 0x1) == 0)
                                                 {
-                                                  if (((word >> 29) & 0x1) == 0)
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111110xxxxx1xx011100xx
-                                                         saba.  */
-                                                      return 275;
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111110xxxxx1xx011101xx
-                                                         uaba.  */
-                                                      return 327;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxx0x1101xxxxxxxxxx
+                                                     cmhi.  */
+                                                  return 576;
                                                 }
                                               else
                                                 {
-                                                  if (((word >> 23) & 0x1) == 0)
-                                                    {
-                                                      if (((word >> 29) & 0x1) == 0)
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx111111xxxxx1x0011100xx
-                                                             frecps.  */
-                                                          return 296;
-                                                        }
-                                                      else
-                                                        {
-                                                          /* 33222222222211111111110000000000
-                                                             10987654321098765432109876543210
-                                                             xxxxxxxxxx111111xxxxx1x0011101xx
-                                                             fdiv.  */
-                                                          return 347;
-                                                        }
-                                                    }
-                                                  else
-                                                    {
-                                                      /* 33222222222211111111110000000000
-                                                         10987654321098765432109876543210
-                                                         xxxxxxxxxx111111xxxxx1x101110xxx
-                                                         frsqrts.  */
-                                                      return 308;
-                                                    }
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx111110xx1xxxxx1x1101xxxxxxxxxx
+                                                     sqrdmulh.  */
+                                                  return 565;
                                                 }
                                             }
                                         }
@@ -16384,9 +17715,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx11xxxxxxxxx1xx0111100x
+                                             x0011110xx1xxxxxxxxx11xxxxxxxxxx
                                              fcsel.  */
-                                          return 815;
+                                          return 850;
                                         }
                                       else
                                         {
@@ -16400,35 +17731,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx110000xxxxx1xx0111101x
+                                                             x1011110xx1xxxxx000011xxxxxxxxxx
                                                              sqadd.  */
-                                                          return 539;
+                                                          return 542;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx110001xxxxx1xx0111101x
+                                                             x1011110xx1xxxxx100011xxxxxxxxxx
                                                              cmtst.  */
-                                                          return 557;
+                                                          return 560;
                                                         }
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx11001xxxxxx1xx0111101x
+                                                         x1011110xx1xxxxxx10011xxxxxxxxxx
                                                          sqshl.  */
-                                                      return 541;
+                                                      return 544;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1101xxxxxxx1xx0111101x
+                                                     x1011110xx1xxxxxxx1011xxxxxxxxxx
                                                      sqsub.  */
-                                                  return 540;
+                                                  return 543;
                                                 }
                                             }
                                           else
@@ -16439,17 +17770,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1110x0xxxxx1xx0111101x
+                                                         x1011110xx1xxxxx0x0111xxxxxxxxxx
                                                          sqrshl.  */
-                                                      return 542;
+                                                      return 545;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx1110x1xxxxx1xx0111101x
+                                                         x1011110xx1xxxxx1x0111xxxxxxxxxx
                                                          fmulx.  */
-                                                      return 544;
+                                                      return 547;
                                                     }
                                                 }
                                               else
@@ -16458,9 +17789,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx11110xxxxxx1xx0111101x
+                                                         x1011110xx1xxxxxx01111xxxxxxxxxx
                                                          cmge.  */
-                                                      return 553;
+                                                      return 556;
                                                     }
                                                   else
                                                     {
@@ -16468,17 +17799,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx11111xxxxxx1x00111101x
+                                                             x10111100x1xxxxxx11111xxxxxxxxxx
                                                              frecps.  */
-                                                          return 548;
+                                                          return 551;
                                                         }
                                                       else
                                                         {
                                                           /* 33222222222211111111110000000000
                                                              10987654321098765432109876543210
-                                                             xxxxxxxxxx11111xxxxxx1x10111101x
+                                                             x10111101x1xxxxxx11111xxxxxxxxxx
                                                              frsqrts.  */
-                                                          return 550;
+                                                          return 553;
                                                         }
                                                     }
                                                 }
@@ -16497,26 +17828,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110000xxxxx1xx011111xx
+                                                         xx111110xx1xxxxx000011xxxxxxxxxx
                                                          uqadd.  */
-                                                      return 558;
+                                                      return 561;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx110001xxxxx1xx011111xx
+                                                         xx111110xx1xxxxx100011xxxxxxxxxx
                                                          cmeq.  */
-                                                      return 578;
+                                                      return 581;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx11001xxxxxx1xx011111xx
+                                                     xx111110xx1xxxxxx10011xxxxxxxxxx
                                                      uqshl.  */
-                                                  return 560;
+                                                  return 563;
                                                 }
                                             }
                                           else
@@ -16525,9 +17856,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx11010xxxxxx1xx011111xx
+                                                     xx111110xx1xxxxxx01011xxxxxxxxxx
                                                      uqsub.  */
-                                                  return 559;
+                                                  return 562;
                                                 }
                                               else
                                                 {
@@ -16535,17 +17866,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx11011xxxxxx1x0011111xx
+                                                         xx1111100x1xxxxxx11011xxxxxxxxxx
                                                          facge.  */
-                                                      return 565;
+                                                      return 568;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx11011xxxxxx1x1011111xx
+                                                         xx1111101x1xxxxxx11011xxxxxxxxxx
                                                          facgt.  */
-                                                      return 571;
+                                                      return 574;
                                                     }
                                                 }
                                             }
@@ -16556,17 +17887,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1110xxxxxxx1xx011111xx
+                                                 xx111110xx1xxxxxxx0111xxxxxxxxxx
                                                  uqrshl.  */
-                                              return 561;
+                                              return 564;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1111xxxxxxx1xx011111xx
+                                                 xx111110xx1xxxxxxx1111xxxxxxxxxx
                                                  cmhs.  */
-                                              return 574;
+                                              return 577;
                                             }
                                         }
                                     }
@@ -16589,19 +17920,63 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       if (((word >> 14) & 0x1) == 0)
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx0x0000xxxxxxxx11110xxx
-                                             mla.  */
-                                          return 117;
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx0000x0xxxxxxxxxx
+                                                     fmlal.  */
+                                                  return 2032;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx0000x0xxxxxxxxxx
+                                                     fmlal.  */
+                                                  return 2036;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101111xxxxxxxx0000x0xxxxxxxxxx
+                                                 mla.  */
+                                              return 117;
+                                            }
                                         }
                                       else
                                         {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx0x0010xxxxxxxx11110xxx
-                                             mls.  */
-                                          return 120;
+                                          if (((word >> 29) & 0x1) == 0)
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx0100x0xxxxxxxxxx
+                                                     fmlsl.  */
+                                                  return 2033;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx0100x0xxxxxxxxxx
+                                                     fmlsl.  */
+                                                  return 2037;
+                                                }
+                                            }
+                                          else
+                                            {
+                                              /* 33222222222211111111110000000000
+                                                 10987654321098765432109876543210
+                                                 xx101111xxxxxxxx0100x0xxxxxxxxxx
+                                                 mls.  */
+                                              return 120;
+                                            }
                                         }
                                     }
                                   else
@@ -16614,7 +17989,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0100xxxxxxxx1111000x
+                                                     x0001111xxxxxxxx0010x0xxxxxxxxxx
                                                      smlal.  */
                                                   return 96;
                                                 }
@@ -16622,7 +17997,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0100xxxxxxxx1111001x
+                                                     x1001111xxxxxxxx0010x0xxxxxxxxxx
                                                      smlal2.  */
                                                   return 97;
                                                 }
@@ -16633,7 +18008,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0100xxxxxxxx1111010x
+                                                     x0101111xxxxxxxx0010x0xxxxxxxxxx
                                                      umlal.  */
                                                   return 118;
                                                 }
@@ -16641,7 +18016,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0100xxxxxxxx1111011x
+                                                     x1101111xxxxxxxx0010x0xxxxxxxxxx
                                                      umlal2.  */
                                                   return 119;
                                                 }
@@ -16655,7 +18030,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0110xxxxxxxx1111000x
+                                                     x0001111xxxxxxxx0110x0xxxxxxxxxx
                                                      smlsl.  */
                                                   return 100;
                                                 }
@@ -16663,7 +18038,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0110xxxxxxxx1111001x
+                                                     x1001111xxxxxxxx0110x0xxxxxxxxxx
                                                      smlsl2.  */
                                                   return 101;
                                                 }
@@ -16674,7 +18049,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0110xxxxxxxx1111010x
+                                                     x0101111xxxxxxxx0110x0xxxxxxxxxx
                                                      umlsl.  */
                                                   return 121;
                                                 }
@@ -16682,7 +18057,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x0110xxxxxxxx1111011x
+                                                     x1101111xxxxxxxx0110x0xxxxxxxxxx
                                                      umlsl2.  */
                                                   return 122;
                                                 }
@@ -16692,87 +18067,98 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                 }
                               else
                                 {
-                                  if (((word >> 13) & 0x1) == 0)
+                                  if (((word >> 29) & 0x1) == 0)
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 13) & 0x1) == 0)
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1000xxxxxxx011110xxx
-                                                 fmla.  */
-                                              return 112;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx0011110xxxxxxx0001x0xxxxxxxxxx
+                                                     fmla.  */
+                                                  return 112;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx0011111xxxxxxx0001x0xxxxxxxxxx
+                                                     fmla.  */
+                                                  return 111;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1000xxxxxxx111110xxx
-                                                 fmla.  */
-                                              return 111;
+                                              if (((word >> 23) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx0011110xxxxxxx0101x0xxxxxxxxxx
+                                                     fmls.  */
+                                                  return 114;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     xx0011111xxxxxxx0101x0xxxxxxxxxx
+                                                     fmls.  */
+                                                  return 113;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 23) & 0x1) == 0)
+                                          if (((word >> 14) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1010xxxxxxx011110xxx
-                                                 fmls.  */
-                                              return 114;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx0011x0xxxxxxxxxx
+                                                     sqdmlal.  */
+                                                  return 98;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx0011x0xxxxxxxxxx
+                                                     sqdmlal2.  */
+                                                  return 99;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1010xxxxxxx111110xxx
-                                                 fmls.  */
-                                              return 113;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx0111x0xxxxxxxxxx
+                                                     sqdmlsl.  */
+                                                  return 102;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx0111x0xxxxxxxxxx
+                                                     sqdmlsl2.  */
+                                                  return 103;
+                                                }
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1100xxxxxxxx11110x0x
-                                                 sqdmlal.  */
-                                              return 98;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1100xxxxxxxx11110x1x
-                                                 sqdmlal2.  */
-                                              return 99;
-                                            }
-                                        }
-                                      else
-                                        {
-                                          if (((word >> 30) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1110xxxxxxxx11110x0x
-                                                 sqdmlsl.  */
-                                              return 102;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1110xxxxxxxx11110x1x
-                                                 sqdmlsl2.  */
-                                              return 103;
-                                            }
-                                        }
+                                      /* 33222222222211111111110000000000
+                                         10987654321098765432109876543210
+                                         xx101111xxxxxxxx0xx1x0xxxxxxxxxx
+                                         fcmla.  */
+                                      return 129;
                                     }
                                 }
                             }
@@ -16784,17 +18170,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx1x0xx0xxxxxxxx111100xx
+                                         xx001111xxxxxxxx0xx0x1xxxxxxxxxx
                                          movi.  */
-                                      return 130;
+                                      return 131;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx1x0xx0xxxxxxxx111101xx
+                                         xx101111xxxxxxxx0xx0x1xxxxxxxxxx
                                          mvni.  */
-                                      return 138;
+                                      return 139;
                                     }
                                 }
                               else
@@ -16803,17 +18189,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx1x1xx0xxxxxxxx111100xx
+                                         xx001111xxxxxxxx0xx1x1xxxxxxxxxx
                                          orr.  */
-                                      return 131;
+                                      return 132;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx1x1xx0xxxxxxxx111101xx
+                                         xx101111xxxxxxxx0xx1x1xxxxxxxxxx
                                          bic.  */
-                                      return 139;
+                                      return 140;
                                     }
                                 }
                             }
@@ -16828,17 +18214,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx0xxxxx0xx1111100x
+                                         x0011111xx0xxxxx0xxxxxxxxxxxxxxx
                                          fmadd.  */
-                                      return 805;
+                                      return 840;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx0xxxxx1xx1111100x
+                                         x0011111xx1xxxxx0xxxxxxxxxxxxxxx
                                          fnmadd.  */
-                                      return 809;
+                                      return 844;
                                     }
                                 }
                               else
@@ -16853,17 +18239,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0xx000xxxxxxx01111101x
+                                                     x10111110xxxxxxx000xx0xxxxxxxxxx
                                                      fmla.  */
-                                                  return 422;
+                                                  return 425;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0xx000xxxxxxx11111101x
+                                                     x10111111xxxxxxx000xx0xxxxxxxxxx
                                                      fmla.  */
-                                                  return 421;
+                                                  return 424;
                                                 }
                                             }
                                           else
@@ -16872,17 +18258,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0xx010xxxxxxx01111101x
+                                                     x10111110xxxxxxx010xx0xxxxxxxxxx
                                                      fmls.  */
-                                                  return 424;
+                                                  return 427;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0xx010xxxxxxx11111101x
+                                                     x10111111xxxxxxx010xx0xxxxxxxxxx
                                                      fmls.  */
-                                                  return 423;
+                                                  return 426;
                                                 }
                                             }
                                         }
@@ -16892,17 +18278,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0xx100xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx001xx0xxxxxxxxxx
                                                  sqdmlal.  */
-                                              return 416;
+                                              return 419;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0xx110xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx011xx0xxxxxxxxxx
                                                  sqdmlsl.  */
-                                              return 417;
+                                              return 420;
                                             }
                                         }
                                     }
@@ -16914,17 +18300,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1x00x0xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx0x00x1xxxxxxxxxx
                                                  sshr.  */
-                                              return 581;
+                                              return 584;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1x01x0xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx0x10x1xxxxxxxxxx
                                                  srshr.  */
-                                              return 583;
+                                              return 586;
                                             }
                                         }
                                       else
@@ -16935,17 +18321,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1x1000xxxxxxxx1111101x
+                                                     x1011111xxxxxxxx0001x1xxxxxxxxxx
                                                      ssra.  */
-                                                  return 582;
+                                                  return 585;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1x1010xxxxxxxx1111101x
+                                                     x1011111xxxxxxxx0101x1xxxxxxxxxx
                                                      shl.  */
-                                                  return 585;
+                                                  return 588;
                                                 }
                                             }
                                           else
@@ -16954,17 +18340,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1x1100xxxxxxxx1111101x
+                                                     x1011111xxxxxxxx0011x1xxxxxxxxxx
                                                      srsra.  */
-                                                  return 584;
+                                                  return 587;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1x1110xxxxxxxx1111101x
+                                                     x1011111xxxxxxxx0111x1xxxxxxxxxx
                                                      sqshl.  */
-                                                  return 586;
+                                                  return 589;
                                                 }
                                             }
                                         }
@@ -16981,17 +18367,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx0000xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0000xxxxxxxxxxxx
                                              ushr.  */
-                                          return 593;
+                                          return 596;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx0010xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0100xxxxxxxxxxxx
                                              sri.  */
-                                          return 597;
+                                          return 600;
                                         }
                                     }
                                   else
@@ -17000,17 +18386,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx0100xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0010xxxxxxxxxxxx
                                              urshr.  */
-                                          return 595;
+                                          return 598;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx0110xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0110xxxxxxxxxxxx
                                              sqshlu.  */
-                                          return 599;
+                                          return 602;
                                         }
                                     }
                                 }
@@ -17022,17 +18408,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx1000xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0001xxxxxxxxxxxx
                                              usra.  */
-                                          return 594;
+                                          return 597;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx1010xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0101xxxxxxxxxxxx
                                              sli.  */
-                                          return 598;
+                                          return 601;
                                         }
                                     }
                                   else
@@ -17041,17 +18427,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx1100xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0011xxxxxxxxxxxx
                                              ursra.  */
-                                          return 596;
+                                          return 599;
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxxxx1110xxxxxxxx111111xx
+                                             xx111111xxxxxxxx0111xxxxxxxxxxxx
                                              uqshl.  */
-                                          return 600;
+                                          return 603;
                                         }
                                     }
                                 }
@@ -17062,76 +18448,87 @@ aarch64_opcode_lookup_1 (uint32_t word)
                     {
                       if (((word >> 28) & 0x1) == 0)
                         {
-                          if (((word >> 10) & 0x1) == 0)
+                          if (((word >> 14) & 0x1) == 0)
                             {
-                              if (((word >> 12) & 0x1) == 0)
+                              if (((word >> 10) & 0x1) == 0)
                                 {
-                                  if (((word >> 13) & 0x1) == 0)
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx0x0001xxxxxxxx11110xxx
-                                             mul.  */
-                                          return 104;
-                                        }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx0x0011xxxxxxxx11110xxx
-                                             sqdmulh.  */
-                                          return 109;
-                                        }
-                                    }
-                                  else
+                                  if (((word >> 12) & 0x1) == 0)
                                     {
-                                      if (((word >> 29) & 0x1) == 0)
+                                      if (((word >> 13) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 29) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0x01x1xxxxxxxx1111000x
-                                                 smull.  */
-                                              return 105;
+                                                 xx001111xxxxxxxx1000x0xxxxxxxxxx
+                                                 mul.  */
+                                              return 104;
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x01x1xxxxxxxx1111001x
-                                                 smull2.  */
-                                              return 106;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0101111xxxxxxxx1000x0xxxxxxxxxx
+                                                     fmlal2.  */
+                                                  return 2034;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1101111xxxxxxxx1000x0xxxxxxxxxx
+                                                     fmlal2.  */
+                                                  return 2038;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 29) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x01x1xxxxxxxx1111010x
-                                                 umull.  */
-                                              return 123;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx1010x0xxxxxxxxxx
+                                                     smull.  */
+                                                  return 105;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx1010x0xxxxxxxxxx
+                                                     smull2.  */
+                                                  return 106;
+                                                }
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x01x1xxxxxxxx1111011x
-                                                 umull2.  */
-                                              return 124;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0101111xxxxxxxx1010x0xxxxxxxxxx
+                                                     umull.  */
+                                                  return 123;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1101111xxxxxxxx1010x0xxxxxxxxxx
+                                                     umull2.  */
+                                                  return 124;
+                                                }
                                             }
                                         }
                                     }
-                                }
-                              else
-                                {
-                                  if (((word >> 13) & 0x1) == 0)
+                                  else
                                     {
-                                      if (((word >> 14) & 0x1) == 0)
+                                      if (((word >> 13) & 0x1) == 0)
                                         {
                                           if (((word >> 23) & 0x1) == 0)
                                             {
@@ -17139,7 +18536,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x1001xxxxxxx0111100xx
+                                                     xx0011110xxxxxxx1001x0xxxxxxxxxx
                                                      fmul.  */
                                                   return 116;
                                                 }
@@ -17147,7 +18544,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x1001xxxxxxx0111101xx
+                                                     xx1011110xxxxxxx1001x0xxxxxxxxxx
                                                      fmulx.  */
                                                   return 126;
                                                 }
@@ -17158,7 +18555,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x1001xxxxxxx1111100xx
+                                                     xx0011111xxxxxxx1001x0xxxxxxxxxx
                                                      fmul.  */
                                                   return 115;
                                                 }
@@ -17166,41 +18563,19 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x1001xxxxxxx1111101xx
+                                                     xx1011111xxxxxxx1001x0xxxxxxxxxx
                                                      fmulx.  */
                                                   return 125;
                                                 }
                                             }
                                         }
                                       else
-                                        {
-                                          if (((word >> 29) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1011xxxxxxxx111100xx
-                                                 sqrdmulh.  */
-                                              return 110;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1011xxxxxxxx111101xx
-                                                 sqrdmlah.  */
-                                              return 127;
-                                            }
-                                        }
-                                    }
-                                  else
-                                    {
-                                      if (((word >> 14) & 0x1) == 0)
                                         {
                                           if (((word >> 30) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1101xxxxxxxx11110x0x
+                                                 x0x01111xxxxxxxx1011x0xxxxxxxxxx
                                                  sqdmull.  */
                                               return 107;
                                             }
@@ -17208,27 +18583,16 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0x1101xxxxxxxx11110x1x
+                                                 x1x01111xxxxxxxx1011x0xxxxxxxxxx
                                                  sqdmull2.  */
                                               return 108;
                                             }
                                         }
-                                      else
-                                        {
-                                          /* 33222222222211111111110000000000
-                                             10987654321098765432109876543210
-                                             xxxxxxxxxx0x1111xxxxxxxx11110xxx
-                                             sqrdmlsh.  */
-                                          return 128;
-                                        }
                                     }
                                 }
-                            }
-                          else
-                            {
-                              if (((word >> 11) & 0x1) == 0)
+                              else
                                 {
-                                  if (((word >> 14) & 0x1) == 0)
+                                  if (((word >> 11) & 0x1) == 0)
                                     {
                                       if (((word >> 12) & 0x1) == 0)
                                         {
@@ -17236,17 +18600,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx100x01xxxxxxxx111100xx
+                                                 xx001111xxxxxxxx10x001xxxxxxxxxx
                                                  movi.  */
-                                              return 132;
+                                              return 133;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx100x01xxxxxxxx111101xx
+                                                 xx101111xxxxxxxx10x001xxxxxxxxxx
                                                  mvni.  */
-                                              return 140;
+                                              return 141;
                                             }
                                         }
                                       else
@@ -17255,189 +18619,255 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx101x01xxxxxxxx111100xx
+                                                 xx001111xxxxxxxx10x101xxxxxxxxxx
                                                  orr.  */
-                                              return 133;
+                                              return 134;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx101x01xxxxxxxx111101xx
+                                                 xx101111xxxxxxxx10x101xxxxxxxxxx
                                                  bic.  */
-                                              return 141;
+                                              return 142;
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 12) & 0x1) == 0)
                                         {
                                           if (((word >> 29) & 0x1) == 0)
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx10x011xxxxxxxx111100xx
-                                                 movi.  */
-                                              return 134;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0001111xxxxxxxx10x011xxxxxxxxxx
+                                                     rshrn.  */
+                                                  return 376;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1001111xxxxxxxx10x011xxxxxxxxxx
+                                                     rshrn2.  */
+                                                  return 377;
+                                                }
                                             }
                                           else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx10x011xxxxxxxx111101xx
-                                                 mvni.  */
-                                              return 142;
+                                            {
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0101111xxxxxxxx10x011xxxxxxxxxx
+                                                     sqrshrun.  */
+                                                  return 400;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1101111xxxxxxxx10x011xxxxxxxxxx
+                                                     sqrshrun2.  */
+                                                  return 401;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 12) & 0x1) == 0)
+                                          if (((word >> 29) & 0x1) == 0)
                                             {
-                                              if (((word >> 29) & 0x1) == 0)
+                                              if (((word >> 30) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx100111xxxxxxxx111100xx
-                                                     movi.  */
-                                                  return 135;
+                                                     x0001111xxxxxxxx10x111xxxxxxxxxx
+                                                     sqrshrn.  */
+                                                  return 380;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx100111xxxxxxxx111101xx
-                                                     movi.  */
-                                                  return 143;
+                                                     x1001111xxxxxxxx10x111xxxxxxxxxx
+                                                     sqrshrn2.  */
+                                                  return 381;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 29) & 0x1) == 0)
+                                              if (((word >> 30) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx101111xxxxxxxx111100xx
-                                                     fmov.  */
-                                                  return 136;
+                                                     x0101111xxxxxxxx10x111xxxxxxxxxx
+                                                     uqrshrn.  */
+                                                  return 404;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx101111xxxxxxxx111101xx
-                                                     fmov.  */
-                                                  return 145;
+                                                     x1101111xxxxxxxx10x111xxxxxxxxxx
+                                                     uqrshrn2.  */
+                                                  return 405;
                                                 }
                                             }
                                         }
                                     }
                                 }
-                              else
+                            }
+                          else
+                            {
+                              if (((word >> 13) & 0x1) == 0)
                                 {
-                                  if (((word >> 12) & 0x1) == 0)
+                                  if (((word >> 10) & 0x1) == 0)
                                     {
-                                      if (((word >> 29) & 0x1) == 0)
+                                      if (((word >> 12) & 0x1) == 0)
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 29) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx110xx1xxxxxxxx1111000x
-                                                 rshrn.  */
-                                              return 373;
+                                                 xx001111xxxxxxxx1100x0xxxxxxxxxx
+                                                 sqdmulh.  */
+                                              return 109;
                                             }
                                           else
                                             {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx110xx1xxxxxxxx1111001x
-                                                 rshrn2.  */
-                                              return 374;
+                                              if (((word >> 30) & 0x1) == 0)
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x0101111xxxxxxxx1100x0xxxxxxxxxx
+                                                     fmlsl2.  */
+                                                  return 2035;
+                                                }
+                                              else
+                                                {
+                                                  /* 33222222222211111111110000000000
+                                                     10987654321098765432109876543210
+                                                     x1101111xxxxxxxx1100x0xxxxxxxxxx
+                                                     fmlsl2.  */
+                                                  return 2039;
+                                                }
                                             }
                                         }
                                       else
                                         {
-                                          if (((word >> 30) & 0x1) == 0)
+                                          if (((word >> 29) & 0x1) == 0)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx110xx1xxxxxxxx1111010x
-                                                 sqrshrun.  */
-                                              return 397;
+                                                 xx001111xxxxxxxx1101x0xxxxxxxxxx
+                                                 sqrdmulh.  */
+                                              return 110;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx110xx1xxxxxxxx1111011x
-                                                 sqrshrun2.  */
-                                              return 398;
+                                                 xx101111xxxxxxxx1101x0xxxxxxxxxx
+                                                 sqrdmlah.  */
+                                              return 127;
                                             }
                                         }
                                     }
                                   else
                                     {
-                                      if (((word >> 13) & 0x1) == 0)
+                                      if (((word >> 29) & 0x1) == 0)
                                         {
-                                          if (((word >> 29) & 0x1) == 0)
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx001111xxxxxxxx110xx1xxxxxxxxxx
+                                             movi.  */
+                                          return 135;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx101111xxxxxxxx110xx1xxxxxxxxxx
+                                             mvni.  */
+                                          return 143;
+                                        }
+                                    }
+                                }
+                              else
+                                {
+                                  if (((word >> 12) & 0x1) == 0)
+                                    {
+                                      if (((word >> 29) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx001111xxxxxxxx1110xxxxxxxxxxxx
+                                             movi.  */
+                                          return 136;
+                                        }
+                                      else
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xx101111xxxxxxxx1110xxxxxxxxxxxx
+                                             movi.  */
+                                          return 144;
+                                        }
+                                    }
+                                  else
+                                    {
+                                      if (((word >> 10) & 0x1) == 0)
+                                        {
+                                          /* 33222222222211111111110000000000
+                                             10987654321098765432109876543210
+                                             xxx01111xxxxxxxx1111x0xxxxxxxxxx
+                                             sqrdmlsh.  */
+                                          return 128;
+                                        }
+                                      else
+                                        {
+                                          if (((word >> 11) & 0x1) == 0)
                                             {
-                                              if (((word >> 30) & 0x1) == 0)
+                                              if (((word >> 29) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1110x1xxxxxxxx1111000x
-                                                     sqrshrn.  */
-                                                  return 377;
+                                                     xx001111xxxxxxxx111101xxxxxxxxxx
+                                                     fmov.  */
+                                                  return 137;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1110x1xxxxxxxx1111001x
-                                                     sqrshrn2.  */
-                                                  return 378;
+                                                     xx101111xxxxxxxx111101xxxxxxxxxx
+                                                     fmov.  */
+                                                  return 146;
                                                 }
                                             }
                                           else
                                             {
-                                              if (((word >> 30) & 0x1) == 0)
+                                              if (((word >> 29) & 0x1) == 0)
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1110x1xxxxxxxx1111010x
-                                                     uqrshrn.  */
-                                                  return 401;
+                                                     xx001111xxxxxxxx111111xxxxxxxxxx
+                                                     fmov.  */
+                                                  return 138;
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx1110x1xxxxxxxx1111011x
-                                                     uqrshrn2.  */
-                                                  return 402;
+                                                     xx101111xxxxxxxx111111xxxxxxxxxx
+                                                     fcvtzu.  */
+                                                  return 412;
                                                 }
                                             }
                                         }
-                                      else
-                                        {
-                                          if (((word >> 29) & 0x1) == 0)
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx1111x1xxxxxxxx111100xx
-                                                 fmov.  */
-                                              return 137;
-                                            }
-                                          else
-                                            {
-                                              /* 33222222222211111111110000000000
-                                                 10987654321098765432109876543210
-                                                 xxxxxxxxxx1111x1xxxxxxxx111101xx
-                                                 fcvtzu.  */
-                                              return 409;
-                                            }
-                                        }
                                     }
                                 }
                             }
@@ -17452,17 +18882,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx1xxxxx0xx1111100x
+                                         x0011111xx0xxxxx1xxxxxxxxxxxxxxx
                                          fmsub.  */
-                                      return 807;
+                                      return 842;
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxxxxxxx1xxxxx1xx1111100x
+                                         x0011111xx1xxxxx1xxxxxxxxxxxxxxx
                                          fnmsub.  */
-                                      return 811;
+                                      return 846;
                                     }
                                 }
                               else
@@ -17473,9 +18903,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx0x0xx1xxxxxxxx1111101x
+                                             x1011111xxxxxxxx1xx0x0xxxxxxxxxx
                                              sqdmulh.  */
-                                          return 419;
+                                          return 422;
                                         }
                                       else
                                         {
@@ -17487,35 +18917,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx0x1001xxxxxxx01111101x
+                                                         x10111110xxxxxxx1001x0xxxxxxxxxx
                                                          fmul.  */
-                                                      return 426;
+                                                      return 429;
                                                     }
                                                   else
                                                     {
                                                       /* 33222222222211111111110000000000
                                                          10987654321098765432109876543210
-                                                         xxxxxxxxxx0x1001xxxxxxx11111101x
+                                                         x10111111xxxxxxx1001x0xxxxxxxxxx
                                                          fmul.  */
-                                                      return 425;
+                                                      return 428;
                                                     }
                                                 }
                                               else
                                                 {
                                                   /* 33222222222211111111110000000000
                                                      10987654321098765432109876543210
-                                                     xxxxxxxxxx0x1011xxxxxxxx1111101x
+                                                     x1011111xxxxxxxx1101x0xxxxxxxxxx
                                                      sqrdmulh.  */
-                                                  return 420;
+                                                  return 423;
                                                 }
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0x11x1xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx1x11x0xxxxxxxxxx
                                                  sqdmull.  */
-                                              return 418;
+                                              return 421;
                                             }
                                         }
                                     }
@@ -17527,17 +18957,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx100xx1xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx1xx001xxxxxxxxxx
                                                  scvtf.  */
-                                              return 589;
+                                              return 592;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx101xx1xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx1xx101xxxxxxxxxx
                                                  sqshrn.  */
-                                              return 587;
+                                              return 590;
                                             }
                                         }
                                       else
@@ -17546,17 +18976,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx11x0x1xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx1x0x11xxxxxxxxxx
                                                  sqrshrn.  */
-                                              return 588;
+                                              return 591;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx11x1x1xxxxxxxx1111101x
+                                                 x1011111xxxxxxxx1x1x11xxxxxxxxxx
                                                  fcvtzs.  */
-                                              return 591;
+                                              return 594;
                                             }
                                         }
                                     }
@@ -17574,35 +19004,35 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0xx001xxxxxxx0111111xx
+                                                 xx1111110xxxxxxx100xx0xxxxxxxxxx
                                                  fmulx.  */
-                                              return 428;
+                                              return 431;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx0xx001xxxxxxx1111111xx
+                                                 xx1111111xxxxxxx100xx0xxxxxxxxxx
                                                  fmulx.  */
-                                              return 427;
+                                              return 430;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx0xx011xxxxxxxx111111xx
+                                             xx111111xxxxxxxx110xx0xxxxxxxxxx
                                              sqrdmlah.  */
-                                          return 429;
+                                          return 432;
                                         }
                                     }
                                   else
                                     {
                                       /* 33222222222211111111110000000000
                                          10987654321098765432109876543210
-                                         xxxxxxxxxx0xx1x1xxxxxxxx111111xx
+                                         xx111111xxxxxxxx1x1xx0xxxxxxxxxx
                                          sqrdmlsh.  */
-                                      return 430;
+                                      return 433;
                                     }
                                 }
                               else
@@ -17615,26 +19045,26 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1000x1xxxxxxxx111111xx
+                                                 xx111111xxxxxxxx1x0001xxxxxxxxxx
                                                  sqshrun.  */
-                                              return 601;
+                                              return 604;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1001x1xxxxxxxx111111xx
+                                                 xx111111xxxxxxxx1x1001xxxxxxxxxx
                                                  ucvtf.  */
-                                              return 605;
+                                              return 608;
                                             }
                                         }
                                       else
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx101xx1xxxxxxxx111111xx
+                                             xx111111xxxxxxxx1xx101xxxxxxxxxx
                                              uqshrn.  */
-                                          return 603;
+                                          return 606;
                                         }
                                     }
                                   else
@@ -17643,9 +19073,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                         {
                                           /* 33222222222211111111110000000000
                                              10987654321098765432109876543210
-                                             xxxxxxxxxx110xx1xxxxxxxx111111xx
+                                             xx111111xxxxxxxx1xx011xxxxxxxxxx
                                              sqrshrun.  */
-                                          return 602;
+                                          return 605;
                                         }
                                       else
                                         {
@@ -17653,17 +19083,17 @@ aarch64_opcode_lookup_1 (uint32_t word)
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1110x1xxxxxxxx111111xx
+                                                 xx111111xxxxxxxx1x0111xxxxxxxxxx
                                                  uqrshrn.  */
-                                              return 604;
+                                              return 607;
                                             }
                                           else
                                             {
                                               /* 33222222222211111111110000000000
                                                  10987654321098765432109876543210
-                                                 xxxxxxxxxx1111x1xxxxxxxx111111xx
+                                                 xx111111xxxxxxxx1x1111xxxxxxxxxx
                                                  fcvtzu.  */
-                                              return 607;
+                                              return 610;
                                             }
                                         }
                                     }
@@ -17694,208 +19124,243 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
   int value;
   switch (key)
     {
-    case 901: value = 905; break;      /* stnp --> stp.  */
-    case 905: return NULL;             /* stp --> NULL.  */
-    case 899: value = 900; break;      /* stllrb --> stllrh.  */
-    case 900: return NULL;             /* stllrh --> NULL.  */
-    case 902: value = 906; break;      /* ldnp --> ldp.  */
-    case 906: return NULL;             /* ldp --> NULL.  */
-    case 1117: value = 1118; break;    /* msr --> hint.  */
-    case 1118: value = 1132; break;    /* hint --> clrex.  */
-    case 1132: value = 1133; break;    /* clrex --> dsb.  */
-    case 1133: value = 1134; break;    /* dsb --> dmb.  */
-    case 1134: value = 1135; break;    /* dmb --> isb.  */
-    case 1135: value = 1136; break;    /* isb --> sys.  */
-    case 1136: value = 1141; break;    /* sys --> msr.  */
-    case 1141: return NULL;            /* msr --> NULL.  */
-    case 1142: value = 1143; break;    /* sysl --> mrs.  */
-    case 1143: return NULL;            /* mrs --> NULL.  */
-    case 431: value = 432; break;      /* st4 --> st1.  */
-    case 432: value = 433; break;      /* st1 --> st2.  */
-    case 433: value = 434; break;      /* st2 --> st3.  */
-    case 434: return NULL;             /* st3 --> NULL.  */
-    case 439: value = 440; break;      /* st4 --> st1.  */
-    case 440: value = 441; break;      /* st1 --> st2.  */
-    case 441: value = 442; break;      /* st2 --> st3.  */
-    case 442: return NULL;             /* st3 --> NULL.  */
-    case 435: value = 436; break;      /* ld4 --> ld1.  */
-    case 436: value = 437; break;      /* ld1 --> ld2.  */
-    case 437: value = 438; break;      /* ld2 --> ld3.  */
-    case 438: return NULL;             /* ld3 --> NULL.  */
-    case 451: value = 453; break;      /* ld1 --> ld1r.  */
-    case 453: return NULL;             /* ld1r --> NULL.  */
-    case 455: value = 457; break;      /* ld2 --> ld2r.  */
-    case 457: return NULL;             /* ld2r --> NULL.  */
-    case 452: value = 454; break;      /* ld3 --> ld3r.  */
-    case 454: return NULL;             /* ld3r --> NULL.  */
-    case 456: value = 458; break;      /* ld4 --> ld4r.  */
-    case 458: return NULL;             /* ld4r --> NULL.  */
-    case 443: value = 444; break;      /* ld4 --> ld1.  */
-    case 444: value = 445; break;      /* ld1 --> ld2.  */
-    case 445: value = 446; break;      /* ld2 --> ld3.  */
-    case 446: return NULL;             /* ld3 --> NULL.  */
-    case 463: value = 465; break;      /* ld1 --> ld1r.  */
-    case 465: return NULL;             /* ld1r --> NULL.  */
-    case 464: value = 466; break;      /* ld3 --> ld3r.  */
-    case 466: return NULL;             /* ld3r --> NULL.  */
-    case 467: value = 469; break;      /* ld2 --> ld2r.  */
-    case 469: return NULL;             /* ld2r --> NULL.  */
-    case 468: value = 470; break;      /* ld4 --> ld4r.  */
-    case 470: return NULL;             /* ld4r --> NULL.  */
-    case 718: value = 719; break;      /* fcvtzs --> fcvtzs.  */
-    case 719: return NULL;             /* fcvtzs --> NULL.  */
-    case 714: value = 715; break;      /* scvtf --> scvtf.  */
-    case 715: return NULL;             /* scvtf --> NULL.  */
-    case 720: value = 721; break;      /* fcvtzu --> fcvtzu.  */
-    case 721: return NULL;             /* fcvtzu --> NULL.  */
-    case 716: value = 717; break;      /* ucvtf --> ucvtf.  */
-    case 717: return NULL;             /* ucvtf --> NULL.  */
-    case 722: value = 723; break;      /* fcvtns --> fcvtns.  */
-    case 723: return NULL;             /* fcvtns --> NULL.  */
-    case 742: value = 743; break;      /* fcvtms --> fcvtms.  */
-    case 743: return NULL;             /* fcvtms --> NULL.  */
-    case 738: value = 739; break;      /* fcvtps --> fcvtps.  */
-    case 739: return NULL;             /* fcvtps --> NULL.  */
-    case 746: value = 747; break;      /* fcvtzs --> fcvtzs.  */
-    case 747: return NULL;             /* fcvtzs --> NULL.  */
-    case 730: value = 731; break;      /* fcvtas --> fcvtas.  */
-    case 731: return NULL;             /* fcvtas --> NULL.  */
-    case 726: value = 727; break;      /* scvtf --> scvtf.  */
-    case 727: return NULL;             /* scvtf --> NULL.  */
-    case 734: value = 735; break;      /* fmov --> fmov.  */
-    case 735: return NULL;             /* fmov --> NULL.  */
-    case 724: value = 725; break;      /* fcvtnu --> fcvtnu.  */
-    case 725: return NULL;             /* fcvtnu --> NULL.  */
-    case 744: value = 745; break;      /* fcvtmu --> fcvtmu.  */
-    case 745: return NULL;             /* fcvtmu --> NULL.  */
-    case 740: value = 741; break;      /* fcvtpu --> fcvtpu.  */
-    case 741: return NULL;             /* fcvtpu --> NULL.  */
-    case 748: value = 749; break;      /* fcvtzu --> fcvtzu.  */
-    case 749: return NULL;             /* fcvtzu --> NULL.  */
-    case 732: value = 733; break;      /* fcvtau --> fcvtau.  */
-    case 733: return NULL;             /* fcvtau --> NULL.  */
-    case 728: value = 729; break;      /* ucvtf --> ucvtf.  */
-    case 729: return NULL;             /* ucvtf --> NULL.  */
-    case 736: value = 737; break;      /* fmov --> fmov.  */
-    case 737: return NULL;             /* fmov --> NULL.  */
-    case 764: value = 765; break;      /* fmov --> fmov.  */
-    case 765: return NULL;             /* fmov --> NULL.  */
-    case 773: value = 774; break;      /* frintn --> frintn.  */
-    case 774: return NULL;             /* frintn --> NULL.  */
-    case 768: value = 769; break;      /* fneg --> fneg.  */
-    case 769: return NULL;             /* fneg --> NULL.  */
-    case 777: value = 778; break;      /* frintm --> frintm.  */
-    case 778: return NULL;             /* frintm --> NULL.  */
-    case 766: value = 767; break;      /* fabs --> fabs.  */
-    case 767: return NULL;             /* fabs --> NULL.  */
-    case 775: value = 776; break;      /* frintp --> frintp.  */
-    case 776: return NULL;             /* frintp --> NULL.  */
-    case 770: value = 771; break;      /* fsqrt --> fsqrt.  */
-    case 771: return NULL;             /* fsqrt --> NULL.  */
-    case 779: value = 780; break;      /* frintz --> frintz.  */
-    case 780: return NULL;             /* frintz --> NULL.  */
-    case 781: value = 782; break;      /* frinta --> frinta.  */
-    case 782: return NULL;             /* frinta --> NULL.  */
-    case 783: value = 784; break;      /* frintx --> frintx.  */
-    case 784: return NULL;             /* frintx --> NULL.  */
-    case 785: value = 786; break;      /* frinti --> frinti.  */
-    case 786: return NULL;             /* frinti --> NULL.  */
-    case 756: value = 757; break;      /* fcmp --> fcmp.  */
-    case 757: return NULL;             /* fcmp --> NULL.  */
-    case 758: value = 759; break;      /* fcmpe --> fcmpe.  */
-    case 759: return NULL;             /* fcmpe --> NULL.  */
-    case 760: value = 761; break;      /* fcmp --> fcmp.  */
-    case 761: return NULL;             /* fcmp --> NULL.  */
-    case 762: value = 763; break;      /* fcmpe --> fcmpe.  */
-    case 763: return NULL;             /* fcmpe --> NULL.  */
-    case 813: value = 814; break;      /* fmov --> fmov.  */
-    case 814: return NULL;             /* fmov --> NULL.  */
-    case 787: value = 788; break;      /* fmul --> fmul.  */
-    case 788: return NULL;             /* fmul --> NULL.  */
-    case 803: value = 804; break;      /* fnmul --> fnmul.  */
-    case 804: return NULL;             /* fnmul --> NULL.  */
-    case 795: value = 796; break;      /* fmax --> fmax.  */
-    case 796: return NULL;             /* fmax --> NULL.  */
-    case 791: value = 792; break;      /* fadd --> fadd.  */
-    case 792: return NULL;             /* fadd --> NULL.  */
-    case 799: value = 800; break;      /* fmaxnm --> fmaxnm.  */
-    case 800: return NULL;             /* fmaxnm --> NULL.  */
-    case 789: value = 790; break;      /* fdiv --> fdiv.  */
-    case 790: return NULL;             /* fdiv --> NULL.  */
-    case 797: value = 798; break;      /* fmin --> fmin.  */
-    case 798: return NULL;             /* fmin --> NULL.  */
-    case 793: value = 794; break;      /* fsub --> fsub.  */
-    case 794: return NULL;             /* fsub --> NULL.  */
-    case 801: value = 802; break;      /* fminnm --> fminnm.  */
-    case 802: return NULL;             /* fminnm --> NULL.  */
-    case 752: value = 753; break;      /* fccmp --> fccmp.  */
-    case 753: return NULL;             /* fccmp --> NULL.  */
-    case 754: value = 755; break;      /* fccmpe --> fccmpe.  */
-    case 755: return NULL;             /* fccmpe --> NULL.  */
-    case 815: value = 816; break;      /* fcsel --> fcsel.  */
-    case 816: return NULL;             /* fcsel --> NULL.  */
-    case 130: value = 365; break;      /* movi --> sshr.  */
-    case 365: value = 367; break;      /* sshr --> srshr.  */
-    case 367: return NULL;             /* srshr --> NULL.  */
-    case 138: value = 387; break;      /* mvni --> ushr.  */
-    case 387: value = 389; break;      /* ushr --> urshr.  */
-    case 389: value = 391; break;      /* urshr --> sri.  */
-    case 391: value = 393; break;      /* sri --> sqshlu.  */
-    case 393: return NULL;             /* sqshlu --> NULL.  */
-    case 131: value = 366; break;      /* orr --> ssra.  */
-    case 366: value = 368; break;      /* ssra --> srsra.  */
-    case 368: value = 369; break;      /* srsra --> shl.  */
-    case 369: value = 370; break;      /* shl --> sqshl.  */
-    case 370: return NULL;             /* sqshl --> NULL.  */
-    case 139: value = 388; break;      /* bic --> usra.  */
-    case 388: value = 390; break;      /* usra --> ursra.  */
-    case 390: value = 392; break;      /* ursra --> sli.  */
-    case 392: value = 394; break;      /* sli --> uqshl.  */
-    case 394: return NULL;             /* uqshl --> NULL.  */
-    case 805: value = 806; break;      /* fmadd --> fmadd.  */
-    case 806: return NULL;             /* fmadd --> NULL.  */
-    case 809: value = 810; break;      /* fnmadd --> fnmadd.  */
-    case 810: return NULL;             /* fnmadd --> NULL.  */
-    case 132: value = 371; break;      /* movi --> shrn.  */
-    case 371: value = 372; break;      /* shrn --> shrn2.  */
-    case 372: value = 379; break;      /* shrn2 --> sshll.  */
-    case 379: value = 381; break;      /* sshll --> sshll2.  */
-    case 381: return NULL;             /* sshll2 --> NULL.  */
-    case 140: value = 395; break;      /* mvni --> sqshrun.  */
-    case 395: value = 396; break;      /* sqshrun --> sqshrun2.  */
-    case 396: value = 403; break;      /* sqshrun2 --> ushll.  */
-    case 403: value = 405; break;      /* ushll --> ushll2.  */
-    case 405: return NULL;             /* ushll2 --> NULL.  */
-    case 133: value = 375; break;      /* orr --> sqshrn.  */
-    case 375: value = 376; break;      /* sqshrn --> sqshrn2.  */
-    case 376: return NULL;             /* sqshrn2 --> NULL.  */
-    case 141: value = 399; break;      /* bic --> uqshrn.  */
-    case 399: value = 400; break;      /* uqshrn --> uqshrn2.  */
-    case 400: return NULL;             /* uqshrn2 --> NULL.  */
-    case 135: value = 383; break;      /* movi --> scvtf.  */
-    case 383: value = 384; break;      /* scvtf --> scvtf.  */
-    case 384: return NULL;             /* scvtf --> NULL.  */
-    case 143: value = 144; break;      /* movi --> movi.  */
-    case 144: value = 407; break;      /* movi --> ucvtf.  */
-    case 407: value = 408; break;      /* ucvtf --> ucvtf.  */
-    case 408: return NULL;             /* ucvtf --> NULL.  */
-    case 137: value = 385; break;      /* fmov --> fcvtzs.  */
-    case 385: value = 386; break;      /* fcvtzs --> fcvtzs.  */
-    case 386: return NULL;             /* fcvtzs --> NULL.  */
-    case 409: value = 410; break;      /* fcvtzu --> fcvtzu.  */
-    case 410: return NULL;             /* fcvtzu --> NULL.  */
-    case 807: value = 808; break;      /* fmsub --> fmsub.  */
-    case 808: return NULL;             /* fmsub --> NULL.  */
-    case 811: value = 812; break;      /* fnmsub --> fnmsub.  */
-    case 812: return NULL;             /* fnmsub --> NULL.  */
-    case 589: value = 590; break;      /* scvtf --> scvtf.  */
-    case 590: return NULL;             /* scvtf --> NULL.  */
-    case 591: value = 592; break;      /* fcvtzs --> fcvtzs.  */
-    case 592: return NULL;             /* fcvtzs --> NULL.  */
-    case 605: value = 606; break;      /* ucvtf --> ucvtf.  */
-    case 606: return NULL;             /* ucvtf --> NULL.  */
-    case 607: value = 608; break;      /* fcvtzu --> fcvtzu.  */
-    case 608: return NULL;             /* fcvtzu --> NULL.  */
+    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 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 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: value = 2006; break;     /* scvtf --> sdot.  */
+    case 2006: return NULL;            /* sdot --> NULL.  */
+    case 144: value = 145; break;      /* movi --> movi.  */
+    case 145: value = 410; break;      /* movi --> ucvtf.  */
+    case 410: value = 411; break;      /* ucvtf --> ucvtf.  */
+    case 411: value = 2005; break;     /* ucvtf --> udot.  */
+    case 2005: return NULL;            /* udot --> 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.  */
     default: return NULL;
     }
 
@@ -17920,121 +19385,121 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode)
     case 20: value = 21; break;        /* adds --> cmn.  */
     case 22: value = 23; break;        /* sub --> neg.  */
     case 24: value = 26; break;        /* subs --> negs.  */
-    case 149: value = 150; break;      /* umov --> mov.  */
-    case 151: value = 152; break;      /* ins --> mov.  */
-    case 153: value = 154; break;      /* ins --> mov.  */
-    case 235: value = 236; break;      /* not --> mvn.  */
-    case 310: value = 311; break;      /* orr --> mov.  */
-    case 379: value = 380; break;      /* sshll --> sxtl.  */
-    case 381: value = 382; break;      /* sshll2 --> sxtl2.  */
-    case 403: value = 404; break;      /* ushll --> uxtl.  */
-    case 405: value = 406; break;      /* ushll2 --> uxtl2.  */
-    case 526: value = 527; break;      /* dup --> mov.  */
-    case 609: value = 614; break;      /* sbfm --> sxtw.  */
-    case 616: value = 618; break;      /* bfm --> bfc.  */
-    case 620: value = 624; break;      /* ubfm --> uxth.  */
-    case 642: value = 644; break;      /* csinc --> cset.  */
-    case 645: value = 647; break;      /* csinv --> csetm.  */
-    case 648: value = 649; break;      /* csneg --> cneg.  */
-    case 667: value = 667; break;      /* rev --> rev.  */
-    case 674: value = 675; break;      /* lslv --> lsl.  */
-    case 676: value = 677; break;      /* lsrv --> lsr.  */
-    case 678: value = 679; break;      /* asrv --> asr.  */
-    case 680: value = 681; break;      /* rorv --> ror.  */
-    case 690: value = 691; break;      /* madd --> mul.  */
-    case 692: value = 693; break;      /* msub --> mneg.  */
-    case 694: value = 695; break;      /* smaddl --> smull.  */
-    case 696: value = 697; break;      /* smsubl --> smnegl.  */
-    case 699: value = 700; break;      /* umaddl --> umull.  */
-    case 701: value = 702; break;      /* umsubl --> umnegl.  */
-    case 712: value = 713; break;      /* extr --> ror.  */
-    case 919: value = 920; break;      /* and --> bic.  */
-    case 921: value = 922; break;      /* orr --> mov.  */
-    case 924: value = 925; break;      /* ands --> tst.  */
-    case 928: value = 930; break;      /* orr --> uxtw.  */
-    case 931: value = 932; break;      /* orn --> mvn.  */
-    case 935: value = 936; break;      /* ands --> tst.  */
-    case 966: value = 1062; break;     /* ldaddb --> staddb.  */
-    case 967: value = 1063; break;     /* ldaddh --> staddh.  */
-    case 968: value = 1064; break;     /* ldadd --> stadd.  */
-    case 970: value = 1065; break;     /* ldaddlb --> staddlb.  */
-    case 973: value = 1066; break;     /* ldaddlh --> staddlh.  */
-    case 976: value = 1067; break;     /* ldaddl --> staddl.  */
-    case 978: value = 1068; break;     /* ldclrb --> stclrb.  */
-    case 979: value = 1069; break;     /* ldclrh --> stclrh.  */
-    case 980: value = 1070; break;     /* ldclr --> stclr.  */
-    case 982: value = 1071; break;     /* ldclrlb --> stclrlb.  */
-    case 985: value = 1072; break;     /* ldclrlh --> stclrlh.  */
-    case 988: value = 1073; break;     /* ldclrl --> stclrl.  */
-    case 990: value = 1074; break;     /* ldeorb --> steorb.  */
-    case 991: value = 1075; break;     /* ldeorh --> steorh.  */
-    case 992: value = 1076; break;     /* ldeor --> steor.  */
-    case 994: value = 1077; break;     /* ldeorlb --> steorlb.  */
-    case 997: value = 1078; break;     /* ldeorlh --> steorlh.  */
-    case 1000: value = 1079; break;    /* ldeorl --> steorl.  */
-    case 1002: value = 1080; break;    /* ldsetb --> stsetb.  */
-    case 1003: value = 1081; break;    /* ldseth --> stseth.  */
-    case 1004: value = 1082; break;    /* ldset --> stset.  */
-    case 1006: value = 1083; break;    /* ldsetlb --> stsetlb.  */
-    case 1009: value = 1084; break;    /* ldsetlh --> stsetlh.  */
-    case 1012: value = 1085; break;    /* ldsetl --> stsetl.  */
-    case 1014: value = 1086; break;    /* ldsmaxb --> stsmaxb.  */
-    case 1015: value = 1087; break;    /* ldsmaxh --> stsmaxh.  */
-    case 1016: value = 1088; break;    /* ldsmax --> stsmax.  */
-    case 1018: value = 1089; break;    /* ldsmaxlb --> stsmaxlb.  */
-    case 1021: value = 1090; break;    /* ldsmaxlh --> stsmaxlh.  */
-    case 1024: value = 1091; break;    /* ldsmaxl --> stsmaxl.  */
-    case 1026: value = 1092; break;    /* ldsminb --> stsminb.  */
-    case 1027: value = 1093; break;    /* ldsminh --> stsminh.  */
-    case 1028: value = 1094; break;    /* ldsmin --> stsmin.  */
-    case 1030: value = 1095; break;    /* ldsminlb --> stsminlb.  */
-    case 1033: value = 1096; break;    /* ldsminlh --> stsminlh.  */
-    case 1036: value = 1097; break;    /* ldsminl --> stsminl.  */
-    case 1038: value = 1098; break;    /* ldumaxb --> stumaxb.  */
-    case 1039: value = 1099; break;    /* ldumaxh --> stumaxh.  */
-    case 1040: value = 1100; break;    /* ldumax --> stumax.  */
-    case 1042: value = 1101; break;    /* ldumaxlb --> stumaxlb.  */
-    case 1045: value = 1102; break;    /* ldumaxlh --> stumaxlh.  */
-    case 1048: value = 1103; break;    /* ldumaxl --> stumaxl.  */
-    case 1050: value = 1104; break;    /* lduminb --> stuminb.  */
-    case 1051: value = 1105; break;    /* lduminh --> stuminh.  */
-    case 1052: value = 1106; break;    /* ldumin --> stumin.  */
-    case 1054: value = 1107; break;    /* lduminlb --> stuminlb.  */
-    case 1057: value = 1108; break;    /* lduminlh --> stuminlh.  */
-    case 1060: value = 1109; break;    /* lduminl --> stuminl.  */
-    case 1110: value = 1111; break;    /* movn --> mov.  */
-    case 1112: value = 1113; break;    /* movz --> mov.  */
-    case 1118: value = 1151; break;    /* hint --> autibsp.  */
-    case 1136: value = 1140; break;    /* sys --> tlbi.  */
-    case 1199: value = 1894; break;    /* and --> bic.  */
-    case 1201: value = 1182; break;    /* and --> mov.  */
-    case 1202: value = 1186; break;    /* ands --> movs.  */
-    case 1237: value = 1895; break;    /* cmpge --> cmple.  */
-    case 1240: value = 1898; break;    /* cmpgt --> cmplt.  */
-    case 1242: value = 1896; break;    /* cmphi --> cmplo.  */
-    case 1245: value = 1897; break;    /* cmphs --> cmpls.  */
-    case 1267: value = 1179; break;    /* cpy --> mov.  */
-    case 1268: value = 1181; break;    /* cpy --> mov.  */
-    case 1269: value = 1905; break;    /* cpy --> fmov.  */
-    case 1281: value = 1174; break;    /* dup --> mov.  */
-    case 1282: value = 1176; break;    /* dup --> mov.  */
-    case 1283: value = 1904; break;    /* dup --> fmov.  */
-    case 1284: value = 1177; break;    /* dupm --> mov.  */
-    case 1286: value = 1899; break;    /* eor --> eon.  */
-    case 1288: value = 1187; break;    /* eor --> not.  */
-    case 1289: value = 1188; break;    /* eors --> nots.  */
-    case 1294: value = 1900; break;    /* facge --> facle.  */
-    case 1295: value = 1901; break;    /* facgt --> faclt.  */
-    case 1304: value = 1902; break;    /* fcmge --> fcmle.  */
-    case 1306: value = 1903; break;    /* fcmgt --> fcmlt.  */
-    case 1312: value = 1171; break;    /* fcpy --> fmov.  */
-    case 1329: value = 1170; break;    /* fdup --> fmov.  */
-    case 1627: value = 1172; break;    /* orr --> mov.  */
-    case 1628: value = 1906; break;    /* orr --> orn.  */
-    case 1630: value = 1175; break;    /* orr --> mov.  */
-    case 1631: value = 1185; break;    /* orrs --> movs.  */
-    case 1687: value = 1180; break;    /* sel --> mov.  */
-    case 1688: value = 1183; break;    /* sel --> mov.  */
+    case 150: value = 151; break;      /* umov --> mov.  */
+    case 152: value = 153; break;      /* ins --> 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.  */
     default: return NULL;
     }
 
@@ -18060,172 +19525,174 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode)
     case 23: value = 22; break;        /* neg --> sub.  */
     case 26: value = 25; break;        /* negs --> cmp.  */
     case 25: value = 24; break;        /* cmp --> subs.  */
-    case 150: value = 149; break;      /* mov --> umov.  */
-    case 152: value = 151; break;      /* mov --> ins.  */
-    case 154: value = 153; break;      /* mov --> ins.  */
-    case 236: value = 235; break;      /* mvn --> not.  */
-    case 311: value = 310; break;      /* mov --> orr.  */
-    case 380: value = 379; break;      /* sxtl --> sshll.  */
-    case 382: value = 381; break;      /* sxtl2 --> sshll2.  */
-    case 404: value = 403; break;      /* uxtl --> ushll.  */
-    case 406: value = 405; break;      /* uxtl2 --> ushll2.  */
-    case 527: value = 526; break;      /* mov --> dup.  */
-    case 614: value = 613; break;      /* sxtw --> sxth.  */
-    case 613: value = 612; break;      /* sxth --> sxtb.  */
-    case 612: value = 615; break;      /* sxtb --> asr.  */
-    case 615: value = 611; break;      /* asr --> sbfx.  */
-    case 611: value = 610; break;      /* sbfx --> sbfiz.  */
-    case 610: value = 609; break;      /* sbfiz --> sbfm.  */
-    case 618: value = 619; break;      /* bfc --> bfxil.  */
-    case 619: value = 617; break;      /* bfxil --> bfi.  */
-    case 617: value = 616; break;      /* bfi --> bfm.  */
-    case 624: value = 623; break;      /* uxth --> uxtb.  */
-    case 623: value = 626; break;      /* uxtb --> lsr.  */
-    case 626: value = 625; break;      /* lsr --> lsl.  */
-    case 625: value = 622; break;      /* lsl --> ubfx.  */
-    case 622: value = 621; break;      /* ubfx --> ubfiz.  */
-    case 621: value = 620; break;      /* ubfiz --> ubfm.  */
-    case 644: value = 643; break;      /* cset --> cinc.  */
-    case 643: value = 642; break;      /* cinc --> csinc.  */
-    case 647: value = 646; break;      /* csetm --> cinv.  */
-    case 646: value = 645; break;      /* cinv --> csinv.  */
-    case 649: value = 648; break;      /* cneg --> csneg.  */
-    case 667: value = 668; break;      /* rev --> rev64.  */
-    case 675: value = 674; break;      /* lsl --> lslv.  */
-    case 677: value = 676; break;      /* lsr --> lsrv.  */
-    case 679: value = 678; break;      /* asr --> asrv.  */
-    case 681: value = 680; break;      /* ror --> rorv.  */
-    case 691: value = 690; break;      /* mul --> madd.  */
-    case 693: value = 692; break;      /* mneg --> msub.  */
-    case 695: value = 694; break;      /* smull --> smaddl.  */
-    case 697: value = 696; break;      /* smnegl --> smsubl.  */
-    case 700: value = 699; break;      /* umull --> umaddl.  */
-    case 702: value = 701; break;      /* umnegl --> umsubl.  */
-    case 713: value = 712; break;      /* ror --> extr.  */
-    case 920: value = 919; break;      /* bic --> and.  */
-    case 922: value = 921; break;      /* mov --> orr.  */
-    case 925: value = 924; break;      /* tst --> ands.  */
-    case 930: value = 929; break;      /* uxtw --> mov.  */
-    case 929: value = 928; break;      /* mov --> orr.  */
-    case 932: value = 931; break;      /* mvn --> orn.  */
-    case 936: value = 935; break;      /* tst --> ands.  */
-    case 1062: value = 966; break;     /* staddb --> ldaddb.  */
-    case 1063: value = 967; break;     /* staddh --> ldaddh.  */
-    case 1064: value = 968; break;     /* stadd --> ldadd.  */
-    case 1065: value = 970; break;     /* staddlb --> ldaddlb.  */
-    case 1066: value = 973; break;     /* staddlh --> ldaddlh.  */
-    case 1067: value = 976; break;     /* staddl --> ldaddl.  */
-    case 1068: value = 978; break;     /* stclrb --> ldclrb.  */
-    case 1069: value = 979; break;     /* stclrh --> ldclrh.  */
-    case 1070: value = 980; break;     /* stclr --> ldclr.  */
-    case 1071: value = 982; break;     /* stclrlb --> ldclrlb.  */
-    case 1072: value = 985; break;     /* stclrlh --> ldclrlh.  */
-    case 1073: value = 988; break;     /* stclrl --> ldclrl.  */
-    case 1074: value = 990; break;     /* steorb --> ldeorb.  */
-    case 1075: value = 991; break;     /* steorh --> ldeorh.  */
-    case 1076: value = 992; break;     /* steor --> ldeor.  */
-    case 1077: value = 994; break;     /* steorlb --> ldeorlb.  */
-    case 1078: value = 997; break;     /* steorlh --> ldeorlh.  */
-    case 1079: value = 1000; break;    /* steorl --> ldeorl.  */
-    case 1080: value = 1002; break;    /* stsetb --> ldsetb.  */
-    case 1081: value = 1003; break;    /* stseth --> ldseth.  */
-    case 1082: value = 1004; break;    /* stset --> ldset.  */
-    case 1083: value = 1006; break;    /* stsetlb --> ldsetlb.  */
-    case 1084: value = 1009; break;    /* stsetlh --> ldsetlh.  */
-    case 1085: value = 1012; break;    /* stsetl --> ldsetl.  */
-    case 1086: value = 1014; break;    /* stsmaxb --> ldsmaxb.  */
-    case 1087: value = 1015; break;    /* stsmaxh --> ldsmaxh.  */
-    case 1088: value = 1016; break;    /* stsmax --> ldsmax.  */
-    case 1089: value = 1018; break;    /* stsmaxlb --> ldsmaxlb.  */
-    case 1090: value = 1021; break;    /* stsmaxlh --> ldsmaxlh.  */
-    case 1091: value = 1024; break;    /* stsmaxl --> ldsmaxl.  */
-    case 1092: value = 1026; break;    /* stsminb --> ldsminb.  */
-    case 1093: value = 1027; break;    /* stsminh --> ldsminh.  */
-    case 1094: value = 1028; break;    /* stsmin --> ldsmin.  */
-    case 1095: value = 1030; break;    /* stsminlb --> ldsminlb.  */
-    case 1096: value = 1033; break;    /* stsminlh --> ldsminlh.  */
-    case 1097: value = 1036; break;    /* stsminl --> ldsminl.  */
-    case 1098: value = 1038; break;    /* stumaxb --> ldumaxb.  */
-    case 1099: value = 1039; break;    /* stumaxh --> ldumaxh.  */
-    case 1100: value = 1040; break;    /* stumax --> ldumax.  */
-    case 1101: value = 1042; break;    /* stumaxlb --> ldumaxlb.  */
-    case 1102: value = 1045; break;    /* stumaxlh --> ldumaxlh.  */
-    case 1103: value = 1048; break;    /* stumaxl --> ldumaxl.  */
-    case 1104: value = 1050; break;    /* stuminb --> lduminb.  */
-    case 1105: value = 1051; break;    /* stuminh --> lduminh.  */
-    case 1106: value = 1052; break;    /* stumin --> ldumin.  */
-    case 1107: value = 1054; break;    /* stuminlb --> lduminlb.  */
-    case 1108: value = 1057; break;    /* stuminlh --> lduminlh.  */
-    case 1109: value = 1060; break;    /* stuminl --> lduminl.  */
-    case 1111: value = 1110; break;    /* mov --> movn.  */
-    case 1113: value = 1112; break;    /* mov --> movz.  */
-    case 1151: value = 1150; break;    /* autibsp --> autibz.  */
-    case 1150: value = 1149; break;    /* autibz --> autiasp.  */
-    case 1149: value = 1148; break;    /* autiasp --> autiaz.  */
-    case 1148: value = 1147; break;    /* autiaz --> pacibsp.  */
-    case 1147: value = 1146; break;    /* pacibsp --> pacibz.  */
-    case 1146: value = 1145; break;    /* pacibz --> paciasp.  */
-    case 1145: value = 1144; break;    /* paciasp --> paciaz.  */
-    case 1144: value = 1131; break;    /* paciaz --> psb.  */
-    case 1131: value = 1130; break;    /* psb --> esb.  */
-    case 1130: value = 1129; break;    /* esb --> autib1716.  */
-    case 1129: value = 1128; break;    /* autib1716 --> autia1716.  */
-    case 1128: value = 1127; break;    /* autia1716 --> pacib1716.  */
-    case 1127: value = 1126; break;    /* pacib1716 --> pacia1716.  */
-    case 1126: value = 1125; break;    /* pacia1716 --> xpaclri.  */
-    case 1125: value = 1124; break;    /* xpaclri --> sevl.  */
-    case 1124: value = 1123; break;    /* sevl --> sev.  */
-    case 1123: value = 1122; break;    /* sev --> wfi.  */
-    case 1122: value = 1121; break;    /* wfi --> wfe.  */
-    case 1121: value = 1120; break;    /* wfe --> yield.  */
-    case 1120: value = 1119; break;    /* yield --> nop.  */
-    case 1119: value = 1118; break;    /* nop --> hint.  */
-    case 1140: value = 1139; break;    /* tlbi --> ic.  */
-    case 1139: value = 1138; break;    /* ic --> dc.  */
-    case 1138: value = 1137; break;    /* dc --> at.  */
-    case 1137: value = 1136; break;    /* at --> sys.  */
-    case 1894: value = 1199; break;    /* bic --> and.  */
-    case 1182: value = 1201; break;    /* mov --> and.  */
-    case 1186: value = 1202; break;    /* movs --> ands.  */
-    case 1895: value = 1237; break;    /* cmple --> cmpge.  */
-    case 1898: value = 1240; break;    /* cmplt --> cmpgt.  */
-    case 1896: value = 1242; break;    /* cmplo --> cmphi.  */
-    case 1897: value = 1245; break;    /* cmpls --> cmphs.  */
-    case 1179: value = 1267; break;    /* mov --> cpy.  */
-    case 1181: value = 1268; break;    /* mov --> cpy.  */
-    case 1905: value = 1184; break;    /* fmov --> mov.  */
-    case 1184: value = 1269; break;    /* mov --> cpy.  */
-    case 1174: value = 1281; break;    /* mov --> dup.  */
-    case 1176: value = 1173; break;    /* mov --> mov.  */
-    case 1173: value = 1282; break;    /* mov --> dup.  */
-    case 1904: value = 1178; break;    /* fmov --> mov.  */
-    case 1178: value = 1283; break;    /* mov --> dup.  */
-    case 1177: value = 1284; break;    /* mov --> dupm.  */
-    case 1899: value = 1286; break;    /* eon --> eor.  */
-    case 1187: value = 1288; break;    /* not --> eor.  */
-    case 1188: value = 1289; break;    /* nots --> eors.  */
-    case 1900: value = 1294; break;    /* facle --> facge.  */
-    case 1901: value = 1295; break;    /* faclt --> facgt.  */
-    case 1902: value = 1304; break;    /* fcmle --> fcmge.  */
-    case 1903: value = 1306; break;    /* fcmlt --> fcmgt.  */
-    case 1171: value = 1312; break;    /* fmov --> fcpy.  */
-    case 1170: value = 1329; break;    /* fmov --> fdup.  */
-    case 1172: value = 1627; break;    /* mov --> orr.  */
-    case 1906: value = 1628; break;    /* orn --> orr.  */
-    case 1175: value = 1630; break;    /* mov --> orr.  */
-    case 1185: value = 1631; break;    /* movs --> orrs.  */
-    case 1180: value = 1687; break;    /* mov --> sel.  */
-    case 1183: value = 1688; break;    /* mov --> sel.  */
+    case 151: value = 150; break;      /* mov --> umov.  */
+    case 153: value = 152; break;      /* mov --> ins.  */
+    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.  */
     default: return NULL;
     }
 
   return aarch64_opcode_table + value;
 }
 
-int
+bfd_boolean
 aarch64_extract_operand (const aarch64_operand *self,
                           aarch64_opnd_info *info,
-                          aarch64_insn code, const aarch64_inst *inst)
+                          aarch64_insn code, const aarch64_inst *inst,
+                          aarch64_operand_error *errors)
 {
   /* Use the index as the key.  */
   int key = self - aarch64_operands;
@@ -18240,11 +19707,11 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 7:
     case 9:
     case 10:
-    case 14:
+    case 11:
     case 15:
     case 16:
     case 17:
-    case 19:
+    case 18:
     case 20:
     case 21:
     case 22:
@@ -18253,56 +19720,57 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 25:
     case 26:
     case 27:
-    case 35:
-    case 36:
-    case 139:
-    case 140:
-    case 141:
-    case 142:
-    case 143:
-    case 144:
-    case 145:
-    case 146:
-    case 147:
-    case 148:
+    case 28:
+    case 29:
+    case 152:
+    case 153:
+    case 154:
+    case 155:
+    case 156:
+    case 157:
+    case 158:
+    case 159:
+    case 160:
     case 161:
-    case 162:
-    case 163:
-    case 164:
-    case 165:
-    case 166:
-    case 167:
-    case 168:
-    case 169:
-    case 170:
-    case 173:
-      return aarch64_ext_regno (self, info, code, inst);
+    case 174:
+    case 175:
+    case 176:
+    case 177:
+    case 178:
+    case 179:
+    case 180:
+    case 181:
+    case 182:
+    case 186:
+    case 189:
+      return aarch64_ext_regno (self, info, code, inst, errors);
     case 8:
-      return aarch64_ext_regrt_sysins (self, info, code, inst);
-    case 11:
-      return aarch64_ext_regno_pair (self, info, code, inst);
+      return aarch64_ext_regrt_sysins (self, info, code, inst, errors);
     case 12:
-      return aarch64_ext_reg_extended (self, info, code, inst);
+      return aarch64_ext_regno_pair (self, info, code, inst, errors);
     case 13:
-      return aarch64_ext_reg_shifted (self, info, code, inst);
-    case 18:
-      return aarch64_ext_ft (self, info, code, inst);
-    case 28:
-    case 29:
+      return aarch64_ext_reg_extended (self, info, code, inst, errors);
+    case 14:
+      return aarch64_ext_reg_shifted (self, info, code, inst, errors);
+    case 19:
+      return aarch64_ext_ft (self, info, code, inst, errors);
     case 30:
-      return aarch64_ext_reglane (self, info, code, inst);
     case 31:
-      return aarch64_ext_reglist (self, info, code, inst);
     case 32:
-      return aarch64_ext_ldst_reglist (self, info, code, inst);
+    case 191:
+      return aarch64_ext_reglane (self, info, code, inst, errors);
     case 33:
-      return aarch64_ext_ldst_reglist_r (self, info, code, inst);
+      return aarch64_ext_reglist (self, info, code, inst, errors);
     case 34:
-      return aarch64_ext_ldst_elemlist (self, info, code, inst);
+      return aarch64_ext_ldst_reglist (self, info, code, inst, errors);
+    case 35:
+      return aarch64_ext_ldst_reglist_r (self, info, code, inst, errors);
+    case 36:
+      return aarch64_ext_ldst_elemlist (self, info, code, inst, errors);
     case 37:
-    case 47:
-    case 48:
-    case 49:
+    case 38:
+    case 39:
+    case 40:
     case 50:
     case 51:
     case 52:
@@ -18313,102 +19781,108 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 57:
     case 58:
     case 59:
-    case 67:
-    case 68:
-    case 69:
-    case 70:
-    case 71:
-    case 136:
-    case 138:
-    case 153:
-    case 154:
-    case 155:
-    case 156:
-    case 157:
-    case 158:
-    case 159:
-    case 160:
-      return aarch64_ext_imm (self, info, code, inst);
-    case 38:
-    case 39:
-      return aarch64_ext_advsimd_imm_shift (self, info, code, inst);
-    case 40:
-    case 41:
-    case 42:
-      return aarch64_ext_advsimd_imm_modified (self, info, code, inst);
-    case 43:
-      return aarch64_ext_shll_imm (self, info, code, inst);
-    case 46:
-    case 129:
-      return aarch64_ext_fpimm (self, info, code, inst);
     case 60:
-    case 134:
-      return aarch64_ext_limm (self, info, code, inst);
     case 61:
-      return aarch64_ext_aimm (self, info, code, inst);
     case 62:
-      return aarch64_ext_imm_half (self, info, code, inst);
     case 63:
-      return aarch64_ext_fbits (self, info, code, inst);
-    case 65:
-    case 66:
-      return aarch64_ext_cond (self, info, code, inst);
-    case 72:
-    case 78:
-      return aarch64_ext_addr_simple (self, info, code, inst);
-    case 73:
-      return aarch64_ext_addr_regoff (self, info, code, inst);
     case 74:
     case 75:
     case 76:
-      return aarch64_ext_addr_simm (self, info, code, inst);
     case 77:
-      return aarch64_ext_addr_uimm12 (self, info, code, inst);
+    case 78:
+    case 149:
+    case 151:
+    case 166:
+    case 167:
+    case 168:
+    case 169:
+    case 170:
+    case 171:
+    case 172:
+    case 173:
+      return aarch64_ext_imm (self, info, code, inst, errors);
+    case 41:
+    case 42:
+      return aarch64_ext_advsimd_imm_shift (self, info, code, inst, errors);
+    case 43:
+    case 44:
+    case 45:
+      return aarch64_ext_advsimd_imm_modified (self, info, code, inst, errors);
+    case 46:
+      return aarch64_ext_shll_imm (self, info, code, inst, errors);
+    case 49:
+    case 140:
+      return aarch64_ext_fpimm (self, info, code, inst, errors);
+    case 64:
+    case 147:
+      return aarch64_ext_limm (self, info, code, inst, errors);
+    case 65:
+      return aarch64_ext_aimm (self, info, code, inst, errors);
+    case 66:
+      return aarch64_ext_imm_half (self, info, code, inst, errors);
+    case 67:
+      return aarch64_ext_fbits (self, info, code, inst, errors);
+    case 69:
+    case 70:
+    case 145:
+      return aarch64_ext_imm_rotate2 (self, info, code, inst, errors);
+    case 71:
+    case 144:
+      return aarch64_ext_imm_rotate1 (self, info, code, inst, errors);
+    case 72:
+    case 73:
+      return aarch64_ext_cond (self, info, code, inst, errors);
     case 79:
-      return aarch64_ext_simd_addr_post (self, info, code, inst);
+    case 86:
+      return aarch64_ext_addr_simple (self, info, code, inst, errors);
     case 80:
-      return aarch64_ext_sysreg (self, info, code, inst);
+      return aarch64_ext_addr_regoff (self, info, code, inst, errors);
     case 81:
-      return aarch64_ext_pstatefield (self, info, code, inst);
     case 82:
     case 83:
+      return aarch64_ext_addr_simm (self, info, code, inst, errors);
     case 84:
+      return aarch64_ext_addr_simm10 (self, info, code, inst, errors);
     case 85:
-      return aarch64_ext_sysins_op (self, info, code, inst);
-    case 86:
+      return aarch64_ext_addr_uimm12 (self, info, code, inst, errors);
     case 87:
-      return aarch64_ext_barrier (self, info, code, inst);
+      return aarch64_ext_addr_offset (self, info, code, inst, errors);
     case 88:
-      return aarch64_ext_prfop (self, info, code, inst);
+      return aarch64_ext_simd_addr_post (self, info, code, inst, errors);
     case 89:
-      return aarch64_ext_hint (self, info, code, inst);
+      return aarch64_ext_sysreg (self, info, code, inst, errors);
     case 90:
+      return aarch64_ext_pstatefield (self, info, code, inst, errors);
     case 91:
     case 92:
     case 93:
-      return aarch64_ext_sve_addr_ri_s4xvl (self, info, code, inst);
     case 94:
-      return aarch64_ext_sve_addr_ri_s6xvl (self, info, code, inst);
+      return aarch64_ext_sysins_op (self, info, code, inst, errors);
     case 95:
-      return aarch64_ext_sve_addr_ri_s9xvl (self, info, code, inst);
     case 96:
+      return aarch64_ext_barrier (self, info, code, inst, errors);
     case 97:
+      return aarch64_ext_prfop (self, info, code, inst, errors);
     case 98:
+      return aarch64_ext_hint (self, info, code, inst, errors);
     case 99:
-      return aarch64_ext_sve_addr_ri_u6 (self, info, code, inst);
+      return aarch64_ext_sve_addr_ri_s4 (self, info, code, inst, errors);
     case 100:
     case 101:
     case 102:
     case 103:
+      return aarch64_ext_sve_addr_ri_s4xvl (self, info, code, inst, errors);
     case 104:
+      return aarch64_ext_sve_addr_ri_s6xvl (self, info, code, inst, errors);
     case 105:
+      return aarch64_ext_sve_addr_ri_s9xvl (self, info, code, inst, errors);
     case 106:
     case 107:
     case 108:
     case 109:
+      return aarch64_ext_sve_addr_ri_u6 (self, info, code, inst, errors);
     case 110:
     case 111:
-      return aarch64_ext_sve_addr_rr_lsl (self, info, code, inst);
     case 112:
     case 113:
     case 114:
@@ -18417,45 +19891,61 @@ aarch64_extract_operand (const aarch64_operand *self,
     case 117:
     case 118:
     case 119:
-      return aarch64_ext_sve_addr_rz_xtw (self, info, code, inst);
     case 120:
     case 121:
     case 122:
+      return aarch64_ext_sve_addr_rr_lsl (self, info, code, inst, errors);
     case 123:
-      return aarch64_ext_sve_addr_zi_u5 (self, info, code, inst);
     case 124:
-      return aarch64_ext_sve_addr_zz_lsl (self, info, code, inst);
     case 125:
-      return aarch64_ext_sve_addr_zz_sxtw (self, info, code, inst);
     case 126:
-      return aarch64_ext_sve_addr_zz_uxtw (self, info, code, inst);
     case 127:
-      return aarch64_ext_sve_aimm (self, info, code, inst);
     case 128:
-      return aarch64_ext_sve_asimm (self, info, code, inst);
+    case 129:
     case 130:
-      return aarch64_ext_sve_float_half_one (self, info, code, inst);
+      return aarch64_ext_sve_addr_rz_xtw (self, info, code, inst, errors);
     case 131:
-      return aarch64_ext_sve_float_half_two (self, info, code, inst);
     case 132:
-      return aarch64_ext_sve_float_zero_one (self, info, code, inst);
     case 133:
-      return aarch64_ext_inv_limm (self, info, code, inst);
+    case 134:
+      return aarch64_ext_sve_addr_zi_u5 (self, info, code, inst, errors);
     case 135:
-      return aarch64_ext_sve_limm_mov (self, info, code, inst);
+      return aarch64_ext_sve_addr_zz_lsl (self, info, code, inst, errors);
+    case 136:
+      return aarch64_ext_sve_addr_zz_sxtw (self, info, code, inst, errors);
     case 137:
-      return aarch64_ext_sve_scale (self, info, code, inst);
-    case 149:
+      return aarch64_ext_sve_addr_zz_uxtw (self, info, code, inst, errors);
+    case 138:
+      return aarch64_ext_sve_aimm (self, info, code, inst, errors);
+    case 139:
+      return aarch64_ext_sve_asimm (self, info, code, inst, errors);
+    case 141:
+      return aarch64_ext_sve_float_half_one (self, info, code, inst, errors);
+    case 142:
+      return aarch64_ext_sve_float_half_two (self, info, code, inst, errors);
+    case 143:
+      return aarch64_ext_sve_float_zero_one (self, info, code, inst, errors);
+    case 146:
+      return aarch64_ext_inv_limm (self, info, code, inst, errors);
+    case 148:
+      return aarch64_ext_sve_limm_mov (self, info, code, inst, errors);
     case 150:
-      return aarch64_ext_sve_shlimm (self, info, code, inst);
-    case 151:
-    case 152:
-      return aarch64_ext_sve_shrimm (self, info, code, inst);
-    case 171:
-      return aarch64_ext_sve_index (self, info, code, inst);
-    case 172:
-    case 174:
-      return aarch64_ext_sve_reglist (self, info, code, inst);
+      return aarch64_ext_sve_scale (self, info, code, inst, errors);
+    case 162:
+    case 163:
+      return aarch64_ext_sve_shlimm (self, info, code, inst, errors);
+    case 164:
+    case 165:
+      return aarch64_ext_sve_shrimm (self, info, code, inst, errors);
+    case 183:
+    case 184:
+    case 185:
+      return aarch64_ext_sve_quad_index (self, info, code, inst, errors);
+    case 187:
+      return aarch64_ext_sve_index (self, info, code, inst, errors);
+    case 188:
+    case 190:
+      return aarch64_ext_sve_reglist (self, info, code, inst, errors);
     default: assert (0); abort ();
     }
 }
This page took 0.56994 seconds and 4 git commands to generate.